首页 > 数据库 > 国内数据库 > 金仓普通集群升级并扩容成同城双中心
集群升级前,请检查以下的约束条件,避免集群升级失败:
|
参数说明 |
参数值 |
|
主节点IP |
192.168.40.107 |
|
备节点IP |
192.168.40.160 |
|
备节点IP |
192.168.40.161 |
|
软件包路径(soft_dir) |
/home/kingbase/software |
|
集群安装路径(install_dir) |
/home/kingbase/cluster/install |
|
二进制文件路径 |
/home/kingbase/cluster/install/kingbase/bin |
|
数据目录 |
/home/kingbase/cluster/install/kingbase/data |
|
端口 |
25432 |
|
数据库版本 |
V008R030C011PSI008 |
|
数据库超级用户 |
system (提前向客户获取密码) |
|
操作系统超级用户 |
root |
|
操作系统集群用户 |
kingbase |
|
VIP |
192.168.40.180 |
|
软件包路径(soft_dir) |
/home/kingbase/software |
|
同城双中心安装目录 |
/home/kingbase/cluster |
|
读写分离安装目录 |
/home/kingbase/cluster/install |
|
scmd安装目录 |
/home/kingbase/cluster/install/kingbase/bin |
|
数据目录 |
/home/kingbase/cluster/install/kingbase/data |
|
系统超级用户 |
root |
|
集群安装用户 |
kingbase |
|
生产中心节点 |
主节点:192.168.40.107 备节点:192.168.40.160、192.168.40.161 VIP: 192.168.40.180 |
|
灾备中心节点 (新下发服务器) |
伪主节点: 172.168.15.110 、备节点: 172.168.15.200 、 172.168.15.201 VIP: 172.168.15.180(按客户需求,若不要求可以不配置) |
|
同城双中心软件包版本 |
V008R030C011PSI011 |
注意:每个中心服务器数量必须>=3,如果中心内只存在2个节点,挂掉一个,另一个节点也会挂掉,如果客户不能提供足够数量的服务器,将风险提前和客户说明。
检查集群状态,保证升级前集群状态正常;任意一运行正常的节点操作;
|
repmgr cluster show all |

重点检查:
Role、Status、Upstream、Sync、LSN_Lag。Status 为 running 表示正常;failed、? unreachable、running as primary/standby 等均需先处理。
|
repmgr service status |

重 点检查:repmgrd 是否 running,Paused 是否 no。若 Paused 为 yes,可按实际情况使用 repmgr service unpause 恢复。
如果KES是KFS链路的源端, 存在逻辑复制槽的情况下源端数据库停不掉 ,需要先停止KFS链路再启停节点。验证后发现不停止KFS服务停库也不影响。
select * from sys_replication_slots;
确认备节点复制延迟为0,延迟应小于1MB。
如果有延迟先解决延迟
select usesysid, usename, sys_wal_lsn_diff(sys_current_wal_flush_lsn(), replay_lsn) as lsn_lag from sys_stat_replication;
可以提前写到一个脚本里,提高操作效率。
ksql "host=192.168.40.107 user=system dbname=test port=25432 password=kingbase" -c "checkpoint;"; ksql "host=192.168.40.160 user=system dbname=test port=25432 password=kingbase" -c "checkpoint;"; ksql "host=192.168.40.161 user=system dbname=test port=25432 password=kingbase" -c "checkpoint;";
任意一运行正常的节点操作;
sys_monitor.sh stop
如果没配置,需要手动配置
若启用sys_securecmdd服务,需关闭sys_securecmdd (所有节点切换到root用户下操作)
--切换root用 su - root --定位sys_securecmdd服务运行目录 ps -ef | grep securecmd --停止并卸载sys_securecmdd服务 /home/kingbase/cluster/install/kingbase/bin/sys_HAscmdd.sh stop /home/kingbase/cluster/install/kingbase/bin/sys_HAscmdd.sh uninstall
license.dat文件位置与kingbase目录同级;若不同级,提前拷贝至kingbase目录的同级目录下;
必须操作,不然升级升级为生产中心过程中会报错中止升级操作。
双中心版本是独立的,和普通集群版本不通用,可联系商务获取,本文使用的双中心版本是:kingbase-server-V008R030C011PSI011-linux-x86_64.tar,升级脚本:cluster_upgrade.sh
cd /home/kingbase/software chown kingbase:kingbase cluster_upgrade.sh chown kingbase:kingbase kingbase-server-V008R030C011PSI011-linux-x86_64.tar chmod 755 cluster_upgrade.sh
需要开通25432、10024、8890、5407、5403、22,如果修改对应端口,则需要根据实际情况进行调整。
systemctl stop firewalld systemctl disable firewalld systemctl status firewalld
cp /etc/selinux/config /etc/selinux/config.bak`date +%Y%m%d` sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 getenforce cat /etc/selinux/config |grep SELINUX
要求关闭,操作系统没有 /etc/systemd/logind.conf 文件则不需修改。如果RemoveIPC参数被注释,则取消注释并设置成no(防止默认为yes)。
在安装KingbaseES时,安装用户对于安装路径需有“读”、“写”、“执行”的权限。在Linux系统中,需要以非root用户执行安装程序,且该用户要有标准的home目录。
因此,建议在正式安装前,新建kingbase用户作为KingbaseES专用的系统用户,运行如下命令创建kingbase用户:
--检查kingbase用户是否存在,存在则执行下条命令删除,该操作要慎重 cat /etc/passwd | grep kingbase userdel -rf kingbase --创建同名用户组和用户kingbase groupadd -g 1010 kingbase useradd -m -d /home/kingbase -g kingbase -u 1010 kingbase --设置用户kingbase密码 echo 'kingbase' | passwd --stdin kingbase
注意
该命令会同时创建同名用户组kingbase以及用户根目录/home/kingbase。
su - kingbase mkdir -p /home/kingbase/cluster/install/ # 创建软件包安装路径 mkdir -p /home/kingbase/software # 创建软件包上传路径
不要提前创建kingbase子目录,不然会提示目录已存在的报错

su - kingbase cp /home/kingbase/.bashrc /home/kingbase/.bashrc_bak_`date +%F` cat << EOF >> /home/kingbase/.bashrc export PATH=$PATH:/home/kingbase/cluster/install/kingbase/bin export KINGBASE_HOME=/home/kingbase/cluster/install/kingbase export LD_LIBRARY_PATH=$KINGBASE_HOME/lib:$PATH export KINGBASE_DATA=/home/kingbase/cluster/install/data export KINGBASE_USER=system export KINGBASE_PORT=25432 export KINGBASE_DATABASE=test EOF source /home/kingbase/.bashrc
双中心版本是独立的,和普通集群版本不通用,可联系商务获取,本文使用的双中心版本是:kingbase-server-V008R030C011PSI011-linux-x86_64.tar,升级脚本:cluster_upgrade.sh
cd /home/kingbase/software chown kingbase:kingbase cluster_upgrade.sh chown kingbase:kingbase kingbase-server-V008R030C011PSI011-linux-x86_64.tar chmod 755 cluster_upgrade.sh
确保生产中心、灾备中心所有节点之间网络互通,网关地址互通。
ssh root@ip ssh kingbase@ip
无需输入密码即已配置ssh互信。如果未配置,按以下步骤手动配置;
生产中心的主节点上操作;
配置文件install.conf文件中的[参数/参数值]与下面列举的[参数/参数值]值保持一致。
cd /home/kingbase/cluster/install/kingbase/bin vi install.conf all_ip=(192.168.40.107 192.168.40.160 192.168.40.161 172.168.15.110 172.168.15.200 172.168.15.201) install_with_root=1 deploy_by_sshd=1
使用 root 用户登录现有集群 主节点 执行
cd /home/kingbase/cluster/install/kingbase/bin sh trust_cluster.sh
ssh root@ip ssh kingbase@ip
无需输入密码即ssh互信配置成功。
su - kingbase cd /home/kingbase/software/ vi cluster_upgrade.sh # 参数配置如下: production_ips=(192.168.40.107 192.168.40.160 192.168.40.161) # 生产中心节点,第一个IP必须是主库 disaster_ips=() # 灾备中心节点 upgrade_mode="2" # 2表示将production_ips中的节点升级为生产中心 # 升级软件包路径 ZIP_FILE="/home/kingbase/software/kingbase-server-V008R030C011PSI011-linux-x86_64.tar" KINGBASE_BIN="/home/kingbase/cluster/install/kingbase/bin" # 原集群的bin路径 enable_scmd="on" # 是否在升级后的集群中使用sys_securecmdd服务
提前获取system用户密码,执行脚本过程中要求输入system用户密码
su - kingbase cd /home/kingbase/software/ sh cluster_upgrade.sh

集群升级结束后,在生产中心的任意节点执行以下命令查看集群状态是否正常,
repmgr cluster show repmgr service status
说明:集群状态满足以下条件表明集群状态和服务正常


集群升级结束后,检查DCS服务,在生产中心的任意节点执行以下命令,查看DCS服务状态是否正常.
su - kingbase cd /home/kingbase/cluster/install/kingbase/ ./corosync/sbin/corosync-quorumtool
说明:状态满足以下条件表明DCS服务正常

部署同城灾备中心前,需要确保生产中心集群已部署完成。
如果待部署灾备中心集群的服务器上无法使用ssh,则需要在部署集群前在待部署集群的服务器上部署sys_securecmdd服务。如果ssh可用,则可以跳过该小节的部署操作。
本文ssh互信已配置,但是为了扩展ssh不能使用的场景,所以灾备部署部分使用securecmd服务。
灾备中心每个节点都操作
--解压介质 su - kingbase cd /home/kingbase/software mkdir -p clientinstall tar -xvf kingbase-server-V008R030C011PSI011-linux-x86_64.tar -C ./clientinstall --初始化并启动 su - root cd /home/kingbase/software/clientinstall/bin ./sys_HAscmdd.sh init ./sys_HAscmdd.sh start --验证 sys_securecmd kingbase@ip 能免密登录即正常
登录执行 生产中心集群部署操作的节点 ,设置灾备中心部署配置文件。也可以在灾备中心节点上操作。
kesm_second_cluster.conf文件位置:在share目录中。
注意:
su - kingbase cd /home/kingbase/software/clientinstall/share vi kesm_second_cluster.conf ## deploy second cluster, will select one ip as subprimary node from node_ips ## other nodes will running as standby ## suprimary will create replication relation with upstream_ip which deployed as primary in first cluster deploy_by_sshd=0 #0是使用securecmd,1是使用ssh(默认1) upstream_ip="192.168.40.107" zip_package="/home/kingbase/software/kingbase-server-V008R030C011PSI011-linux-x86_64.tar" install_dir="/home/kingbase/cluster/install" node_ips=(172.168.15.110 172.168.15.200 172.168.15.201) cluster_name="local_disaster" #az_name=() center_sync_mode="async" #center_priority=100 license_file=(license.dat) #ssh_port="22" #scmd_port="8890" #dcs_port=5407 #repmgr_msg_port=10024 #vip="" #vip_net_device=() #vip_net_device_ip=()
将授权文件license.dat上传到/home/kingbase/software/clientinstall/bin目录下.
授权必须存在,不然灾备中心部署过程中会报错中止。
cd /home/kingbase/software/clientinstall/bin ./kesm cluster create -f ../share/kesm_second_cluster.conf

集群升级结束后,在灾备中心的任意节点执行以下命令查看集群状态是否正常,
repmgr cluster show repmgr service status
说明:集群状态满足以下条件表明集群状态和服务正常

集群升级结束后,检查DCS服务,在生产中心的任意节点执行以下命令,查看DCS服务状态是否正常.
su - kingbase cd /home/kingbase/cluster/install/kingbase/ ./corosync/sbin/corosync-quorumtool
说明:状态满足以下条件表明DCS服务正常

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69963491/viewspace-3179751/ ,如需转载,请注明出处,否则将追究法律责任。