通用方案:AnalyticDB产品FN、BN、CN节点的重启方法

通用方案:AnalyticDB产品FN、BN、CN节点的重启方法

更新时间:2020-07-23 17:57:13

1. 概述

本文主要介绍在专有云环境中,AnalyticDB产品FN、BN、CN节点的重启方法。

1.1. 适用范围

  • 专有云V2,AnalyticDB
  • 专有云V3,AnalyticDB

1.2. 风险说明

AnalyticDB的节点为双副本,使用单个节点重启的方式重启多个CN节点,和使用副本的方式重启节点时,需要逐个副本进行操作。确保操作的第一个副本数据恢复后,再操作另一个副本。

  • 单个节点重启:AnalyticDB的节点为双副本,重启一个副本的单个节点,理论上不影响业务。多个CN节点重启时,需要注意不能同时重启同一副本的CN节点,且严格禁止涉及两个副本的多个节点同时或短时间内进行重启,且需要确认数据恢复正常。
  • 按副本重启:AnalyticDB的节点为双副本,重启一个副本后,另一副本也能正常提供服务。FN、BN节点重启速度较快,理论上不影响业务。重启CN节点的时间受到数据量大小和ECU个数的影响,数据量越大、ECU个数越多,单副本重启数据恢复时间越慢。

1.3. 用户告知

  • FN节点为FRONTNODE节点,BN节点为BUFFERNODE节点,CN节点为COMPUTENODE节点。
  • 本文以专有云V3环境为例,专有云V2和专有云V3的区别在于登录容器的方式不同。
  • 在ads_ag容器中操作时,一定要使用admin用户。

2. 问题描述

AnalyticDB产品的节点受到异常SQL、业务压力大等因素出现异常,例如严重的内存溢出、节点的PID不正常、数据恢复异常等,则需要重启节点进行恢复。

3. 解决方案

3.1. 环境检查

确认能正常登录Gallardo RMUI

  1. 登录天基控制台,在Project框中搜索ads,单击目标集群右侧的集群运维中心,选择gallardo-service服务和GALLARDO_AG#服务角色,单击机器右侧的Terminal
  2. 登录gallardo_ag容器,执行ip addr命令,查看容器IP。
  3. 访问以下链接,确认正常登录Gallardo RMUI。
    http://[$Gallardo_AG_IP]:8315/index
    说明:[$Gallardo_AG_IP]为上一步查看的IP。

确认能正常登录Garuda Console

  1. 登录天基控制台,在Project框中搜索ads,单击目标集群右侧的集群运维中心,选择ads-service服务和AdminGateway#服务角色,单击机器右侧的Terminal
  2. 登录ads_ag容器,执行ip addr命令,查看容器IP。
  3. 访问以下链接,确认正常登录Garuda Console。
    http://[$Ads_AG_IP]:8080/console-dev
    说明:[$Ads_AG_IP]为上一步查看的IP。

3.2. 实施步骤

获取gallardoUIUrl和gallardoServerUrl的值

登录Garuda Console,依次选择配置管理>高级>global>config>resourcemanager,查看并记录gallardoUIUrlgallardoServerUrl的值。

注意:“http://”这几个字符不用记录。

修改config.cfg文件

  1. 登录ads_ag容器,依次执行以下命令,备份config.cfg文件。
    cd /home/admin/ads_tools/gallardo_cmd/conf/
    cp config.cfg config.cfg.bak
  2. 执行ls命令,确认备份成功。
  3. 编辑config.cfg文件,将gallardoUIUrl和gallardoServerUrl的值修改成获取gallardoUIUrl和gallardoServerUrl的值步骤中记录的值,保存并退出。

确认修改config.cfg文件成功

依次执行以下命令,查看gallardoUIUrl和gallardoServerUrl的值,确认修改config.cfg文件成功。

cd ..
sh get_all_app.sh

单节点重启

注意:本文以FN节点的sysdb_1-FRONTNODE-1为例,具体的节点以实际环境为准。

登录Gallardo RMUI,单击amUi的值,查找并单击sysdb_1-FRONTNODE-1,确认Pid的值不为-1-1代表无进程,且记录Task Type值下划线的前一部分。如果是group1,说明是副本1,如果是group2,说明是副本2。

按照副本重启BN、FN节点

  1. 登录ads_ag容器,依次执行以下命令,停止副本1。
    cd /home/admin/ads_tools/gallardo_cmd
    sh group.sh stop sysdb_1-FRONTNODE-1 group1
  2. 在Gallardo RMUI中,确认sysdb_1-FRONTNODE-1的Pid值为-1
  3. 登录ads_ag容器,依次执行以下命令,启动副本1。
    cd /home/admin/ads_tools/gallardo_cmd
    sh group.sh start sysdb_1-FRONTNODE-1 group1
  4. 在Gallardo RMUI中,确认sysdb_1-FRONTNODE-1的Pid值为正常值。
  5. 登录ads_ag容器,依次执行以下命令,重启副本2。
    注意:2个副本操作间隔应大于5分钟,并观察Pid的值变化正常。
    cd /home/admin/ads_tools/gallardo_cmd
    sh group.sh stop sysdb_1-FRONTNODE-1 group2
    sh group.sh start sysdb_1-FRONTNODE-1 group2

按照副本重启CN节点

注意:本文以CN节点的sysdb_1-COMPUTENODE-0为例,具体的节点以实际环境为准。

  1. 登录Gallardo RMUI,单击amUi的值,查找并单击sysdb_1-COMPUTENODE-0,确认对应副本Pid的值不为-1,且记录Task Type值下划线的前一部分。如果是group1,说明是副本1,如果是group2,说明是副本2。
  2. 登录ads_ag容器,依次执行以下命令,停止副本1。
    cd /home/admin/ads_tools/gallardo_cmd
    sh group.sh stop sysdb_1-COMPUTENODE-0 group1
  3. 在Gallardo RMUI中,确认sysdb_1-COMPUTENODE-0的Pid值为-1
  4. 登录ads_ag容器,依次执行以下命令,启动副本1。
    cd /home/admin/ads_tools/gallardo_cmd
    sh group.sh start sysdb_1-COMPUTENODE-0 group1
  5. 登录ads_ag容器,执行以下命令,进入sysdb数据库。
    mysql -h"sysdb."${ads_dns_subzone}"."${ads_dns_zone} -P10000 -u${ads_account_accessId} -p${ads_account_accessKey} -Dsysdb
  6. 执行如下SQL语句,确认副本1的节点数据恢复至与副本2的节点一致,即数据恢复完成。
    select host_ip_port,count(*) as cc,sum(data_size) as sum from information_schema.localnode_tables where table_schema='[$Dbname]' group by host_ip_port order by cc desc;
    注意
    • [$Dbname]为需要重启的CN节点对应的库名。
    • 如果sysdb数据库无法查询,可按照补充说明的步骤,在主rm上,确认输出结果的数值等于ECU个数的一半,即数据恢复完毕。
  7. 确保副本1数据恢复完毕后,等待一段时间,执行以下步骤,重启副本2。
    1. 登录ads_ag容器,执行以下命令,停止副本2。
      cd /home/admin/ads_tools/gallardo_cmd
      sh group.sh stop sysdb_1-COMPUTENODE-0 group2
    2. 在Gallardo RMUI中,确认副本2的Pid值为-1
    3. 登录ads_ag容器,依次执行以下命令,启动副本2。
      cd /home/admin/ads_tools/gallardo_cmd
      sh group.sh start sysdb_1-COMPUTENODE-0 group2
  8. 参见本节第6步,确认副本2的节点数据恢复至与副本1的节点一致。如果sysdb数据库无法查询,可参见补充说明,在主rm上,确认输出结果的数值等于ECU个数,即数据恢复完毕。

3.3. 结果验证

  1. 登录Gallardo RMUI,确认Pid的值正常。
  2. 如果是按副本重启CN节点,观察CN节点的数据恢复正常。

4. 回滚方案

重启操作无法回滚,如出现问题,请联系阿里云技术支持紧急排查。

5. 补充说明

  1. 通过专有云控制台登录DMS管理控制台,在数据库管理页面单击对应的库名,然后记录ECU的数量。
  2. 登录Garuda Console,依次选择配置管理>高级>dbmg>service,找到主rm所在的页面,主rm所在页面的master的值为true。
  3. 通过IP登录主rm,进入/home/admin/analyticdb/logs目录,执行以下命令,查看输出的个数。
    grep "taskQueueSize=0 runningTaskSize=0" resourcemanager.log |grep [$Dbname] |wc -l