形态变更失败需要回滚

形态变更失败需要回滚

现象描述

用户在下发形态变更后,任务失败导致实例锁住,需要回滚恢复。

可能原因

实例故障或机器故障引起的失败,需要恢复业务。

定位思路

查看实例状态是否正常,查看当前任务的进展,符合要求则允许进行回滚操作。

缩副本场景处理步骤

  1. 使用有管理员权限的账号登录云数据库GaussDB管理平台(TPOPS)。
  2. “任务中心”,通过实例ID进行搜索,找到失败的形态变更工作流。

     

  3. 缩副本场景下,在WaitReduceReplicaTask及其之前Task出现了失败,则允许进行回滚操作。

     

     

  4. 在当前工作流中单击“释放锁”。

     

  5. “实例管理”页面,筛选条件选择“实例ID”或“实例名称”,输入框中输入获取的实例ID或实例名称,执行搜索。
  6. 单击搜索出实例的“实例名称”,进入实例详情界面。
  7. 单击备份恢复 > 修改备份策略”,打开自动备份。
  8. 以root用户登录云数据库GaussDB管理平台(TPOPS)所在主节点。
  9. 执行以下命令,切换数据库用户并更新环境变量。

     

    su dbadmin

    source ~/gauss_env_file

     

  10. 使用以下命令登录数据库,请根据提示输入正确的密码(密码请参见《云数据库GaussDB管理平台(TPOPS) 账户一览表 01》中对应的默认密码)。

     

    gsql -q core -p 8635 -U core -h 127.*.*.*

     

  11. 执行以下SQL,打开HA开关。

     

    INSERT INTO CORE.DBS_HA_DISTRIBUTION_EVENT (ID, TYPE, INSTANCE_ID)

    VALUES('{UUID}', 0, '{instanceId}');

    其中UUID可以随机生成,instanceId为实例ID。

     

扩副本场景处理步骤

  1. 使用有管理员权限的账号登录云数据库GaussDB管理平台(TPOPS)。
  2. “任务中心”,通过实例ID进行搜索,找到失败的形态变更工作流。

     

  3. 扩副本场景下,须确认是否可以进行回滚操作。

     

    1. 在WaitAgentCmdLongerTask之后的Task出现了失败,则不允许进行回滚操作,请联系技术人员支持

    2. 登录实例主节点后台,执行以下命令查询当前实例状态。

      su Ruby

      source ~/gauss_env_file

      cm_ctl query -Cvdz ALL

      若查询到实例中DN数量不为3,则不允许进行回滚操作,请联系技术人员支持

     

  4. 进入对应实例的“实例详情”界面。
  5. 在形态变更的任务详情页面,单击“调度方案”处的“释放锁”(若“释放锁”按钮置灰,请先刷新当前页面),解除当前任务的Action锁。

     

  6. 复制当前实例ID和两个新节点的ID。

     

     

  7. 以root用户登录云数据库GaussDB管理平台(TPOPS)所在主节点。
  8. 将管理平台安装包所在目录(以/data/docker-service目录为例,以实际docker-service所在目录为准)下的回滚文件expand_roll_back.sql复制到目录/home/dbadmin下。

     

    cp /data/docker-service/package/rollback_sql/expand_roll_back.sql /home/dbadmin

     

  9. 执行以下命令,修改回滚文件的权限。

     

    cd /home/dbadmin/

    chown dbadmin:dbgrp expand_roll_back.sql

     

  10. 执行以下命令,依次修改回滚文件中的实例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》中数据库core账户对应的默认密码。

     

  13. 参考《云数据库GaussDB管理平台(TPOPS) 用户指南》中的常见问题 > 实例异常 > 后台手动删除实例”章节,重置两个新扩节点的主机。
 
posted @ 2024-11-18 14:32  jerrywang1983  阅读(4)  评论(0)    收藏  举报