手把手搭建金仓数据库高可用集群:主备切换无忧实战指南

引言:​
在数据库运维中,高可用性是企业业务连续性的生命线。KingbaseES通过流复制与repmgr工具,可实现主备集群的快速搭建与无缝切换。本文将带你一步步完成集群部署,并通过实战验证主备切换,助你轻松构建稳定高效的数据库环境。


一、环境准备:夯实基础

1. 创建专用用户

所有节点执行以下命令,创建数据库管理用户并设置密码:

# 创建用户组及用户
groupadd -g 6000 kes86
useradd -G kes86 -g 6000 -u 6000 kes86 -m
passwd kes86  # 按提示设置密码(建议8位以上)
2. 配置SSH互信
  • 生成密钥并分发公钥:
    su - kes86
    ssh-keygen -t rsa  # 默认回车生成密钥
    ssh-copy-id kes86@node1
    ssh-copy-id kes86@node2
  • 验证免密登录:
    ssh kes86@node1 date
    ssh kes86@node2 date
3. 系统参数优化

编辑/etc/sysctl.conf,关键配置如下:

# 内存与网络优化
fs.file-max = 655360
net.ipv4.ip_local_port_range = 1024 65000
vm.swappiness = 0

# 应用配置后生效
sysctl -p
4. 资源限制调整

修改/etc/security/limits.conf

kes86 soft nofile 65536
kes86 hard nofile 65536
kes86 soft nproc 65536

二、集群部署:主备节点搭建

1. 主节点初始化
  • 解压安装包并初始化数据库:
    unzip db.zip -d /home/kes86
    initdb -U system -E utf8 -D /home/kes86/data
  • 关键配置kingbase.conf
    listen_addresses = '*'
    wal_level = replica
    max_wal_senders = 32
    synchronous_commit = remote_write
2. 备节点克隆
  • 执行克隆命令:
    repmgr -h node1 -U repmgr standby clone --upstream-node-id=1
    sys_ctl -D /home/kes86/data start
3. 注册集群节点
  • 主节点注册:
    repmgr primary register
  • 备节点注册:
    repmgr standby register

三、核心配置详解

1. 同步模式设置

主节点执行:

ALTER SYSTEM SET synchronous_standby_names = 'ANY 1(node2)';
SELECT pg_reload_conf();
2. repmgr关键参数

repmgr.conf配置示例:

node_id=1
node_name='node1'
conninfo='host=node1 user=repmgr dbname=repmgr port=54322'
use_scmd='off'  # 未使用SecureCMD时必设

四、Switchover实战:主备切换验证

1. 执行切换

在备节点执行:

repmgr standby switchover

输出关键日志:​

[NOTICE] node "node2" promoted to primary
[NOTICE] switchover completed successfully
2. 验证集群状态
repmgr cluster show

预期结果:​

ID Name Role Status
1 node1 standby running
2 node2 primary running

五、避坑指南

  1. 互信失败​:检查.ssh/authorized_keys权限是否为600。
  2. 同步延迟​:确保wal_keep_segments足够大,避免WAL被清理。
  3. 切换卡顿​:检查防火墙是否开放5432端口及repmgr通信端口。

结语

通过本文,你已掌握KingbaseES高可用集群的搭建与主备切换的核心技能。建议在生产环境中结合监控工具(如KMonitor)实时跟踪集群状态,并定期进行故障演练。遇到问题,欢迎在评论区留言交流!

你可能感兴趣的:(数据库,金仓数据库,电科金仓,KingbaseES,运维)