GaussDB for DWS实例故障修复
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节点,执行如下命令查询集群修复进度和状态。
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”
- 点赞
- 收藏
- 关注作者
评论(0)