GaussDB for DWS实例故障修复

网友投稿 708 2022-05-28

1. 操作场景

数据节点上由于磁盘或raid故障,导致该raid组上cn、dn实例故障,会上报“ALM-37006 Coordinator进程异常” 或“ALM-37007 Datanode进程异常”等MPPDB相关告警。在修复硬件故障后,需修复故障raid上的cn、dn实例,使集群恢复Normal状态。

2.整体过程描述

3.前提条件

1) GaussDB A集群安装成功,且已处于启动状态。

2) DN环的主、备实例不能同时损坏,DN环的主、从备实例不能同时损坏,DN环的备、从备实例不能同时损坏,即一个DN环中只能损坏一个实例。

3) GaussDB A集群内如下实例至少存在一个正常运行的:

•CMServer

•CMAgent

•GTM

•Coordinator

4) 集群状态为Degraded状态。

5) 磁盘或raid等硬件故障已修复(可以使用cd,ls,touch等命令查看磁盘是否已经正常)。

4.注意事项

1) 在前一次修复结束后才能再次执行修复。因此请不要同时在多个集群节点上执行脚本gs_replace

2) 修复前不能锁定集群。

5.对系统影响

1) 当故障的只是dn实例,实例修复支持在线修复。

2) 当故障的包含cn实例,支持在线修复,但有以下限制场景。

说明:如果集群中含有故障的CN且其状态不为Deleted,那么在修复过程中用户执行DDL会报错,DML可以正常执行,其他场景执行业务不受影响。特别说明:由于修复CN的过程中会短暂锁集群,锁集群后用户下发的包含显式启动事务的DDL语句会出现等待,集群解锁后会报错或等待时间超过20分钟会报错。如包含创建临时表操作,在集群解锁后会报错(Don‘t support temp table when need reconnect pooler)。

修复故障实例过程中系统将关闭“自动剔除故障CN”功能,完成后系统再次打开该功能。因此建议在开始修复前确认故障的CN已经被自动剔除(即故障的CN状态为Deleted),否则在替换过程中用户执行DDL会报错。

6.修复步骤

1) 以omm用户登录集群的任意一个CN实例正常的服务器。

2) 执行以下命令,启用环境变量。

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

3) 执行查询集群状态命令,确认具体故障实例所在节点和实例名称。查看发现集群是“Degraded”状态,且在一段时间(几分钟内)集群状态稳定维持不变。具体实例状态显示为非“Normal”状态的节点和实例。

查询命令:cm_ctl query -Cvd

结果如下图:

以上述查询结果为例,故障实例所在节点名称为redhat1-1。

4) 使用如下命令在需要替换实例的主机上清理可能存在的残留文件:

(if [ -f $PGHOST/GaussReplace.dat ];then rm $PGHOST/GaussReplace.dat;fi)

说明: 该文件为替换故障实例、替换主机中产生的用于记录执行步骤的临时文件,如果在上次执行过程中出现宕机或网卡中断等,可能会导致该文件残留。在替换故障实例前检查该文件是否存在,且生成时间非本次替换故障实例的时间,则可判断为上次执行的残留文件,删除该文件后,继续执行替换故障实例。

5) 使用如下命令完成配置操作。

命令:gs_replace -t config -h redhat1-1

说明:如需修复多节点的实例故障,在-h参数后面依次跟上主机名,主机名中间以逗号隔开,如:gs_replace -t config -h redhat1-1,redhat1-2

配置操作会清理替换实例的空间,初始化替换实例,配置替换实例。

如果收到提示:“GAUSS_50201: The XXX does not exist.",则请检查对应的实例数据目录是否存在。如果不存在,请重新创建目录后再次执行上述命令。

config的运行结果成功后,再进行下一步,如下图:

6) 使用如下命令在需要替换实例的节点上完成启动操作。

命令:gs_replace -t start -h redhat1-1

启动操作会启动集群替换实例的节点。

注:config时有多节点实例故障,start也要启动多个节点,且start命令可能会超时,但不影响在后台的build的运行,如下:

7) 修复过程中,以omm用户登录CN节点,执行如下命令查询集群修复进度和状态。

GaussDB for DWS实例故障修复

source /opt/huawei/Bigdata/mppdb/.mppdbgs_profile

cm_ctl query -Cv

8) 连接CN实例,执行如下命令确认实例主备完全同步(返回结果为0行)。

命令:gsql -d postgres -p port  -r

gsql登录到数据库后执行查看命令:select pgxc_get_senders_catchup_time();

9) 做checkpoint

8. 主备切换

1) 执行如下命令进行实例重置,恢复集群均衡状态。

cm_ctl switchover -a –t 3600

2) 执行如下命令查询集群状态,确认集群状态已恢复为Normal。

命令:cm_ctl query

更多精彩内容,请关注华为云开发者社区论坛:https://bbs.huaweicloud.com/forum/forum-598-1.html 及微信公众号“华为云AI”

数据仓库服务 GaussDB(DWS)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:HUAWEI-ECS常用运维工具(干)
下一篇:【Flutter 专题】07 图解【登录】页面小优化
相关文章