形态变更失败需要回滚
现象描述
用户在下发形态变更后,任务失败导致实例锁住,需要回滚恢复。
可能原因
实例故障或机器故障引起的失败,需要恢复业务。
定位思路
查看实例状态是否正常,查看当前任务的进展,符合要求则允许进行回滚操作。
缩副本场景处理步骤
-
使用有管理员权限的账号登录云数据库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进行搜索,找到失败的形态变更工作流。
-
扩副本场景下,须确认是否可以进行回滚操作。
-
进入对应实例的“实例详情”界面。
-
在形态变更的任务详情页面,单击“调度方案”处的“释放锁”(若“释放锁”按钮置灰,请先刷新当前页面),解除当前任务的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。

11. 执行以下命令,切换数据库用户并导入环境变量。
**su dbadmin**
**source ~/gauss\_env\_file**
12. 使用以下命令,连接数据库并执行回滚SQL。
**gsql -q core -p 8635 -U core** **\-h 127.\*.\*.\*** **-W**
**{password}**
**\-f expand\_roll\_back.sql**

{password}
请参见《[云数据库GaussDB管理平台(TPOPS) 账户一览表 01](https://support.huawei.com/enterprise/zh/cloud-computing/gaussdb-pid-251517148)》中数据库core账户对应的默认密码。
13. 参考《云数据库GaussDB管理平台(TPOPS) 用户指南》中的“常见问题 > 实例异常 > 后台手动删除实例”章节,重置两个新扩节点的主机。
更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…