• 首页 > 
  • 通用方案:专有云V2环境中AnalyticDB产品FN、BN、CN节点的重启方法

通用方案:专有云V2环境中AnalyticDB产品FN、BN、CN节点的重启方法

KB: 197282

 · 

更新时间:2020-12-29 11:09

1. 概述

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

方案总览

类别 内容
国产化
风险等级(方案执行的影响)
操作方式 灰屏
操作复杂度
预估执行时长 2小时
客户业务的影响
可监控性 支持
有效性(重启、重拉、补丁、升级、扩容等配置是否丢失) 临时
数据修订(变更是否涉及增删改操作)
执行灰度策略 请向产品侧咨询,明确灰度策略
首次发布时间 N/A
预计完成时间 N/A

1.1. 适用范围

  • 专有云版本:V2.*
  • 产品:AnalyticDB
说明:适用于专有云V2.0.0~V2.5.0环境,包含V2.0.0和V2.5.0环境。

1.2. 风险说明

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

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

2. 问题描述

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

3. 解决方案

3.1. 环境检查

确认能正常登录Gallardo RMUI

  1. 登录gallardo_ag容器,如何登录容器请参见专有云V2环境中如何登录容器
  2. 执行ip addr命令,查看容器IP。
  3. 访问以下链接,确认正常登录Gallardo RMUI。
    http://[$Gallardo_AG_IP]:8315/index
    说明:[$Gallardo_AG_IP]为上一步查看的IP。

确认能正常登录Garuda Console

  1. 登录ads_ag容器,执行ip addr命令,查看容器IP。
  2. 访问以下链接,确认正常登录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='[$DB_Name]' 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