集群主DN发生故障,DN的备机自动升为主机后,可能导致集群各主机上的主备分布不均衡,从而使各主机的运行负载不均衡。待故障DN恢复正常后,可以手工执行主备切换,使各主机上的主备DN分布均衡。在其他场景,如有需要也可以通过命令行手动切换DN。
背景信息
部署集群时,建议用户将主机上的主DN对应的备1实例和备2实例分散部署在其他多个主机上,且尽量使各主机上的DN数相同。如表1所示。
主机 | AZ | CN | CM | ETCD | DN |
---|---|---|---|---|---|
plat1 | AZ1 | CN 1 | CM备 | ETCD1 | DN1备 |
plat2 | AZ1 | CN 2 | CM主 | ETCD2 | DN2备 |
plat3 | AZ1 | - | - | ETCD3 | DN1主 |
plat4 | AZ1 | - | - | - | DN2主 |
如果主机plat3中DN1的主实例发生故障,则主机plat1中DN1的备实例会自动升主。待DN1的主实例恢复正常后,手动切换DN1的主备实例,保持各个主机中主备实例数目的一致。
前提条件
集群已经启动,实例的主备关系正常。
操作步骤
- 以omm用户身份登录GaussDB 100所在的任意服务器。
- 在集群的任意一个主机上执行如下命令,切换主备DN。
gs_om -t switch -h plat1 -I DB1_2
plat1为当前备DN所在的主机名称。
DB1_2为要被切换的备DN名称。
- 对于同一对实例,上一次主备切换未完成,不能执行下一次切换。
- 进行过主备切换后,如果当前集群状态中balanced字段为false,在继续执行重启etcd、单AZ拉起、节点替换或扩容操作后,集群状态中balanced字段会显示为true,但实际集群DN主备状态并未改变。
- 在切换过程中,不可以使用Ctrl+C命令中断切换过程。否则可能出现如下错误提示,同时需要手动释放CM锁,方可执行下次DN主备切换。
[GAUSS-53007] : Failed to switch cluster.
Error:Set output to terminal.
time="2019-07-16T15:45:51+08:00" level=error msg="The group group_1 is doing switchover"
time="2019-07-16T15:45:51+08:00" level=fatal msg="switchover datanode primary to DB(DB1_2) failed"解锁方法如下:
- 查询switchover是否锁住:
[omm@plat1 ~]$ etcdctl --cert="$ETCD_CERT_CLIENT_FILE" --key="$ETCD_KEY_CLIENT_FILE" --cacert="$ETCD_CA_CLIENT_FILE" --endpoints="$ETCD_ADDRESS" get /clusters/cmd_cm/arbitrate_db --prefix --user=root:Huawei@gaussdb123
/clusters/cmd_cm/arbitrate_db/group_1
group_1 - 删除switchover锁:
[omm@plat1 ~]$ etcdctl --cert="$ETCD_CERT_CLIENT_FILE" --key="$ETCD_KEY_CLIENT_FILE" --cacert="$ETCD_CA_CLIENT_FILE" --endpoints="$ETCD_ADDRESS" del /clusters/cmd_cm/arbitrate_db/group_1 --user=root:Huawei@gaussdb123
- 查询switchover是否锁住:
示例
omm@plat1:~>gs_om -t switch -h plat1 -I DB1_2
Switching instances.
Successfully switched cluster.
错误排查
如果启动集群或者停止集群服务失败,请根据日志文件中的日志信息排查错误,参见管理日志。