原作者:徐肖霞
MogHA 是一款保障数据库主备集群高可用的企业级软件系统,能够自主探测故障实现故障转移,虚拟IP自动漂移等特性,使得数据库的故障持续时间从分钟级降到秒级(RPO=0,RTO<30s),确保数据库集群的高可用服务。
说明:
primary指的是192.168.42.128数据库,即没有发生切换前的primary库
standby指的是192.168.42.129数据库,即没有发生切换前的standby库
在整个文章中,不再根据数据库切换状态进行变化。
1 环境要求
1.1 已安装好mogdb主备

1.2 gsql和gs_ctl免密执行
[omm@mogdb-ha1 ~]$ gsql -d postgres -p 26000
gsql ((MogDB 3.0.0 build 62408a0f) compiled at 2022-06-30 14:21:11 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type “help” for help.
MogDB=#
[omm@mogdb-ha1 ~]$ gs_ctl -D /opt/mogdb/data query

1.3 omm用户要有sudo权限(仅有ifconfig命令权限会报错)
[root@mogdb-ha1 ~]# vi /etc/sudoers 增加以下内容:
omm ALL=(ALL) NOPASSWD: ALL
2 安装mogha
2.1 下载安装包(primary和standby都要操作)
[root@mogdb-ha1 mogha]# tar xf mogha-2.3.5-CentOS-x86_64.tar.gz
[root@mogdb-ha1 mogha]# ls -l
total 15848
drwxr-xr-x. 2 root root 158 Jun 10 14:18 mogha
-rw-r–r–. 1 root root 16227396 Jul 15 15:52 mogha-2.3.5-CentOS-x86_64.tar.gz
[root@mogdb-ha1 mogha]# cd mogha/
[root@mogdb-ha1 mogha]# ls -l
total 16060
-rw-r–r–. 1 root root 288 Jun 10 14:18 common.sh
-rwxr-xr-x. 1 root root 3519 Jun 10 14:18 install.sh
-rwxr-xr-x. 1 root root 16408104 Jun 10 14:18 mogha
-rw-r–r–. 1 root root 699 Jun 10 14:18 mogha.service.tmpl
-rw-r–r–. 1 root root 3806 Jun 10 14:18 node.conf.tmpl
-rw-r–r–. 1 root root 9834 Jun 10 14:18 README.md
-rwxr-xr-x. 1 root root 482 Jun 10 14:18 uninstall.sh
-rw-r–r–. 1 root root 13 Jun 10 14:18 version.txt
[root@mogdb-ha1 mogha]# pwd
/opt/mogha/mogha
[root@mogdb-ha1 opt]# chown -R omm.omm /opt/mogha
2.2 安装mogha
[omm@mogdb-ha1 mogha]$ sudo ./install.sh omm /opt/mogdb/data

2.3 完善node.conf配置
[config]
db_port=26000
db_user=omm
db_datadir=/opt/mogdb/data
primary_info=/opt/mogha/mogha/primary_info
lite_mode=True
agent_port=8081
heartbeat_interval=3
primary_lost_timeout=10
primary_lonely_timeout=10
meta_file_type=json
logger_format=%(asctime)s %(levelname)s [%(filename)s:%(lineno)d]: %(message)s
log_dir=/opt/mogha/mogha
log_max_size=512MB
log_backup_count=10
handle_down_primary=True
[host1]
ip=192.168.42.128
heartbeat_ips=192.168.42.128
[host2]
ip=192.168.42.129
heartbeat_ips=192.168.42.129
[zone1]
vip=192.168.42.130
hosts=host1,host2
ping_list=192.168.42.128,192.168.42.129,192.168.42.1
cascades=
arping=
[omm@mogdb-ha1 mogha]$ sudo systemctl start mogha
[omm@mogdb-ha1 mogha]$ sudo systemctl status mogha

2.4 查看vip

在standby主机上也安装mogha。
3.高可用测试
3.1 模拟primary异常down机
在Primary执行reboot操作,检查standby库

这里可以看到local_role已经转为primary了。说明已经发生了standby->primary切换。
Vip也漂移到standby库上


3.2 Primary库启动
启动primary数据库(192.168.42.128),检查当前状态

可以看到,启动后,数据库成为standby,
在standby数据库(192.168.42.129)数据库上,查看

当前同步状态是从192.168.42.129->192.168.42.128同步。
4 手动切换
[omm@mogdb-ha1 ~]$ gs_ctl switchover -D /opt/mogdb/data
[2022-07-15 17:47:23.506][6400][][gs_ctl]: gs_ctl switchover ,datadir is /opt/mogdb/data
[2022-07-15 17:47:23.506][6400][][gs_ctl]: switchover term (1)
[2022-07-15 17:47:23.518][6400][][gs_ctl]: waiting for server to switchover…
[2022-07-15 17:47:36.614][6400][][gs_ctl]: done
[2022-07-15 17:47:36.614][6400][][gs_ctl]: switchover completed (/opt/mogdb/data)

5.停止mogha
[omm@mogdb-ha1 ~]$ sudo systemctl stop mogha
[omm@mogdb-ha1 ~]$ gs_om -t stop -h mogdb-ha1 —关闭primary库




