# 集群扩容
#### 功能介绍
集群扩容是指通过向现有集群中新增节点，来提升集群的计算能力和存储容量。当您的业务数据量增长或并发查询需求增加，现有集群资源无法满足业务需要时，可以通过扩容操作横向扩展集群的处理能力。
集群扩容的整体流程如下所示：
1. **添加节点**：向集群中新增DN节点，扩展计算和存储资源。
2. **数据重分布**：将原有数据按新节点数重新分布，确保数据均匀分布在所有节点上。根据配置不同，数据重分布可以在节点添加完成后自动执行（自动重分布），也可以由用户手动触发。
 
#### 扩容前建议
如果您是因集群存储容量不足而扩容，建议您在扩容前先执行VACUUM命令清理和回收存储空间。在DWS中，执行DELETE等操作删除数据后，被删除数据占用的磁盘空间可能不会立即释放，形成脏数据（Dead Tuples），导致磁盘空间浪费。
**操作建议** ：先执行VACUUM回收空间，如果回收后已使用存储容量仍然过高，再进行扩容。VACUUM的语法请参见《SQL语法参考》中的[VACUUM](https://support.huaweicloud.com/sqlreference-dws/dws_06_0226.html)章节。
#### 扩容方式
DWS支持在线扩容和离线扩容两种方式，详情请参见[表1]。
 表1扩容方式说明 
| 扩容方式 | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | 适用场景             |
|:---|:---|:---|
| 在线扩容  | 扩容过程中集群保持可用状态，支持增删改查及部分DDL操作，仅在数据重分布阶段短暂阻塞写操作。 在线扩容在以下集群版本默认打开，范围之外的其它版本在线扩容默认关闭： - 存算一体形态8.1.3.330及以上的813集群版本。  - 存算一体形态8.3.0.100及以上的830集群版本。  - 存算一体形态9.1.0.100及以上的910集群版本。  - 存算分离形态9.1.0及以上的集群版本。   | 业务不可中断的生产环境。    |
| 离线扩容 | 扩容过程中集群需重启并进入**"不可用"** 状态，数据重分布期间会长时间阻塞写操作。扩容过程中集群会自动重启，因此集群会有一段时间变为"不可用"状态，重启成功后集群恢复到**"可用"**状态。然后在扩容结束阶段，如果用户选择了自动重分布，系统会将集群中用户数据在全部节点重新动态分布，否则需要用户自主开始数据重分布。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 可接受短暂停机的维护窗口期。 |
   
#### 扩容对系统的影响
扩容操作对系统的影响如下所示。
#### 离线扩容的影响
- **集群重启** ：离线扩容过程中，集群会自动重启，因此集群会有一段时间变为**"不可用"** 状态，重启成功后恢复到**"可用"**状态。然后在扩容结束阶段，如果用户选择了自动重分布，系统会将集群中用户数据在全部节点重新动态分布，否则需要用户自主开始数据重分布。
- **业务中断** ：离线扩容过程中，**应停止所有业务或仅运行少量查询语句**。表重分布期间会对表加共享锁，所有插入、更新、删除操作和表DDL操作都会长时间阻塞，可能出现等锁超时的情况。一旦表重分布完成，用户可以正常访问该表。
- **长查询限制** ：在重分布执行过程中，**应避免执行超过20分钟的查询**（重分布执行时申请写锁的默认等待时间为20分钟），否则可能导致重分布因等待加锁超时而失败。
 
#### 在线扩容的影响
- **节点添加期间** ：会执行锁集群操作，锁集群时会进行数据库对象检查。为保证锁集群成功，在节点添加期间**不要执行 CREATE/DROP DATABASE 和 CREATE/DROP TABLESPACE 语句**。

- **数据重分布期间** ：可以对该表执行插入、更新、删除等操作，但重分布过程仍然会**短暂阻塞数据更新操作**，影响语句执行性能。
- **资源消耗** ：扩容重分布过程会消耗大量的CPU和I/O资源，对作业性能影响较大，**建议在停止业务或业务轻载的情况下执行扩容重分布**。
- **分段重分布策略**：可考虑分段扩容重分布策略，在系统负载低时采用高并发进行重分布，在系统负载高时停止重分布或采用低并发重分布。
 
#### 通用影响
- **功能限制** ：正在扩容的集群将**禁用**以下功能：重启集群、停止集群、启动集群、规格变更、增删CN、扩容集群、缩容集群、创建快照、重置数据库管理员密码。
- **临时表失效** ：扩容前，需关闭创建了临时表的客户端连接。扩容过程中及扩容成功之前创建的临时表将会失效，操作临时表也会失败。**扩容后新创建的临时表不受影响**。

- **UNION ALL查询报错** ：扩容过程中，若两张表分布在不同的Node Group，且两表分布列指定的COLLATE 不一致，UNION ALL场景触发数据重分布时可能引发查询报错。**解决方法**：显式指定两侧的 COLLATE，保证两侧COLLATE 一致。

- **快照变化**：扩容后创建的新快照将包含扩容节点上的数据。
- **扩容失败回滚** ：如果集群扩容失败，数据库会在后台自动执行扩容回滚操作，集群会恢复到扩容前的节点个数。
  - 如果回滚成功，集群仍可正常使用，用户可以重新执行扩容操作。如果仍扩容失败，请及时联系技术支持人员。
  
  - 如果因异常原因回滚失败，集群可能变为**"不可用"** 状态，此时无法再执行扩容或重启集群操作，**请及时联系技术支持人员**。
   
 
#### 存算分离扩容对Bucket调整的影响
在存算分离扩容场景下，如果新集群的Bucket数量不满足条件：**每个DN分配的Bucket数量在\[3, 20\]之间**，系统会自动触发调整Bucket数量的扩容。Bucket数量可通过GUC参数table_buckets查看。
- 此Bucket扩容目前仅支持离线模式，触发条件和执行过程由系统自动判断和完成。
- 触发过程中集群会重启，关闭所有连接，重启会花费数分钟。
- 重启完毕后，数据库**可读但不可写**，直到数据重分布结束。
**示例**：当前节点Bucket数量为32个，逻辑集群DN数量为9个，要扩容至15个DN。由于32/15=2（向下取整），每个DN分配2个Bucket，不满足\[3, 20\]的范围要求，因此会触发Bucket数量的扩容。
#### 前提条件
- 集群必须处于**"可用"** **、** **"只读"** 或**"非均衡"**状态才可执行扩容。
- 计划扩容的节点数须**小于或等于用户节点数的剩余配额**，否则系统无法进行扩容操作。
- IAM子账号进行扩容操作前，需确保已拥有**VPC、EVS/BMS操作权限**。
- 基于可靠性考虑，需提前准备好扩容的ECS空闲节点，在扩容时选择使用空闲节点扩容（在反亲和部署模式下，使用空闲节点扩容的节点数量只能是安全环的**整数倍** ）。如果没有，需单击**"添加空闲节点"** 添加，详情请参见[添加节点](https://support.huaweicloud.com/mgtg-dws/dws_01_0818.html#ZH-CN_TOPIC_0000002617625151__section1755822564916)。
 
#### 约束与限制
**计费与规格约束**
- 包年/包月计费模式的集群，新增节点也按**包年/包月**模式计费。
- 存算一体集群扩容时使用与当前集群相同的存储规格。
- 如果创建的是BMS集群，可联系技术支持人员开启跨规格扩容的白名单，开启后扩容界面会显示**"资源规格"**，可以进行跨规格扩容。
- 如果子网IP数量不足，允许执行**跨子网扩容**操作。
**操作风险提示**
- 离线扩容期间集群将变为**只读状态**，请谨慎操作。
- 扩容期间集群会有**闪断**，请谨慎操作。
- **建议在开始扩容操作之前创建手动快照** ，以保证数据安全。如何创建快照请参见[备份DWS集群](https://support.huaweicloud.com/mgtg-dws/dws_01_1019.html)。
- 单击**"确认"** 时会触发检查项的检查，若不通过会弹窗提示，用户按提示解决后可重试，详情请参见[扩容检查不通过怎么办？](https://support.huaweicloud.com/dws_faq/dws_03_2139.html)
- **大规模集群扩容时建议关闭自动重分布**，有利于扩容阶段失败重试，从而增加可靠性。扩容完成后，再手动执行集群重分布操作，保证重分布阶段也可进行多次失败重试。
 
 #### 扩容集群
1. [登录DWS管理控制台](https://console.huaweicloud.com/dws)。
2. 在左侧导航栏选择**"集群 \> 集群列表"**。默认显示用户所有的集群列表。
3. 在集群列表中，在指定集群所在行的"操作"列，选择**"更多 \> 节点变更 \> 扩容"**。
4. 弹出右边窗口显示扩容页面，页面将显示**当前资源详情、** **扩容配置** 和**配置确认** 模块。
   
   在扩容开始前如果集群满足巡检条件，页面会显示**巡检** 模块，单击**"开始巡检"** 先完成一次巡检（如果需要终止巡检任务可单击**"终止任务"** ），巡检中会显示巡检进度，用户需保证巡检通过，通过后可单击**"下一步"** 进行变更操作，详情请参见[查看巡检](https://support.huaweicloud.com/mgtg-dws/dws_01_01755.html)。
   - 如果创建的是BMS集群，可联系技术支持人员开启跨规格扩容的白名单，开启后扩容界面会显示**"资源规格"**，可以进行跨规格扩容。
   
   - 当集群为包年/包月计费模式时，界面将显示计费模式的**"剩余时间"** 和**"到期时间"**。
   
   - 如果原子网IP不够，可以跨子网扩容。
   
   
   
   
5. 用户可参考**当前资源详情** 模块信息**在扩容配置** 栏配置扩容相关信息。
   
   表2扩容配置参数说明 
   | 参数名称          | 参数描述                                                                                                                                                                                              | 注意事项                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   |:---|:---|:---|
   | 扩容的数据节点数      | **ECS集群** 自动默认为集群空闲的节点数，如果需要新增空闲节点可参见[添加节点](https://support.huaweicloud.com/mgtg-dws/dws_01_0818.html#ZH-CN_TOPIC_0000002617625151__section1755822564916)。**BMS集群** 支持手动选择扩容节点数，需**小于或等于**集群空闲节点数。 | - 扩容操作增加的是DN节点，如果需要增加CN节点可参见[增删DWS集群CN节点](https://support.huaweicloud.com/mgtg-dws/dws_01_7115.html)。  - 扩容后的节点数量，在原节点数量的基础上，须**至少增加3个节点** ，最多可增加的节点个数为**节点剩余配额的最大值**。并且，此处设置的扩容增加节点数量不能超过256个节点。  - 多AZ集群仅支持扩容个数为3的整数倍。   |
   | 扩容到逻辑集群/计算组  | 集群为**逻辑集群/计算组**时显示该参数，下拉框选择需要扩容到的逻辑集群/计算组，只能扩容到读写逻辑集群/计算组。                                                                                                                                      | 如果需要扩容到新逻辑集群/计算组，单击**"扩容到新逻辑集群"** 或**"扩容到新计算组"** ，界面自动变更为添加逻辑集群/计算组界面**。**                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | 在线扩容         | **默认开** **启**。在线扩容过程中，支持数据库增删改查及部分DDL语法，其余不支持的语法会出现报错。                                                                                                                                            | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | 查杀阻塞作业        | 开启在线扩容后可设置。开启后，在线扩容过程中遇到阻塞情况时，将在等待指定时间后自动查杀阻塞扩容的后台作业。                                                                                                                                             | 查杀阻塞作业仅**8.2.1.100及以上集群版本** **支持**。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | 查杀阻塞作业等待时间（秒） | 查杀阻塞作业开启后生效。在线扩容过程中设置查杀阻塞作业的等待时间，超时后将查杀阻塞扩容的后台作业。取值范围：**30\~1200**的整数。                                                                                                                           | 查杀阻塞作业开启后显示该参数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
      
   
   
6. **在重分布** **配置** 栏配置重分布相关信息。
   
   表3重分布配置参数说明 
   | 参数名称   | 参数描述                                                                                   |
   |:---|:---|
   | 自动重分布    | **默认开启** 。自动重分布开启，扩容阶段结束后将立即执行数据重分布；如果选择关闭此功能则只进行扩容添加节点，需在**"更多\>节点变更\>重分布"**中选择执行数据重分布。 |
   | 重分布并发配置 | 自动重分布开启，支持设置并发数量。可配置并发数在1\~200之间，默认值为4。                                                |
   | 重分布模式   | 可选择**"在线模式"** 和"**离线模式"** ，默认为**"在线模式"**。在线模式下重分布期间可执行增删改查操作（性能有影响）；离线模式下重分布期间集群只读。   |
      
   
   
7. 确认无误后，勾选**"我已知晓变更可能存在的风险，同意进行变更"，** 单击**"提交"** 。
   
   - 如果是**从集群外部扩容到已有的逻辑集群** ，会弹出提示窗显示扩容前后的数据分布信息（包括扩容前后的DN节点个数、bucket桶个数、bucket倾斜率和bucket桶变化情况），其中bucket桶变化情况指扩容后bucket总数可能增加，需要重新进行数据重分布，以实现数据分布更加均匀，从而提升数据库性能。确认后单击**"确定"**。
   
   - 提交扩容申请后，集群的"任务信息"显示为**"** **节点扩容** **"**，扩容需要时间请耐心等待。
   
   - 扩容过程中，集群会自动重启，因此会有一段时间"集群状态"显示为"不可用"，重启成功后"集群状态"会变成"可用"。
   
   - 扩容结束后，集群将重新分布数据，重分布过程中会存在一段时间，"集群状态"为**"只读"**。
   
   - 只有"集群状态"显示为**"可用"** 且"任务信息"不再有**"节点扩容"**的状态，才表示扩容成功，用户可以开始使用集群。
   
   - 如果集群的"任务信息"显示为**"扩容失败** **"**，表示集群扩容失败。
   
   
   
   
 
#### 查看扩容详情
1. [登录DWS管理控制台](https://console.huaweicloud.com/dws)。
2. 在左导航栏选择**"集群 \> 集群列表"**，默认显示用户所有的集群列表。
3. 集群列表中，在指定集群所在行的**"任务信息"** 列，单击**"查看详情"**。
4. 进入**"扩容详情"** 页面，用户可查看集群此时的扩容状态。
   
   图1查看扩容详情   
   ![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002648165216.png "点击放大")
   
   
 
