形态变更失败需要回滚
形态变更失败需要回滚
现象描述
用户在下发形态变更后,任务失败导致实例锁住,需要回滚恢复。
可能原因
实例故障或机器故障引起的失败,需要恢复业务。
定位思路
查看实例状态是否正常,查看当前任务的进展,符合要求则允许进行回滚操作。
缩副本场景处理步骤
- 使用有管理员权限的账号登录云数据库GaussDB管理平台(TPOPS)。
- 在“任务中心”,通过实例ID进行搜索,找到失败的形态变更工作流。
![]()
- 缩副本场景下,在WaitReduceReplicaTask及其之前Task出现了失败,则允许进行回滚操作。
![]()
- 在当前工作流中单击“释放锁”。
![]()
- 在“实例管理”页面,筛选条件选择“实例ID”或“实例名称”,输入框中输入获取的实例ID或实例名称,执行搜索。
- 单击搜索出实例的“实例名称”,进入实例详情界面。
- 单击
- 以root用户登录云数据库GaussDB管理平台(TPOPS)所在主节点。
- 执行以下命令,切换数据库用户并更新环境变量。
su dbadmin
source ~/gauss_env_file
- 使用以下命令登录数据库,请根据提示输入正确的密码(密码请参见《云数据库GaussDB管理平台(TPOPS) 账户一览表 01》中对应的默认密码)。
gsql -q core -p 8635 -U core -h 127.*.*.*
- 执行以下SQL,打开HA开关。
INSERT INTO CORE.DBS_HA_DISTRIBUTION_EVENT (ID, TYPE, INSTANCE_ID)
VALUES('{UUID}', 0, '{instanceId}');
其中UUID可以随机生成,instanceId为实例ID。
扩副本场景处理步骤
- 使用有管理员权限的账号登录云数据库GaussDB管理平台(TPOPS)。
- 在“任务中心”,通过实例ID进行搜索,找到失败的形态变更工作流。
![]()
- 扩副本场景下,须确认是否可以进行回滚操作。
- 在WaitAgentCmdLongerTask之后的Task出现了失败,则不允许进行回滚操作,请联系技术人员支持。
![]()
- 登录实例主节点后台,执行以下命令查询当前实例状态。
source ~/gauss_env_file
cm_ctl query -Cvdz ALL
若查询到实例中DN数量不为3,则不允许进行回滚操作,请联系技术人员支持。
![]()
- 在WaitAgentCmdLongerTask之后的Task出现了失败,则不允许进行回滚操作,请联系技术人员支持。
- 进入对应实例的“实例详情”界面。
- 在形态变更的任务详情页面,单击“调度方案”处的“释放锁”(若“释放锁”按钮置灰,请先刷新当前页面),解除当前任务的Action锁。
![]()
- 复制当前实例ID和两个新节点的ID。
![]()
- 以root用户登录云数据库GaussDB管理平台(TPOPS)所在主节点。
- 将管理平台安装包所在目录(以/data/docker-service目录为例,以实际docker-service所在目录为准)下的回滚文件expand_roll_back.sql复制到目录/home/dbadmin下。
cp /data/docker-service/package/rollback_sql/expand_roll_back.sql /home/dbadmin
- 执行以下命令,修改回滚文件的权限。
cd /home/dbadmin/
chown dbadmin:dbgrp expand_roll_back.sql
- 执行以下命令,依次修改回滚文件中的实例ID和两个新节点ID。
sed -i 's/rollback_instance/{instanceId}/g;s/rollback_node_1/{node_1}/g;s/rollback_node_2/{node_2}/g' expand_roll_back.sql
例如,实例ID为32eb35ac8e314256bbc4b2293666dd5bin14,两个新节点ID分别为4dd5a6caa8ee42e5a0ff522c56670c3cno14、dbee0ac3d66f417381c3c9d18ad024abno14
则命令最终为:
sed -i 's/rollback_instance/32eb35ac8e314256bbc4b2293666dd5bin14/g;s/rollback_node_1/4dd5a6caa8ee42e5a0ff522c56670c3cno14/g;s/rollback_node_2/dbee0ac3d66f417381c3c9d18ad024abno14/g' expand_roll_back.sql
可cat该文件,检查文件最后是否正确修改实例ID和两个新节点ID。
![]()
- 执行以下命令,切换数据库用户并导入环境变量。
su dbadmin
source ~/gauss_env_file
- 使用以下命令,连接数据库并执行回滚SQL。
gsql -q core -p 8635 -U core -h 127.*.*.* -W {password} -f expand_roll_back.sql
![]()
{password}请参见《云数据库GaussDB管理平台(TPOPS) 账户一览表 01》中数据库core账户对应的默认密码。
- 参考《云数据库GaussDB管理平台(TPOPS) 用户指南》中的











浙公网安备 33010602011771号