VastBase技术实践

VastBase技术实践

近两年金融行业搞信创,需要软件国产化,恰好项目组也被要求做oracle到海量数据库的迁移。所以这里做了一个单节点的vastbase安装技术实践。

文章目录

  • VastBase技术实践
  • 1 环境准备
    • 1.1 CentOS7
    • 1.2 关闭防火墙
    • 1.3 SELINUX配置
    • 1.4 IPC参数设置
    • 1.5 内核参数调整
    • 1.6 时间配置
    • 1.7 安装用户规划
    • 1.8 修改资源配置
    • 1.9 Core_Pattern设置
    • 1.10 预装依赖
  • 2. 数据库安装
    • 2.1 上传安装包并解压
    • 2.2 执行安装脚本
    • 2.3 重新拉起安装脚本,按照交互操作修改设置
    • 2.4 变更license设置
    • 2.5 初始化运行环境
  • 3. 数据库启动
    • 3.1 启停数据库
    • 3.2 登陆数据库
    • 3.3 检查状态
    • 3.4 查看服务监听该端口
  • 4. 数据库连接工具配置
    • 4.1 新建一个PostgreSQL的连接
    • 4.2 编辑驱动配置
    • 4.3 连接信息
    • 4.4 测试连接
  • *相关资源


1 环境准备

VastBase安装需要修改多项服务器基础配置,所以最好是能有root权限

1.1 CentOS7

CentOS7安装过程省略

[vastbase@localhost ~]$ cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
[vastbase@localhost ~]$ cat  /proc/version
Linux version 3.10.0-1127.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Mar 31 23:36:51 UTC 2020

1.2 关闭防火墙

针对centos7以上

  1. 查看防火墙状态
$ firewall-cmd --state
  1. 停止firewall
$ systemctl stop firewalld.service
  1. 禁止firewall开机启动
$ systemctl disable firewalld.service

1.3 SELINUX配置

  1. 查看是否开启 SELINUX,如果是未开启则是 diabled,已开启则是 enforcing
$ getenforce
  1. 临时关闭 SELINUX
$ setenforce
  1. 通过修改配置文件永久关闭 SELINUX
    a) vim编辑配置文件 /etc/selinux/config
    b) 将 SELINUX=enforcing 修改为 SELINUX=disabled
    c) 重启系统 reboot
[root@vastbase1 ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled

1.4 IPC参数设置

  1. 修改 /etc/systemd/logind.conf 文件,修改 RemoveIPC=no
echo "RemoveIPC=no" >> /etc/systemd/logind.conf
  1. 添加 RemoveIPC=no 到/usr/lib/systemd/system/systemd-logind.service
$ echo "RemoveIPC=no" >> /usr/lib/systemd/system/systemd-logind.service
$ systemctl daemon-reload
$ systemctl stop systemd-logind
$ systemctl start systemd-logind

1.5 内核参数调整

编辑/etc/sysctl.conf,添加如下信息:

$ vim /etc/sysctl.conf
kernel.sem = 4096 2147483647 2147483646 512000
kernel.shmall = 419430
kernel.shmmax = 1200572800
net.core.netdev_max_backlog = 629145
net.core.rmem_default = 21299200
net.core.rmem_max = 21299200
net.core.somaxconn = 65535
net.core.wmem_default = 21299200
net.core.wmem_max = 21299200
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_max_tw_buckets = 10000
net.ipv4.tcp_mem = 362715       483620  725430
net.ipv4.tcp_retries1 = 5
net.ipv4.tcp_retries2 = 80
net.ipv4.tcp_rmem = 8192        250000  16777216
net.ipv4.tcp_syn_retries = 5
net.ipv4.tcp_tso_win_divisor = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_wmem = 8192        250000  16777216
net.ipv4.udp_mem = 725430       967240  1450860

内含参数解释说明[不必过分关注]:

kernel.sem = 4096 2147483647 2147483646 512000 #信号集容纳最大信号数量,所有信号的最大数量,调用单个信号集中最大信号数量,信号集的最大值
kernel.shmall = 1079609302220 #需计算(所有共享内存段相加大小限制,单位page,配小了,库无法启动。建议内存的80%,查看page 大小getconf PAGE_SIZE)
kernel.shmmax = 1079609302220 #需计算(最大单个共享内存段大小,单位bytes,需大于shared_buffers 值)
net.core.netdev_max_backlog = 65535  #内核从网卡收到数据包后,交由协议栈(如IP、TCP)处理之前的缓冲队列。
net.core.rmem_default = 21299200 #接收套接字(socket)缓冲区大小的默认值(以字节为单位)。
net.core.rmem_max = 21299200  #接收套接字缓冲区大小的最大值(以字节为单位)。
net.core.somaxconn = 65535   #用来限制监听(LISTEN)队列最大数据包的数量,超过这个数量就会导致链接超时或者触发重传机制。
net.core.wmem_default = 21299200  #发送套接字缓冲区大小的默认值(以字节为单位)。
net.core.wmem_max = 21299200     #发送套接字缓冲区大小的最大值(以字节为单位)。
net.ipv4.tcp_keepalive_intvl = 30 #探测消息未获得响应时,重发该消息的间隔时间(秒)。
net.ipv4.tcp_keepalive_time = 30 #这个参数表示当keepalive启用时,TCP发送keepalive消息的频度。
net.ipv4.tcp_max_syn_backlog = 65535  #表示那些尚未收到客户端确认信息的连接(SYN消息)队列的长度,加大队列长度为可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_tw_buckets = 10000 #表示系统同时保持TIME_WAIT套接字的最大数量。
net.ipv4.tcp_mem = 362715       483620  725430 #确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB)
net.ipv4.tcp_retries1 = 5  #一个TCP连接请求,重传的N次不成功后放弃请求
net.ipv4.tcp_retries2 = 80 #在已经建立通讯状态下的一个TCP数据包,重传的N次不成功后放弃请求。 
net.ipv4.tcp_rmem = 8192        250000  16777216  #tcp协议定义的每个socket链路接收窗口大小,单位字节,有三个值:min、default、max。
net.ipv4.tcp_syn_retries = 5 #控制内核向某个输入的SYN/ACK段重新发送相应的次数
net.ipv4.tcp_tso_win_divisor = 30 #单个TSO段可消耗拥塞窗口的比例
net.ipv4.tcp_tw_reuse = 1    #是否允许将处于TIME-WAIT状态的socket(TIME-WAIT的端口)用于新的TCP连接
net.ipv4.tcp_wmem = 8192        250000  16777216  #tcp协议定义的每个socket链路发送窗口大小,单位字节,有三个值:min、default、max。
net.ipv4.udp_mem = 725430       967240  1450860   #设置UDP缓存,避免UDP缓存溢出,出现丢包、无法连接等现象。

1.6 时间配置

将各数据库节点的时区设置为相同时区,可以将/usr/share/zoneinfo/目录下的时区文件拷贝为 /etc/localtime 文件

$ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

1.7 安装用户规划

  1. 创建用户组和用户:
$ groupadd -g 1005 vastbase
$ useradd -g 1005 -u 1005 -m vastbase
$ passwd vastbase
  1. 创建安装目录:
$ mkdir -p /home/vastbase/vastbase-install  #软件安装路径
$ mkdir -p / home /vastbase/data      #数据库目录
$ chown -R vastbase:vastbase /home/vastbase  
$ chmod 700 /home/vastbase 
[root@localhost home]# ls -l /home/vastbase/
total 0
drwxr-xr-x. 2 vastbase vastbase 4096 78 10:25 data
drwxr-xr-x. 2 vastbase vastbase   32 77 19:01 vastbase-install

1.8 修改资源配置

$ vim /etc/security/limits.conf 
vastbase soft nproc unlimited
vastbase hard nproc unlimited
vastbase soft nofile 102400
vastbase hard nofile 102400
vastbase soft stack unlimited
vastbase hard stack unlimited
vastbase soft core unlimited
vastbase hard core unlimited
vastbase soft memlock unlimited
vastbase hard memlock unlimited

1.9 Core_Pattern设置

为记录数据库异常宕机信息,设定 core_pattern 路径为 vastbase 用户可写
的路径。

$ cat /proc/sys/kernel/core_pattern
$ echo "/data/core_pattern/core-%e-%p-%t" > /proc/sys/kernel/core_pattern

1.10 预装依赖

$ yum install -y libicu libxslt tcl bzip2 perl

2. 数据库安装

2.1 上传安装包并解压

切换vastbase用户,将安装包上传至/home/vastbase/vastbase-install/vastbase-installer并解压

$ tar -zxvf Vastbase-G100-2.2_Build_5.100-rhel_7-x86_64.tar.gz  -C /home/vastbase/vastbase-install/vastbase-install/
[vastbase@localhost vastbase-installer]$ ll
总用量 125340
-rw-r--r--. 1 vastbase vastbase 125176728 330 12:44 Vastbase-G100-2.2_Build_5.100-rhel_7-x86_64.tar.gz
-rwxr-xr-x. 1 vastbase vastbase   3143349 330 12:44 vastbase_installer

2.2 执行安装脚本

[vastbase@localhost vastbase-installer]$./vastbase_installer

*.初次安装失败,经与海量数据库公司实施人员沟通是环境配置有问题,这里在配置文件/home/vastbase/data/postgresql.conf中统一追加配置。这里直接在配置文件末尾追加即可,配置变量重复时,读取靠后的

maintenance_work_mem=512MB  # 64MB~20GB
shared_buffers=4GB   # 25% OS_MEM
cstore_buffers=16MB
effective_cache_size=10GB  # 75% OS_MEM
max_process_memory=10GB    # 75% OS_MEM
archive_mode=on
archive_dest='/data/archive_wals'
vacuum_cost_limit=10000
autovacuum=on
autovacuum_mode=mix
autovacuum_max_workers=5
autovacuum_naptime=20s
autovacuum_vacuum_cost_delay=0
autovacuum_vacuum_scale_factor = 0.02
autovacuum_analyze_scale_factor = 0.1
track_sql_count=on
session_timeout=0
enable_cbm_tracking=on
enable_thread_pool = off
password_encryption_type=0
password_force_alter=off
password_effect_time=36500
wal_level=hot_standby
hot_standby=on
max_wal_senders=10
vastbase_login_info=false
log_statement='ddl'
log_duration = off
log_line_prefix = '%m %r %d %u [%p]'
shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.max = 10000
pg_stat_statements.track = all
track_activity_query_size=4096

2.3 重新拉起安装脚本,按照交互操作修改设置

有两种模式:典型安装、自定义安装。
典型安装为安装过程的参数按默认值设置,如需自定义安装输入 2 并输入<回车>继续。我输入2,自定义安装

输入数据库超级用户(vastbase)密码: 
输入密码,至少要8位,我设置为[ZAQ!xsw2]

数据库加密密钥设置
输入1,使用超级用户密码

Vastbase软件安装目录:
默认位置: /home/vastbase/local/vastbase
我修改为:/home/vastbase/vastbase

数据库目录
默认位置: /home/vastbase/data/vastbase
我修改为:/home/vastbase/vastbase

设置数据库软件安装目录,默认为 /home/vastbase/local/vastbase 
我设置为:/home/vastbase/vastbase


设置数据库实例化路径,默认未 /home/vastbase/data/vastbase
我设置为:/home/vastbase/data

监听端口,默认5432
我设置为:5430

配置最大连接数:默认500
我使用默认值,直接回车

配置共享内存:默认为(内存/4)MB,输入共享内存大小,单位MB,或者输入<ENTER>选择默认值(1955):
默认值,回车

最后确认安装概要信息:
安装概要
---------------
Vastbase软件安装目录:
    /home/vastbase/vastbase

数据库目录:
    /home/vastbase/data

数据库超级用户:
    vastbase

数据库初始化参数:
   listen_addresses='*'
   port=5430
   max_connections=500
   shared_buffers=3971MB
   work_mem=4MB

确认OK,回车继续安装。安装过程包括安装数据库、实例化数据库、配置数据库参数和配置用户环境变量。输出信息如下:

正在安装,请稍后...
初始化数据库成功, 数据目录: /home/vastbase/data
加密密钥文件生成成功
成功更新配置文件: /home/vastbase/data/postgresql.conf
正在写入配置文件
正在写入cluster_config.xml文件
正在写入环境变量
成功更新配置文件: '/home/vastbase/.bashrc'
===============================================================================
安装完成

2.4 变更license设置

$ vi /home/vastbase/data/postgresql.conf
末尾追加: license_path='/home/vastbase/vastbase/Vastbase_license_20220401_20221001'

将license文件上传至/home/vastbase/vastbase并改名为Vastbase_license_20220401_20221001

[vastbase@localhost vastbase-installer]$ ll /home/vastbase/vastbase/
-rw-rw-r--. 1 vastbase vastbase  260 78 09:10 Vastbase_license_20220401_20221001

2.5 初始化运行环境

[vastbase@localhost vastbase-installer]$ source ~/.bashrc

3. 数据库启动

3.1 启停数据库

$ vb_ctl <start/stop/restart>

3.2 登陆数据库

实例化数据库过程中会默认创建数据库超级用户 vastbase,执行命令登录数据库。

$ vsql -r -d vastbase

3.3 检查状态

[vastbase@localhost vastbase-installer]$ vb_ctl query
[2022-07-22 20:03:43.352][12612][][vb_ctl]: vb_ctl query, 数据目录是 /home/vastbase/data 
 HA state:           
	local_role                     : Normal
	static_connections             : 0
	db_state                       : Normal
	detail_information             : Normal

 Senders info:       
No information 
 Receiver info:      
No information 

3.4 查看服务监听该端口

这里注意,我修改了默认端口5432为5430

[vastbase@localhost vastbase-installer]$ netstat -an |grep 5430
tcp        0      0 0.0.0.0:5430            0.0.0.0:*               LISTEN     
tcp        0      0 xxx.xxx.xxx.xxx:5430        xxx.xxx.xxx.xxx:40016      ESTABLISHED
tcp6       0      0 :::5430                 :::*                    LISTEN     
unix  2      [ ACC ]     STREAM     LISTENING     325657   /tmp/.s.PGSQL.5430

4. 数据库连接工具配置

这里演示dbeaver的连接配置

4.1 新建一个PostgreSQL的连接

VastBase技术实践_第1张图片

4.2 编辑驱动配置

这里需要连接Vastbase的驱动jar包Vastbase-G100-2.0_2021102010.jar
Jabc连接信息规范如下:

驱动名称:vastbase
类名:org.postgresql.Driver
Url模板:jdbc:postgresql://{host}[:{port}]/[{database}]
默认端口:5432
Default Database:vastbase
Default user:vbadmin (可自定义调整)

VastBase技术实践_第2张图片

4.3 连接信息

VastBase技术实践_第3张图片

4.4 测试连接

VastBase技术实践_第4张图片

*相关资源

详见附件

Vastbase-G100-installer-2.2_Build_5.100-rhel_7-x86_64-20220330.tar.gz
Vastbase_license_20220401_20221001
Vastbase-G100-2.0_2021102010.jar

你可能感兴趣的:(DataBase,database,sql,数据库)