openGauss在运行过程中,数据库管理员可能需要手工对数据库节点做主备切换。例如发现数据库节点主备failover后需要恢复原有的主备角色,或怀疑硬件故障需要手动进行主备切换。
级联备机不能直接转换为主机,只能先通过switchover或者failover成为备机,然后再切换为主机。(级联备机:与主机直接交互进行数据同步的称为一级备机,通过与一级备机实现数据同步的属于二级备机,也叫级联备机)
初始化集群状态(以一主一备为例)
一、switchover 切换
使用omm用户登录到想要切换为主节点的备节点,执行以下命令,完成切换即可
gs_ctl switchover -D /opt/software/install/data/dn
二、failover 切换
1.将主实例所在节点关机
因为实验环境目前无法通过业务引发节点故障,所以当前实验选择将数据库主实例所处节点进行关机以达到主实例挂机的效果
将opengauss-0001节点关机后,目前仅剩opengauss-0002节点,使用omm用户登录到0002节点后使用gs_om查询集群状态会发现gs_om运行非常慢,且无法返回集群信息,所以在此需要使用gs_ctl工具查询集群状态
gs_ctl query -Cv -D /opt/software/install/data/dn
以上-D指定的是数据目录,当前案例数据库安装的数据目录/opt/software/install/data/dn
2.在当前备节点执行以下命令完成集群状态切换
gs_ctl failover -D /opt/software/install/data/dn/
当前查询集群状态可以发现,当前集群再运行节点为 1 台
gs_ctl query -Cv -D /opt/software/install/data/dn
3.将原主实例所在的主机重新开机,然后再查询集群状态
在以下状态中可以发现0001节点上的实例状态为Down
4. 将集群恢复到一主一备
容易出现的问题
如果直接在备节点使用 gs_om -t start 或者 gs_ctl start -D /opt/software/install/data/dn 启动后会出现双主的情况,会导致整个集群出现问题
解决办法是在备节点启动实例时应该指定运行模式为standby
gs_ctl stop -D /opt/software/install/data/dn
正确操作方式
启动命令如下:
gs_ctl start -M standby -D /opt/software/install/data/dn
启动后使用refreshconf刷新集群配置信息
gs_om -t refreshconf
查询当前集群状态会发现,standby节点状态提示“Need repair(WAL)”
在standby的节点主机执行以下命令进行修复,(修复中可能会有faild报错,是可以忽略的,主要看最后几行是都执行成功)
gs_ctl build -D /opt/software/install/data/dn
执行完成后查看集群状态可以看到当前集群整体状态是一主一备