【DWS 运维变更】【标准变更方案】【纯软】gs_replace修复实例

网友投稿 876 2022-05-29

1.    适用场景

DN状态异常(down)

CN处于deleted或down状态

2.    前提条件

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

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

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

◾CMServer

◾CMAgent

◾GTM

◾Coordinator

4) 如果某个GTM实例存在故障,则要求实例修复前另外一个GTM实例必须为最高可用模式。

3.    注意事项

1) 操作要在正常节点执行,不能在被修复节点执行

2) 在前一次修复结束后才能再次执行修复。

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

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

4) 实例修复前用户手动在故障实例上配置的guc参数、pg_hba.conf配置的白名单会丢失,需要提前备份。

5) gs_replace不涉及cn的,可以在线执行;gs_replace涉及cn的,8.0版本之前,必须离线执行;gs_replace涉及cn的,8.0版本之后,只要保证被修复的cn没有DDL业务即可

4.    对系统影响

由于过程中会短暂锁集群,锁集群后用户下发的包含显式启动事务的DDL语句会出现等待,集群解锁后会报错或等待时间超过20分钟会报错。如包含创建临时表操作,在集群解锁后会报错(Don't support temp table when need reconnect pooler)。

5.    准备工作

5.1检查集群状态

步骤1 以omm用户登录GaussDB A集群的第一个正常的cn节点

步骤2 执行以下命令,启用环境变量

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

步骤3 执行以下命令,查看GaussDB A集群当前状态

cm_ctl query -Cv

查看具体故障实例所在节点:实例不是“Normal”状态,且持续5分钟没有自恢复

[   Cluster State   ]

cluster_state   : Degraded

redistributing  : No

balanced        : Yes

[  Datanode State   ]

node         instance state            | node         instance state            | node         instance state

--------------------------------------------------------------------------------------------------------------------------

1  redhat1-1 6001  P Down Disk damaged | 2  redhat1-2 6002     S Standby Normal | 3  redhat1-3 3002     R Secondary Normal

1  redhat1-1 6003     P Primary Normal | 3  redhat1-3 6004     S Standby Normal | 2  redhat1-2 3003     R Secondary Normal

2  redhat1-2 6005     P Primary Normal | 3  redhat1-3 6006     S Standby Normal | 1  redhat1-1 3004     R Secondary Normal

2  redhat1-2 6007     P Primary Normal | 1  redhat1-1 6008     S Standby Normal | 3  redhat1-3 3005     R Secondary Normal

3  redhat1-3 6009     P Primary Normal | 1  redhat1-1 6010     S Standby Normal | 2  redhat1-2 3006     R Secondary Normal

3  redhat1-3 6011     P Primary Normal | 2  redhat1-2 6012     S Standby Normal | 1  redhat1-1 3007     R Secondary Normal

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

5.2关闭集群通信白名单(需要离线时做)

注意:若被修复节点上没有cn,在没有IO压力的情况下可以在线操作。如果被修复节点有cn,则必须离线操作!

步骤 1  现场实施人员知会并确认用户已完成数据库业务停止操作。

步骤 2  以omm用户登录第一个正常的CN节点,执行如下命令注释用户白名单

以默认CN实例目录/srv/BigData/mppdb/data1/coordinator为示例,现场需根据实际情况进行调整。

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

gs_ssh -c "hostname && if [ -f /srv/BigData/mppdb/data1/coordinator/pg_hba.conf ]; then cp -f /srv/BigData/mppdb/data1/coordinator/pg_hba.conf /srv/BigData/mppdb/data1/coordinator/pg_hba.conf_comment; fi "

gs_ssh -c "hostname && if [ -f /srv/BigData/mppdb/data1/coordinator/pg_hba.conf ]; then sed -i '/^[^#].*sha256.*/s/\(.*\)/#@#@#/g' /srv/BigData/mppdb/data1/coordinator/pg_hba.conf; fi "

gs_ssh -c "hostname && if [ -f /srv/BigData/mppdb/data1/coordinator/pg_hba.conf ]; then sed -i '/^[^#].*md5.*/s/\(.*\)/#@#@#/g' /srv/BigData/mppdb/data1/coordinator/pg_hba.conf; fi "

步骤 3  以omm用户登录第一个正常的CN节点,关闭MPPDB实例节点下的后台访问连接和应用连接。具体操作如下:

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

gs_ssh -c "ps ux |grep -w gsql |grep -v grep |awk '{print $2}' |xargs -r kill -9"

gs_ssh -c "ps ux |grep -w ap_agent |grep -v grep |awk '{print $2}' |xargs -r kill -9"

步骤 4  以omm用户登录每一个正常CN节点,执行如下命令重启CN。

执行以下命令,获取到CN的进程Pid

ps -ef | grep /srv/BigData/mppdb/data1/coordinator | grep -v grep

执行以下命令,杀死CN进程

kill -9 Pid

执行以下命令,观察CN被重新拉起,并且Pid与之前获取的Pid不同

ps -ef | grep /srv/BigData/mppdb/data1/coordinator | grep -v grep

6.    变更步骤

6.1清理残留文件

步骤1 以omm用户登录被修复的节点

步骤2 执行以下命令,启用环境变量

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

步骤3 使用如下命令在需要修复实例的主机上清理可能存在的残留文件。此命令仅在上次修复故障实例执行失败的情况下需要执行。

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

说明

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

6.2修改原cn目录名称(被修复节点有cn时做)

步骤1 以omm用户登录需要被修复的节点

步骤2 执行以下命令,启用环境变量

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

步骤3 使用如下命令修改原cn目录名称,防止修失败回退后误拉起损坏的cn。

mv /srv/BigData/mppdb/data1/coordinator /srv/BigData/mppdb/data1/coordinator_bak

6.3配置实例

步骤1 以omm用户登录GaussDB A集群的健康节点

步骤2 执行以下命令,启用环境变量

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

步骤3 执行以下命令,完成故障实例所在节点配置操作

gs_replace -t config -h redhat1-1

说明

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

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

如果指定主机的表空间所在磁盘出现故障,从而导致表空间中的数据损坏,更换新磁盘后,需要指定“--force”参数对该主机强制进行表空间数据的恢复。如果在config阶段指定“--force”参数,则在start阶段也必须指定“--force”参数。

6.4还原cn的白名单(被修复节点有cn时做)

如果有配置lvs,每个cn的白名单相同,可跳过此小节。

步骤1 以omm用户登录需要被修复的节点

步骤2 执行以下命令,启用环境变量

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

步骤3 使用如下命令将备份的白名单还原,操作前确认备份的白名单文件没有损坏。

cp /srv/BigData/mppdb/data1/coordinator_bak/pg_hba.conf /srv/BigData/mppdb/data1/coordinator/

6.5恢复集群通信白名单(需要离线时做)

步骤1   以omm用户登录第一个正常的CN节点,执行如下命令注释用户白名单

以默认CN实例目录/srv/BigData/mppdb/data1/coordinator为示例,现场需根据实际情况进行调整。

【DWS 运维变更】【标准变更方案】【纯软】gs_replace修复实例

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

gs_ssh -c "hostname && if [ -f /srv/BigData/mppdb/data1/coordinator/pg_hba.conf_comment ]; then  sed -i '/^#@#@#.*/s/#@#@#\(.*\)/\1/g' /srv/BigData/mppdb/data1/coordinator/pg_hba.conf && rm -f /srv/BigData/mppdb/data1/coordinator/pg_hba.conf_comment; fi "

6.6启动实例

步骤1 以omm用户登录GaussDB A集群的健康节点

步骤2 执行以下命令,启用环境变量

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

步骤3 执行以下命令,完成故障实例所在节点启动操作

gs_replace -t start -h redhat1-1

启动操作会启动集群替换实例的主机

gs_replace -t start -h redhat1-1

Starting.

======================================================================

Successfully started instance process. Waiting to become Normal.

======================================================================

.

======================================================================

Start succeeded on all nodes.

Start succeeded.

6.7重置实例

参考主备均衡方案实施。

https://bbs.huaweicloud.com/forum/thread-145786-1-1.html

6.8更新lvs(被修复节点有cn时做)

步骤1 以root用户身份登录服务器,执行source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile命令启动环境变量。

步骤2 执行gs_loadbalance更新负载均衡配置。

gs_loadbalance -t reload -U omm -X  ${BIGDATA_HOME}/FusionInsight_MPPDB_*/*_*_MPPDBServer/etc/mppdb-install-config.xml   --lvs-addr=10.146.156.101

路径中红色斜体替换为实际版本路径

参数说明

-U:运行集群的操作系统用户名。必选。

-X:集群配置文件。必选。

--lvs-addr:后续供客户端连接的LVS IP地址。必选。

7.    验证步骤

7.1确认结果

1)后台集群状态验证

步骤1 以omm用户登录GaussDB A集群的第一个正常的cn节点

步骤2 执行以下命令,启用环境变量

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

步骤3 执行以下命令,查看GaussDB A集群当前状态

cm_ctl query

如下则为正常

[   Cluster State   ]

cluster_state  :  Normal

redistributing : No

balanced       : Yes

2)客户业务验证

验证方案需包括DDL和DML语句

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

上一篇:Python 数据库之表操作mysql中的存储引擎
下一篇:Vim的配置说明
相关文章