近两年金融行业搞信创,需要软件国产化,恰好项目组也被要求做oracle到海量数据库的迁移。所以这里做了一个单节点的vastbase安装技术实践。
VastBase安装需要修改多项服务器基础配置,所以最好是能有root权限
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
针对centos7以上
$ firewall-cmd --state
$ systemctl stop firewalld.service
$ systemctl disable firewalld.service
$ getenforce
$ setenforce
[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
echo "RemoveIPC=no" >> /etc/systemd/logind.conf
$ echo "RemoveIPC=no" >> /usr/lib/systemd/system/systemd-logind.service
$ systemctl daemon-reload
$ systemctl stop systemd-logind
$ systemctl start systemd-logind
编辑/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缓存溢出,出现丢包、无法连接等现象。
将各数据库节点的时区设置为相同时区,可以将/usr/share/zoneinfo/目录下的时区文件拷贝为 /etc/localtime 文件
$ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
$ groupadd -g 1005 vastbase
$ useradd -g 1005 -u 1005 -m vastbase
$ passwd vastbase
$ 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 7月 8 10:25 data
drwxr-xr-x. 2 vastbase vastbase 32 7月 7 19:01 vastbase-install
$ 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
为记录数据库异常宕机信息,设定 core_pattern 路径为 vastbase 用户可写
的路径。
$ cat /proc/sys/kernel/core_pattern
$ echo "/data/core_pattern/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
$ yum install -y libicu libxslt tcl bzip2 perl
切换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 3月 30 12:44 Vastbase-G100-2.2_Build_5.100-rhel_7-x86_64.tar.gz
-rwxr-xr-x. 1 vastbase vastbase 3143349 3月 30 12:44 vastbase_installer
[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 并输入<回车>继续。我输入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'
===============================================================================
安装完成
$ 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 7月 8 09:10 Vastbase_license_20220401_20221001
[vastbase@localhost vastbase-installer]$ source ~/.bashrc
$ vb_ctl <start/stop/restart>
实例化数据库过程中会默认创建数据库超级用户 vastbase,执行命令登录数据库。
$ vsql -r -d vastbase
[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
这里注意,我修改了默认端口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
这里演示dbeaver的连接配置
这里需要连接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-G100-installer-2.2_Build_5.100-rhel_7-x86_64-20220330.tar.gz
Vastbase_license_20220401_20221001
Vastbase-G100-2.0_2021102010.jar