GaussDB DN故障-多数派故障
- 故障现象
分片内,正常状态DN数量占分片内DN总数的一半以下。
- 故障原因
可能原因有以下:
DN故障。
- 处理方法
步骤 1 登录故障DN节点,切换Ruby用户,查询集群状态。
查询集群状态,分片内无主,不满足多数派。
查询集群状态,分片有主,分片内主DN不满足至少一主一备,不满足多数派。
su - Ruby
cm_ctl query -Cvd
如上图,dn_6001和dn_6003故障,DN分片内不满足多数派。
步骤 2 当分片内无主,需联系华为技术排查无主原因,若分片内有主,跳过此步骤。
步骤 3 分片内有主DN,需连接主DN节点,同时gsql连接主DN,确认是否自动降副本。
1.查看集群信息。
su - Ruby
cm_ctl query -Cvdp

如上图,dn_6002为主DN,端口号为40000。
2. gsql连接dn_6002。
gsql -d postgres -p 40000 -U user -W password -r
3. 查看参数。
show synchronous_standby_names;

如上图,synchronous_standby_names参数值为ANY 1(dn_6001,dn_6003)。
步骤 4 根据以下场景,确认是否执行降副本。
1. DN分片一主三备,分片内synchronous_standby_names的值在DN正常状态应为ANY 2(dn_instanceId1, dn_instanceId2, dn_instanceId3)或者ANY 2(AZ1, AZ2),降副本后值为ANY 1(dn_instanceId1, dn_instanceId2)或者ANY 1(AZ1)或者ANY 1(AZ2)。
2. 如步骤3中的值不满足以上,则说明集群未执行自动降副本,需要手动执行降副本,命令如下:
gs_guc reload -Z datanode -D datapath -c "= 'synchronous_standby_names = ANY 1(AZ_Name)'"
说明:
HCS场景,执行gs_guc命令需要进入沙箱。
datapath为当前DN分片的数据目录,可通过cm_ctl query -Cvd查询获取。
当前命令需要在分片内的主DN执行。
须知:
降副本为高危操作,执行前需联系华为技术支持确认。分片内DN总数非一主三备,不可执行此操作。
步骤 5 DN故障原因,参考7 DN故障-状态Down或者8 DN故障-状态Unknown或者10 DN故障-状态Need repair排查。
步骤 6 当分片DN恢复正常状态以后,需要执行升副本。
gs_guc reload -Z datanode -D datapath -c "= 'synchronous_standby_names = 'ANY 2(AZ_Name, AZ_Name)'"
说明:
HCS场景,执行gs_guc命令需要进入沙箱。
datapath为当前DN分片的数据目录,可通过cm_ctl query -Cvd查询获取。
当前命令需要在分片内的主DN执行。
须知:
升副本为高危操作,执行前需联系华为技术支持确认。分片内DN总数非一主三备,不可执行此操作。
步骤 7 若以上不涉及,联系华为技术支持。
----结束
- 点赞
- 收藏
- 关注作者
评论(0)