
# 特性概述
#### 功能描述
随着集群部署时间及业务的增长，数据库在运行性能及存储上逐渐会达到瓶颈，需要通过增加主机来提升集群的性能及存储能力，实现业务的平稳运行。GaussDB提供了gs_expand工具进行主机扩容和数据重分布的操作。
#### 用户场景
当集群性能及存储能力随业务增长达到瓶颈时，需新增主机以提升集群性能与存储容量，确保业务持续稳定运行。离线扩容会阻塞业务流程，因此需通过在线扩容保障扩容重分布期间业务正常运行。
#### 规格约束
- 集群扩容时，请勿修改$PGHOST目录下的expandimplolap_step/expandimplolap_step.dat文件，否则会影响扩容阶段和重分布阶段的流程重新执行。
- 扩容的DN参数配置和分配的物理资源需与现有节点的DN保持一致；当新扩容的服务器资源更多时，可以配置更多DN数量。
- 新增主机机器至少满足集群的安装要求，新集群整体性能取决于集群中配置最低的机器。约束条件：
  - 两副本集群新增主机数大于等于2。
  
  - 其它类型集群新增主机数大于等于3。
  
  - 新增主机的locale、encoding等与原有主机保持一致。
  
  - 新主机完成集群安装路径和用户组规划。
   
- 新增主机的操作系统与已有集群主机操作系统处于同一个大版本，支持与小版本混搭。
- 若新增主机硬件规格（内存/硬盘）低于现有集群，需要逐步将性能较低的服务器替换为性能更高的服务器以满足集群的性能要求。
- 在前一次扩容结束后才能再次扩容。例如，扩容过程中由于断电等原因导致扩容未完成时，不允许再次进行扩容，需要先修复结束前一次扩容。
- 若存在第三方插件，扩容后需手动COPY相关依赖到新扩节点。
- 异构扩容（扩容服务器与现有集群服务器的硬件规格不一致）时，同批次扩容服务器的软硬件规格需保持一致。
- 数据库版本与OM版本不一致（数据库代码与OM代码不来自同一软件包）时，不支持扩容操作。
- 扩容资源使用情况：
  - 极限性能场景（每批bucket数量为1024，每次bucket上线最多1024）不控制I/O资源使用。
  
  - 在线场景（默认参数配置，每批bucket数量64，每次bucket上线最多64），磁盘I/O占用最大值的20%。
  
  - I/O及追增Xlog日志占用少量磁盘空间，受保留Xlog数量参数影响。
  
  - 存在CBI索引时，在线索引类型转换可能出现影响业务性能及抢占资源等现象，将继承在线建索引规格约束。
   
 
#### 技术架构
在线扩容过程包含两个核心阶段：集群加节点阶段和数据重分布阶段。
- 集群加节点阶段：对新加入的DN或CN节点进行基础元信息的同步。
- 数据重分布阶段：将数据从旧集群迁移至新集群。
图1技术架构   
![](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/figure/zh-cn_image_0000002620640361.png "点击放大")
