GBase8s数据库集群管理程序介绍
介绍数据库自带的集群管理程序 Connection Manager
- 弊端:
- 没有vip,需要代理或者转发。
- 源码复杂,并且谨慎有余灵活不足,不能满足客户特殊的集群需求。
介绍我自己开发的集群管理程序 WeiCM.exe
- 组件:
- WeiDbManager :对DB实施操作的代理接口,提供数据库启停,角色切换,集群关系定义接口。
- WeiOsManager :对OS实施操作的代理接口,提供vip绑定解绑接口。
- WeiCM : 负责集群定义,负责节点自恢复,负责节点角色切换,负责主角色选举,负责VIP切换。
开始部署我的集群管理程序
- 部署架构图
下文示例中:管理端windoes的ip是1.1.1.1;两个docker的宿主机IP是1.1.1.2和1.1.1.3; 其中1.1.1.2上运行gbase001容器, 其中1.1.1.2上运行gbase002容器。
数据库集群端-部署
导入镜像
docker load < gbase_v2.tar创建docker
docker run -p 16060:6060 -p 19088:19088 -p 9088:9088 --name gbase001 -itd gbase:v2 su - gbasedbt -c "/home/gbase/start.sh ; /bin/bash "
docker run -p 26060:6060 -p 29088:29088 -p 9088:9088 --name gbase002 -itd gbase:v2 su - gbasedbt -c "/home/gbase/start.sh ; /bin/bash "修改DB配置一:profile onconfig sqlhosts
docker exec -it gbase001 /bin/bash
docker exec -it gbase002 /bin/bash
su - gbasedbt
rm -fr /home/gbase/sysInfo/WeiShell/
mkdir -p /home/gbase/sysInfo/WeiShell/
sh g01.init.instance.name.sh gbase001 1.1.1.2
sh g01.init.instance.name.sh gbase002 1.1.1.3
. .bash_profile修改DB配置二:sqlhosts
#1.1.1.2上:
cat > /opt/gbase/etc/sqlhosts << EOF
gbase001 onsoctcp 0.0.0.0 19088
gbase002 onsoctcp 1.1.1.3 29088
gbase onsoctcp 0.0.0.0 9088
EOF
#1.1.1.3上:
cat > /opt/gbase/etc/sqlhosts << EOF
gbase001 onsoctcp 1.1.1.2 19088
gbase002 onsoctcp 0.0.0.0 29088
gbase onsoctcp 0.0.0.0 9088
EOF修改DB配置三:onconfig
sed -i 's/^DBSERVERALIASES.*/DBSERVERALIASES gbase/' /opt/gbase/etc/$ONCONFIG修改DB配置四:cluster
# sed -i 's/FULL_DISK_INIT 0/FULL_DISK_INIT 1/' $GBASEDBTDIR/etc/$ONCONFIG
chmod 777 0b
ontape -p -t 0b
#gbase001主
onmode -m
onmode -d add RSS gbase002
#gbase002备
onmode -d RSS gbase001
#查看结果
onstat -g cluster修改Docker配置一:WeiDbManager 和 和 GetNodeInfo.sh
#宿主机上传 WeiDbManager
#宿主机上传
#宿主机上传 GetNodeInfo.sh
mkdir -p /opt/gbase/sysInfo/WeiShell/
cd /opt/gbase/sysInfo/WeiShell/
rm -fr /opt/gbase/sysInfo/WeiShell/*
rm WeiDbManager -f
rz#宿主机复制文件到Docker里面
chmod 755 /opt/gbase/sysInfo/WeiShell/WeiDbManager
chmod 755 /opt/gbase/sysInfo/WeiShell/
chmod 755 /opt/gbase/sysInfo/WeiShell/GetNodeInfo.sh
cd /opt/gbase/sysInfo/WeiShell/
docker cp WeiDbManager gbase001:/home/gbase/sysInfo/WeiShell/
docker cp WeiDbManager gbase002:/home/gbase/sysInfo/WeiShell/
docker cp gbase001:/home/gbase/sysInfo/WeiShell/
docker cp gbase002:/home/gbase/sysInfo/WeiShell/
docker cp GetNodeInfo.sh gbase001:/home/gbase/sysInfo/WeiShell/
docker cp GetNodeInfo.sh gbase002:/home/gbase/sysInfo/WeiShell/修改Docker配置二: Start
#容器里面
cat > ~/start.sh << EOF
#!/bin/bash
echo "---start---"
nohup /home/gbase/sysInfo/WeiShell/WeiDbManager &
nohup /home/gbase/sysInfo/WeiShell/ 1.1.1.1 &
EOF修改OS配置一:WeiOsManager And Start
#宿主机上传: WeiOsManager ,并用root用户运行即可。
mkdir -p /opt/gbase/sysInfo/WeiShell/
cd /opt/gbase/sysInfo/WeiShell/
rz#宿主机上传:用root用户运行即可。
chmod 755 /opt/gbase/sysInfo/WeiShell/WeiOsManager
nohup /opt/gbase/sysInfo/WeiShell/WeiOsManager &
或
chmod 755 /opt/gbase/sysInfo/WeiShell/WeiOsManager
nohup /opt/gbase/sysInfo/WeiShell/WeiOsManager -l 1.1.1.3 &重启Docker
docker stop gbase001
docker stop gbase002
docker start gbase001
docker start gbase002手动启动第1个主节点
#1.1.1.2上绑定IP
ip addr add 1.1.1.6/24 dev ens33
ip a |grep 1.1.1.
docker exec -it gbase001 /bin/bash
su - gbasedbt
oninit -v数据库集群端-完成
至此,自切换集群 DB-SERVER端境搭建完成。包含程序: WeiOsManager 和 WeiDbManager 。
调度管理端-部署
准备一台到DB服务器网络通的Windows主机,这里配置IP为1.1.1.1。
上传WeiCM.exe执行程序到Windows主机。
调度管理端-完成WeiCM.exe Start
在Winddows机器上运行WeiCM.exe程序即可。
程序会检测数据库集群状态,并完成集群故障切换,集群节点自动修复,集群VIP切换。
保留最终解释权
其他说明1:
极端情况下如果有双主情况出现,请决策者取舍:
02:39:14 DR_ERR set to -5
02:39:14 Assert Failed: DR: Log Record Apply Thread Exited Abnormally. Internal Error.
A restart of the database server shall be required to correct
this problem.
02:39:14 GBase Database Server Version 12.10.FC4G1AEE
02:39:14 Who: Session(19, gbasedbt@, 0, 0x45df7fa8)
Thread(44, RSS_apply, 45db9228, 1)
File: hdr/hdrApply.c Line: 580
02:39:14 Results: Database Server must abort
02:39:14 Action: Reinitialize shared memory
02:39:14 stack trace for pid 82 written to /opt/gbase/tmp/af.41456d2其他说明2:
- 本程序功能:
1、集群中只要有一个节点活着,业务就不会中断。
2、对于故障的节点,只要外部条件修复了,会自动加入新集群。
3、提供故障切换和Vip漂移功能。 - 友情提示:
1、如果想手动配置集群,比如:想手动决定主节点归属,想从备份恢复从节点。时,请先停止本集群,待你配置完成后,再启动本程序让它帮助你管理和维护集群服务。 - 测试结果:
1、停数据库库,可以故障切换业务正常。
2、停容器,可以故障切换业务正常。
3、断宿主机网络,可以故障切换业务正常。
其他说明3:
本程序更像一个外挂程序,从数据库运维工程的角度出发,解决了一些实际生成需求。
















