GaussDB-节点扩容

GaussDB-节点扩容

操作场景

随着业务的增长,数据库在运行性能及存储上逐渐会达到瓶颈。此时,需要通过增加节点来提升集群的性能及存储能力。GaussDB分布式实例支持节点扩容操作。

扩容方案

表1 扩容方案

部署形态

底层资源类型

扩容方案

说明

金融版(标准型)

BMS,ECS

初始形态:9节点,部署架构图请参考《产品介绍》中的“部署方案”章节。

每次扩容固定新增节点个数为8的倍数,不扩容仲裁AZ内的ETCD节点。最终一致性策略下分片最大可扩容至128分片,节点最大扩容到257;强一致性策略下分片最多可到32分片,节点最大扩容到65。

  • 扩容是指分片扩容,扩容的节点仅包含CN、DN ,不含有其他组件。
  • 实例扩容分两个阶段:增加节点阶段和数据重分布阶段。
    • 增加节点阶段会有锁实例的时间窗,该时间窗(分钟级)内阻塞DDL和DCL操作;但在整个加节点阶段,用户的DML操作可以正常进行。
    • 重分布过程会占用部分IO,且不支持下列SQL语句:CREATE DATABASE/ALTER DATABASE/ALTER DATABASE SET/CREATE TABLESPACE/DROP TABLESPACE/ALTER TABLESPACE

企业版

BMS,ECS

初始形态:3节点,部署架构图请参考《产品介绍》中的“部署方案”章节。

每次扩容固定新增节点个数为3的倍数。最终一致性策略下分片最多可扩容到126分片,节点最大扩容到126;强一致性策略下分片最多可到30分片,节点最大扩容到30。

金融版(数据计算型)

BMS

初始形态:5节点,部署架构图请参考《产品介绍》中的“部署方案”章节。

每次扩容固定新增节点个数为4的倍数,不扩容仲裁AZ内的ETCD节点。最终一致性策略下分片最多可到128分片,节点最大扩容到129;强一致性策略下分片最多可到32分片,节点最大扩容到33。

金融版(数据计算型)为例:

扩容前实例形态:

扩容后实例形态:

数据重分布示意如下:

图1 数据重分布

注意事项

  • 金融版(标准型):每次支持扩容的节点个数为8的整数倍,最终一致性策略下分片最大可扩容至128分片,节点最大扩容到257;强一致性策略下分片最多可到32分片,节点最大扩容到65。
  • 企业版:每次支持扩容节点的个数为3的整数倍,最终一致性策略下分片最多可到126分片,节点最大扩容到126;强一致性策略下分片最多可到30分片,节点最大扩容到30。
  • 金融版(标准型)的容灾形态:每次支持扩容节点的个数为4的整数倍,最终一致性策略下分片最多可到128分片,节点最大扩容到128;强一致性策略下分片最多可到32分片,节点最大扩容到32。
  • 金融版(数据计算型):每次支持扩容节点的个数为4的整数倍,最终一致性策略下分片最多可到128分片,节点最大扩容到129;强一致性策略下分片最多可到32分片,节点最大扩容到33。
  • 金融版(数据计算型)的容灾形态:每次支持扩容节点的个数为4的整数倍,最终一致性策略下分片最多可到128分片,节点最大扩容到64;强一致性策略下分片最多可到32分片,节点最大扩容到16。

    一致性类型可以在实例基本信息页的“数据库信息”处查看。

  • 扩容是指分片扩容,扩容的节点仅包含CN、DN,不含有其他组件。
  • 扩容以节点组为单位,扩容节点的组件分布形态与扩容前实例分布规律相同。
  • 主备版部署模式暂时不支持扩容。
  • 存在故障节点的实例不允许扩容。
  • 实例扩容过程中会有锁表操作,可能会阻塞业务,属于高危操作。请选择在业务低峰期进行该操作。
  • 实例扩容分两个阶段:增加节点阶段和数据重分布阶段。
    • 增加节点阶段会有锁实例的时间窗,该时间窗(分钟级)内阻塞DDL和DCL操作,但在整个加节点阶段,用户的DML操作可以正常进行。
    • 重分布过程会占用部分IO,且不支持下列SQL语句:create database/alter database/alter database set/create tablespace/drop tablespace/alter tablespace
  • 扩容新增CN与DN分片数量与当前集群CN的max_wal_senders参数值有关,建议(新增CN+DN分片数)/(已有CN数量)向上取整后的数值小于或等于max_wal_senders参数值的一半,若大于该取值可能会造成扩容失败。参数查看或修改请参考修改公共参数
  • 扩容前各个DN节点均需满足如下磁盘空间约束:
    • DN节点剩余可用空间需大于DN节点的最大单表空间。
    • DN节点的剩余空间 = 磁盘总大小 * 只读阈值 - 磁盘已使用大小,DN节点的最大单表空间(单位:字节)可通过遍历每个库执行如下语句查询并取最大值。具体判断方法请参考《云数据库 GaussDB 24.1.30 维护指南(for 华为云Stack 8.3.1)》中的“运维指南 > 其他运维操作 > 查询DN剩余空间和最大表空间”。
      select pg_total_relation_size(oid) as size from pg_class where relkind ='r' order by size DESC limit 1;
       
  • ECS资源类型的实例预检查功能依赖8.2.0以上的底座。

扩容参数确认

  • redis_parallel_jobs:表示数据重分布过程的并发执行任务个数,允许设置1~8,默认值为1表示非并发执行方式,推荐并发任务数为4。参考redis_resource_level资源百分比合理设置并发度。
  • redis_resource_level:表示数据重分布过程允许使用的IO资源百分比。
    • l:允许占用10%资源。
    • m:允许占用30%资源。
    • h:允许占用50%资源。
    • f:允许占用100%资源。

    如果redis_parallel_jobs的值设置过大,可用系统资源不足以满足并发任务个数,则redis_parallel_jobs的值将不会生效。

    重分布参数redis_resource_level和redis_parallel_jobs可在扩容过程前或扩容过程中动态调整,扩容结束后恢复为默认值。

    参数详细内容请参考《云数据库 GaussDB 24.1.30 维护指南(for 华为云Stack 8.3.1)》中的“云数据库 GaussDB 8.102.0 分布式工具参考(for 华为云Stack 8.3.1) > 系统内部调用的工具 > gs_expand”。

    参数修改请参考修改扩容重分布参数

  • redis_join_tables:多表扩容模式,具有join关系的用户表建议分为一组进行扩容,否则可能出现扩容后SQL性能下降的情况。使用多表扩容模式注意事项如下:
    • 需要为属于一个group的表预留足够的磁盘空间,即group中所有表(表+索引)总和的1倍;考虑到资源有限,逐个group进行重分布,因此需要预留最大group大小1倍即可。
    • 多表扩容需要配合写报错模式和业务快速失败模式进行,需要用户业务配置有连接级重试机制,否则不允许使用多表扩容。写报错模式和业务快速失败模式默认为true,分别对应扩容参数列表中的write_error_mode和enable_cancel。

      写报错模式开启后扩容期间用户写业务会有ERROR级报错,而不是在锁队列等待。持续时长与扩容参数last_catchup_threshold参数有关,默认值5秒。

      切换元数据影响时长增加:期间阻塞相关表所有业务,耗时与group中表数量有关,通常采用cancel模式拿锁加切换元数据,单表2秒,最长10秒(最多5张表);最坏场景:(lockwait_timeout + 2)*group中表数量,lockwait_timeout默认4s。

    • 连接数据库,执行以下语句查询是否涉及join语句。
      select n_calls,query from dbe_perf.statement where query ilike '%join%' and user_name!='rdsAdmin' and query not like '% pg_catalog.%'  order by n_calls desc;
       

扩容前检查项

  • 进入扩容页面会自动检查以下内容:
    • 实例中各节点状态均正常。
    • 扩容要求整个实例没有被锁定。
    • 新增主机和现有实例之间网络连接正常。
    • 扩容前需保证实例所有CN可连接。
  • ECS形态可以在扩容页面进行资源预检查。
    NOTICE:

    预检查仅可以检查CPU和内存。

  • 以下检查项需要手动进行:
    • 扩容前检查数据表读写正常。

      业务可以正常执行。

    • 扩容前评估数据量预估扩容重分布耗时,基线如下:

      前提条件:实例数据节点读带宽500MB/s、写带宽800MB/s,万兆网络,业务负载低峰且不做资源管控(即redis_resource_level参数设置为“f”,参数查看方法参考修改实例参数

      基线:单DN并且1TB数据下,分片数量翻倍扩容的情况下,3小时完成。根据此原则评估自己的扩容场景的耗时。

    • 扩容前需要联系运维在运维面进行巡检。具体操作请参考《云数据库 GaussDB 24.1.30 维护指南(for 华为云Stack 8.3.1)》中的“运维指南 > 巡检指南”。
    • 扩容前需手动检查底层资源是否满足需求。

操作步骤

  1. 登录管理控制台
  2. “实例管理”页面,选择指定的实例,单击实例的名称,进入基本信息”页面。
  3. 数据库信息”模块的“节点数量”后,单击“添加”,进入“节点扩容”页面。
  4. 选择节点数量,确认“实例扩容过程中会有锁表操作,可能会阻塞业务,属于高危操作。请选择在业务低峰期进行该操作。”风险提示信息,并勾选“我已确认阅读上述风险提示”。
  5. 可以在单击“下一步”之前,单击“预检查”按钮,进行资源预检查。检查资源包括CPU资源、内存资源。BMS实例暂不支持预检查功能,不显示“预检查”按钮。

     

    NOTICE:

    预检查仅可以检查CPU和内存。

     

     

  6. 单击“下一步”,进入“规格确认”界面。
  7. 确认无误后,单击“提交”,进行扩容。

     

    数据库实例状态将显示为“添加节点中”,则说明扩容指令下发成功。

    可以在实例详情页面,通过查看“节点数量”确定是否扩容成功。

     

 
posted @ 2024-09-19 10:39  jerrywang1983  阅读(172)  评论(0)    收藏  举报