作者:Digital Observer(施嘉伟)
Oracle ACE Pro: Database
PostgreSQL ACE Partner
11年数据库行业经验,现主要从事数据库服务工作
拥有Oracle OCM、DB2 10.1 Fundamentals、MySQL 8.0 OCP、WebLogic 12c OCA、KCP、PCTP、PCSD、PGCM、OCI、PolarDB技术专家、达梦师资认证、数据安全咨询高级等认证
ITPUB认证专家、PolarDB开源社区技术顾问、HaloDB技术顾问、TiDB社区技术布道师、青学会MOP技术社区专家顾问、国内某高校企业实践指导教师
公众号:Digital Observer;CSDN:施嘉伟;ITPUB:sjw1933;墨天轮:Digital Observer;PGFans:施嘉伟。
前言
本指南旨在详细阐述如何利用人大金仓数据库(KingbaseES)自带的部署工具,快速、高效地搭建一个标准的一主一备高可用集群。文档将通过详尽的步骤说明和图示,引导用户完成从环境准备到集群部署、配置及基础运维的全过程,确保最终部署的集群具备稳定。
1. 安装前规划与检查
在开始部署前,必须进行详细的规划和依赖环境检查。
1.1 集群IP地址规划
主机作用 IP 地址
集群主节点 Master 192.168.225.128
集群备节点 Standby 192.168.225.129
DB 浮动 IP 192.168.225.200
网关 192.168.225.2
1.2 依赖环境检查
核心命令检查:确认服务器上已安装 cron、arping、ip 等核心命令 。可使用 whereis 命令检查 。
Bash
whereis cron
whereis arping
whereis ip
网关连通性:确保每个节点都能 ping 通网关地址 。可使用 route 命令查看网关信息 。
SSH 通信:确保节点之间可以通过 SSH 正常通信,且端口为 22 。同时,需要允许 root 用户登录以便于部署工具执行相关操作 。
# 检查 SSH 端口
cat /etc/ssh/sshd_config | grep Port
# 编辑 sshd_config 文件,允许 root 登录
vim /etc/ssh/sshd_config
---将 PermitRootLogin 修改为 yes
2. 部署准备工作
2.1 硬件环境检查
CPU:必须为 64 位 CPU。 使用 lscpu 命令查看 。
内存:至少需要 1GB 以上。 使用 free -g 命令查看 。
硬盘:至少需要 1GB 以上空闲空间。 使用 df -h 命令查看 。
2.2 SELinux 与防火墙检查
SELinux:必须设置为禁用状态。编辑 /etc/selinux/config 文件,确保 SELINUX=disabled 。
防火墙:必须关闭。执行以下命令关闭并禁用防火墙服务 。
service iptables stop
chkconfig iptables off
systemctl stop firewalld
2.3 操作系统时间检查
使用 date 命令检查并确保所有服务器时间正确且一致 。
2.4 创建数据库用户
数据库的安装和运行必须使用非 root 用户,推荐用户名为 kingbase 。
useradd -m -U -s /bin/bash kingbase -d /home/kingbase
passwd kingbase
2.5 安装客户端工具
集群部署依赖数据库部署工具,该工具包含在客户端安装包中。您可以在任一服务器节点或一台可访问集群网络的 Windows 终端上安装客户端 。安装时,在“选择安装集”界面选择“客户端安装” 。

3. 集群部署
本章节将通过金仓数据库部署工具,以一主一备的模式快速搭建集群 。
3.1 创建项目与集群
创建项目:在部署工具左侧导航栏中右键点击“集群管理”,选择“创建项目” 。项目名称只允许输入英文字母、数字和下划线 。

创建集群:右键点击新创建的项目,选择“创建集群” 。
集群名称:输入集群的名称 。
端口:服务器 SSH 通信端口,默认为 22 。
常规用户:用于操作数据库的系统用户,默认为 kingbase 。
Root 密码:数据库服务器的 root 用户密码 。

3.2 配置集群参数
基本设置:此页面配置数据库(DB)和高可用(HA)软件的核心参数 。
DB 配置:
选择数据库 zip 包:根据服务器芯片类型(如 Lin64、Mips64、Aarch64)选择对应的 db.zip 安装包 。
max_connections:数据库最大连接数,建议设置为 1000 。
listenerPort:数据库监听端口,默认为 54321 。
dbUser/dbPassword:数据库用户名和密码 。
replication mode:物理复制模式,建议使用 quorum 。
dbmode:数据库兼容模式,根据应用需求选择 oracle 或 pg 。
高可用集群管理软件配置:
trust_servers:信任网关地址,多个地址用英文逗号分隔 。
ping_path:ping 命令的绝对路径,可通过 which ping 获取 。

高级设置:此页面配置更详细的数据库和高可用参数 。
DB 配置:
server_encoding:数据库字符集,默认为 default,与操作系统保持一致 。
高可用集群管理软件配置:
virtual_ip:数据库浮动 IP 地址 。
virtual_ip_mark:浮动 IP 的子网掩码,需与服务器 IP 的子网掩码一致 。
reconnect_attempts / reconnect_interval:连接重试次数和间隔,超过阈值将触发切换机制,建议分别配置为 6 和 10 。
failover:故障切换模式,建议设置为 automatic (自动) 。
recovery:故障恢复模式,建议设置为 standby (自动恢复故障备库) 。
ip_path:ip 命令的绝对路径,可通过 which ip 获取 。

3.3 部署主节点 (Master)
新建主节点:在“节点管理”上右键,选择“新增节点” 。

输入节点信息:填写主节点的显示名称、IP 地址、VIP 网卡名称,并选择 License 文件 。

环境检查:点击“检查”按钮进行环境预检测 。如果存在不符合项,可使用“一键修改系统参数”和“关闭防火墙”按钮进行修复,然后重新检查 。

信息确认与部署:确认主节点的所有配置信息无误后 ,点击“确定”开始部署 。

部署完成:等待所有部署步骤执行完毕,提示“节点部署成功!”即表示主节点已成功安装 。



3.4 部署备节点 (Standby)
重复与主节点类似的操作来部署备节点。
新建备节点:在“节点管理”下的 node 上右键,选择“新增节点” 。

输入节点信息:填写备节点的显示名称、IP 地址等信息 。

环境检查:对备节点进行环境检查 。如有不符合项,可一键修复后重新检查 。


信息确认与部署:确认备节点的配置信息无误后 ,点击“确定”开始部署 。


部署完成:等待所有步骤完成,提示“节点部署成功!”即表示备节点已成功安装,并已加入集群 。

4. 安装后配置
集群部署完毕后,建议进行以下标准配置。
4.1 kingbase.conf 标准配置
为获得更优性能和便于管理,请修改所有节点 data 目录下的 kingbase.conf 文件,将以下参数追加到文件末尾。修改后需重启集群才能生效 。
文件路径示例: /home/kingbase/cluster/gsxcb/gsxcb/data/kingbase.conf
listen_addresses = '*'
port = 54321
max_connections = 1000
work_mem = 10MB
maintenance_work_mem = 1GB
max_locks_per_transaction = 1024
max_wal_size = 64GB
checkpoint_timeout = 20min
checkpoint_completion_target = 0.9
# shared_buffers 建议为物理内存的 25%,最大 64GB,需手动修改
shared_buffers = RAM*0.25GB
# effective_cache_size 建议为物理内存的 50%,需手动修改
effective_cache_size = RAM*0.5GB
logging_collector = on
log_destination = 'stderr'
log_directory = 'sys_log'
log_filename = 'kingbase-%d.log'
log_truncate_on_rotation = on
log_rotation_age = 1440
log_connections = on
log_disconnections = on
log_statement = 'ddl'
log_checkpoints = on
log_lock_waits = on
log_autovacuum_min_duration = 0
log_temp_files = 0
lc_messages = 'C'
log_min_duration_statement = 1000
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h'
4.2 迁移数据与归档目录
如果需要将数据(data)和归档(archive)目录迁移到独立的、空间更大的磁盘,请参考以下步骤,除集群启停外,其余步骤需在每个节点上执行 。
停止集群:在任一节点执行 sys_monitor.sh stop 命令 。
创建新目录:在目标磁盘上创建新目录,并授权给 kingbase 用户 。
mkdir /dbdata
chown -R kingbase.kingbase /dbdata
备份并移动目录:备份并移动原 data 和 archive 目录到新路径 。
# 切换到集群安装目录
cd /home/kingbase/cluster/gsxcb/gsxcb/kingbase
# 备份并移动 data 目录
cp -r data data_old
mv data/ /dbdata/
# 备份并移动 archive 目录
cp -r archive archive_old
mv archive/ /dbdata/
创建软链接:在原路径下创建指向新目录的软链接 。
# 切换到原 kingbase 目录
cd /home/kingbase/cluster/gsxcb/gsxcb/kingbase
# 创建 data 目录的软链接
ln -s /dbdata/data ./data
# 创建 archive 目录的软链接
ln -s /dbdata/archive ./archive
启动集群:在任一节点执行 sys_monitor.sh start 命令 。
5. 集群基本操作
5.1 集群启停
使用 kingbase 用户,在任一节点的 bin 目录下执行 sys_monitor.sh 脚本来启停整个集群 。
停止集群:
./sys_monitor.sh stop

启动集群:
./sys_monitor.sh start(任一节点执行,执行一次即可)

5.2 查看集群状态
5.2.1 节点角色状态
登录数据库后,可通过以下 SQL 查询节点角色:
select sys_is_in_recovery(); :返回 f 表示主节点 (false),返回 t 表示备节点 (true) 。

备节点查询结果:

在主节点上执行,可查看与备节点的数据同步状态 。
主节点查询结果:

5.2.2 集群整体状态
在任一节点的 bin 目录下执行 ./repmgr cluster show 命令,可查看集群中所有节点的角色、状态和连接信息 。

6. 数据库备份配置
6.1 逻辑备份
安装工具包:安装 kdbtools RPM 包以获取逻辑备份工具 。
rpm -ivh kdbtools-006-001.noarch.rpm
配置备份脚本:编辑 /opt/Kingbase/tools/logical_backup/ 路径下的 backup8.conf 文件,根据实际情况修改备份参数 。
vim /opt/Kingbase/tools/logical_backup/backup8.conf
kdb_home="/home/kingbase/KingbaseES/V8/Server"
kdbback_dest="/data/kingbase/dump/"
kdb_user="SYSTEM"
kdb_pass="your_password"
kdb_port="54321"
kdb_host="127.0.0.1" # 或浮动IP
kdb_list="DB1,DB2" # 需要备份的数据库列表,用逗号隔开
keep_time="7" # 备份保留天数
设置定时任务:使用 crontab 创建一个定时任务,以定期执行逻辑备份 。
编辑 crontab
crontab -e
添加以下行,设置每天凌晨2点执行备份
0 2 * * * sh /path/to/backup8.sh >> /path/to/logical_backup.log 2>&1 &
6.2 物理备份
物理备份是保障数据安全必不可少的一环 。
7. 读写分离配置
要实现读写分离,需要在应用服务器上配置 JDBC 驱动参数。
创建配置文件:在应用服务器上创建 jdbc.conf 文件,例如放在 /opt/AAS/jdbc.conf 。
编辑配置文件:在该文件中添加主备库的连接信息和读写分离策略 。
# 配置文件路径: /opt/AAS/jdbc.conf
# 主库信息
HOST=192.168.225.128
PORT=54321
DBNAME=EXOA
user=system
password=your_password
# 启用读写分离
USEDISPATCH=true
# 备库信息
SLAVE_ADD=192.168.225.129
SLAVE_PORT=54321
# 其他参数
loggerLevel=OFF
USECONNECT_POOL=false
socketTimeout=5
connectTimeout=5
配置 JDBC URL:在应用程序的数据库连接字符串中,通过 ConfigurePath 参数指定配置文件的路径 。 注意:URL 中的主机地址应配置为数据库的浮动 IP 。
URL: jdbc:kingbase8://192.168.225.200:54321/EXOA?ConfigurePath=/opt/AAS/jdbc.conf
Driver: com.kingbase8.Driver
总结
至此,您已成功完成了 KingbaseES V8R6 集群的全部署流程,包括了前期的环境规划、使用图形化工具的自动化部署、安装后的核心参数调优、备份策略配置以及读写分离的实现。当前,一个稳定、高效、具备高可用能力的数据集群已准备就绪,可以交付应用程序进行连接和使用。建议在正式上线前,根据业务实际负载进行充分的性能测试。





