通用方案:专有云环境中AnalyticDB产品黑屏扩缩容ECU的方法

1. 概述

本文主要介绍在专有云环境中,AnalyticDB产品黑屏扩缩容ECU的方法。

方案总览

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

1.1. 适用范围

  • 专有云版本:V2.*,V3.*
    说明
    • 适用于专有云V2.0.0~V2.5.0环境,包含V2.0.0和V2.5.0环境。
    • 适用于专有云V3.0.0~V3.8.X环境,包含V3.0.0和V3.8.X环境。
  • 产品:AnalyticDB
    说明:AnalyticDB产品版本低于2.10.x(不包含2.10.x)适用本方案,V2环境部分非标准项目独立升级AnalyticDB或高于2.10.x版本(包含2.10.x),不适用于本方案,请参见通用方案:专有云环境中AnalyticDB产品白屏扩缩容ECU的方法,AnalyticDB产品版本请参见本方案环境检查进行确认。

1.2. 风险说明

  • 扩容前请务必确认资源充足,支持扩容,缩容前请务必确认缩容目标的ECU个数满足当前总数据量的存储。
  • 扩缩容过程中AnalyticDB内部会停止数据上线,期间上线任务会有延迟,实例数据量越大扩缩容时间越长,建议变更时间申请至少两小时以上。
  • 扩缩容期间在启动BN节点时,新建表会失败,启动BN节点预计15分钟左右。
  • 扩缩容期间,实时写入和查询不受影响。

1.3. 用户告知

环境检查步骤一定要仔细检查,避免online影响扩缩容。

2. 问题描述

当实例遇到存储瓶颈或性能瓶颈时,对实例进行ECU扩容。

当需要释放部分资源并保留库时,对实例进行ECU缩容。

3. 解决方案

3.1. 环境检查

查看AnalyticDB产品的版本

  1. 登录ads_ag容器,切换到admin用户,执行以下命令,登录ads_meta数据库。
    mysql -h${ads_meta_host} -P${ads_meta_port} -u${ads_meta_user} -p${ads_meta_password} -D${ads_meta_name}
  2. 执行以下SQL语句,查看AnalyticDB产品的版本。
    select * from resource_group where table_schema='[$DB_Name]'\G
    说明:[$DB_Name]为扩缩容的数据库名。
    系统显示类似如下。

查看库的集群名和ID

执行以下SQL语句,查看库的集群名和ID。

selelct cluster_name,id from schemata where schemata_name='[$Table_Schema]'

系统显示类似如下。

停止数据上线

默认使用方法一:集群级别停止数据上线方法二:库级别停止数据上线适用于库较多的项目,避免单库变更影响所有库的数据上线。

方法一:集群级别停止数据上线

登录Garuda Console,依次选择配置管理>高级,找到global/taskmanager/config,将submitOnlineTaskDisabled修改为true。

方法二:库级别停止数据上线
  1. 登录天基控制台,在左侧Project框中搜索ads,单击ads-A-XXXXXX集群右侧的Dashboard
  2. 在集群Dashboard页面找到集群资源模块,在name列过滤ads_meta,在Type列过滤db,在Result中选择显示更多,查看ads_meta数据库的信息。
  3. 登录ads_meta数据库,执行以下SQL语句,插入数据。
    replace into db_resource_config
    values('[$Cluster_Name]','[$DB_Name]','dbDataOperationDisabled','[$DB_ID]','true', now(), now());
    说明
    • [$Cluster_Name]为集群名。
    • [$DB_ID]为数据库ID。

检查ads_meta库是否存在RUNNING的online任务

执行以下SQL语句,检查ads_meta库是否存在RUNNING的online任务。确认没有为RUNNING状态的online任务,再进行扩缩容操作。

select table_schema,
       table_name,
       data_version,
       state,
       create_time,
       error_msg
from table_data_request
where table_schema='[$DB_Name]'
  and state='RUNNING'
order by create_time desc
limit 20;

数据一致性检查

  1. 登录Garuda Console,选择配置管理>高级,在dbmg/service目录下存在2个节点,依次单击节点,查看节点记录信息,节点记录信息中存在master为true的主rm,通过主rm的IP登录主rm机器。
  2. 执行以下命令,确认返回为ok。
    curl -d "sql=ALTER SYSTEM CHECK DATA IN DATABASE [$DB_Name] PROPERTIES(databaseId=[$DB_ID])" [$Rm_IP]:17000/api/command
    说明:[$Rm_IP]为主rm的IP。

3.2. 实施步骤

在主rm上操作扩缩容

登录主rm,执行以下命令,进行扩缩容操作。

curl -d "sql=ALTER DATABASE [$DB_Name] PROPERTIES (databaseId=[$DB_ID]) ADD RESOURCE OPTIONS(resourceType='ecu',ecu_type='[$ECU_Type]',ecu_count=[$ECU_Num])" 127.0.0.1:9999/api/command

说明

  • [$ECU_Type]指库当前的ECU类型。
  • [$ECU_Num]指扩缩容的ECU个数。

查看扩缩容进度

登录ads_meta数据库,依次执行以下SQL语句,查看扩缩容进度,确认RUNNING状态变成SUCCEEDED状态,即为扩缩容成功。

select table_schema,
       request_type,
       resource_count,
       state,
       create_time
from resource_request
order by create_time desc
limit 10;
select table_schema,
       request_type,
       state,
       create_time
from sys_data_request
order by create_time desc
limit 10;

扩缩容成功后打开上线开关

说明:打开上线开关,请根据关闭的方式选择。

  1. 登录Garuda Console,打开集群级别的上线开关,依次单击配置管理>高级,找到global/taskmanager/config,将submitOnlineTaskDisabled修改为false。
  2. 登录ads_meta数据库,执行以下SQL语句,打开库级别的上线开关。
    replace into db_resource_config
    values('[$Cluster_Name]','[$DB_Name]','dbDataOperationDisabled','[$DB_ID]','false', now(), now());

3.3. 结果验证

  1. 在DMS控制台上确认ECU的类型和ECU个数符合预期。
  2. 登录RMUI控制台,确认CN节点数量符合预期。
    注意:RMUI控制台的登录地址为http://[$Gallardo_IP]:8315/index,其中[$Gallardo_IP]为gallardo_ag容器的IP地址。
  3. 登录Garuda Console,依次单击配置管理>高级,找到lnmg/[$DB_Name]/service,确认节点数量符合预期。

4. 回滚方案

登录主rm,执行以下命令,根据实际情况指定扩缩容前的ECU总数量。

curl -d "sql=ALTER DATABASE [$DB_Name] PROPERTIES (databaseId=[$DB_ID]) ADD RESOURCE OPTIONS(resourceType='ecu',ecu_type='[$ECU_Type]',ecu_count=[$ECU_Num])" 127.0.0.1:9999/api/command