# 集群缩容
#### 功能介绍
集群缩容是指当集群的**计算资源或存储资源超出实际业务需求**时，通过减少集群节点数量来释放多余资源、降低成本的操作。
#### 应用场景
- 业务高峰期已过，集群节点资源长期闲置。
- 业务迁移或缩量后，集群计算/存储资源明显过剩。
- 需要优化集群成本，释放不必要的节点资源。
 
#### 缩容对系统的影响
**缩容是不可逆操作，缩容后节点将被移除、数据将重分布，请务必在操作前仔细阅读以下影响说明，并确保已做好数据备份：**
- 缩容前，需关闭创建了临时表（Temporary Table）的客户端连接。因为在缩容过程中及缩容完成前，已创建的临时表将失效，对临时表的操作也会失败。缩容完成后新建的临时表不受影响。
- 执行缩容操作后，集群会执行一次自动快照，快照创建成功后才会进行集群缩容，若您不需要自动创建快照，可在缩容界面取消自动备份功能。
- 缩容前，需确保数据倾斜率不超过10%，但对于50G以上的大表，建议倾斜率不要超过20%\~30%。脏页率无硬性指标要求，但过高会影响重分布效率。
- 正在缩容的集群禁用重启集群、扩容集群、创建快照、节点管理、智能运维、负载管理、参数修改、安全设置、日志服务、重置数据库管理员密码和删除集群的功能。
- 离线缩容过程中，应该停止所有业务或运行少量查询语句。表重分布期间会对表加共享锁（Share Lock），所有INSERT、UPDATE、DELETE操作和表DDL操作都会被长时间阻塞，可能会出现等锁超时情况。表重分布完成后方可正常访问。在重分布执行过程中，应当避免执行超过20分钟的查询（重分布执行时申请写锁的默认时间为20分钟）。否则可能导致重分布因等待加锁超时而失败。
- 在线缩容过程中，表重分布期间用户可以对该表执行INSERT、UPDATE、DELETE等操作，但重分布过程仍然会短时间阻塞用户的数据更新操作，影响语句执行性能。缩容重分布过程会消耗大量的CPU和I/O资源，对用户作业性能影响较大，建议在停止业务或业务轻载时执行缩容重分布。
- 在线缩容删除节点的瞬间，如果有DDL语句正在执行（例如创建Schema或Function并发执行），这些DDL可能因为DN不存在而报错，重新执行即可成功。
- 如果集群缩容失败，数据库不会在后台自动执行缩容回滚操作，此时数据库所有运维操作不可用，需要您在管理控制台页面上单击"缩容"重新执行数据库缩容操作。
- 在云原生9.0.2版本缩容场景下，新集群的Bucket（数据桶）数量不满足条件：每个DN分配的Bucket数量在\[3, 20\]之间时，系统会自动触发调整Bucket的缩容。Bucket数量决定了数据分布的粒度，缩容后需确保每个DN分配的Bucket数量在合理范围内。Bucket数量可以通过GUC参数table_buckets查看。
  - Bucket是数据分布的最小逻辑单元，数据按Bucket划分后分布到各DN上。此Bucket缩容目前仅支持离线模式，使用方式与现有缩容相同，触发修改Bucket的缩容过程为系统自动判断和执行。
  
  - 触发过程集群会重启，关闭所有连接，重启会花费数分钟。
  
  - 重启完毕后，数据库可读但不可写，直到数据重分布结束。
   
 
#### 约束与限制
- 缩容按需计费集群仅8.1.1.300及以上集群版本支持，包年/包月集群仅8.2.1及以上集群版本支持。缩容的节点默认是按节点数计费。
- 集群状态需为"可用"状态，不支持"只读"状态，且确保集群没有进行重分布操作。
- 存算一体集群缩容时只支持缩容与当前集群相同的存储规格的节点。
- 集群缩容时需确保节点数量大于3，基础节点不支持缩容操作。
- 集群配置文件已生成，且配置信息与当前集群状态一致。
- 缩容前用户需要确保default_storage_nodegroup参数值为installation，该参数指定当前的默认建表所在的节点组，目前只适用普通表。值为installation时表示默认建表在安装的节点组上。
- 集群按照环（Ring）的方式部署，缩容的最小单元是一个环，比如4个或5个主机组成一个环，这些主机上的DN主节点、备节点和从节点都部署在这个环里。如果当前集群只有一个环时，不支持缩容操作，缩容按钮置灰不可用。
- 待缩容的主机不能包含ETCD组件、GTM组件、CM Server组件。
- 待缩容的节点不能包含CN节点，如果节点上部署了CN，需先执行删除CN操作后再缩容。
- 缩容不支持回滚，但支持重入。若缩容数据重分布失败，不影响已有业务，您可选择合适的时间尽快完成重分布，否则会导致数据长期分布不均匀。
- 重分布前，需要保证对应数据库下的data_redis为重分布预留Schema，不允许用户操作该Schema及其内部表。因为在重分布过程中会使用到data_redis，重分布结束后会删除该Schema，如果其中存在用户表可能导致数据误删。
- 缩容过程不支持gs_cgroup操作（资源组管理工具）。
- 缩容后保留的节点必须有足够的存储空间存放整个集群的数据，否则缩容无法正常进行，执行缩容前需对集群剩余容量进行检查，满足以下条件后方可进行缩容。
  - 所有节点已使用物理磁盘空间均小于80%。
  
  - 所有用户和角色的使用量均小于配额的80%。
  
  - 总数据量缩容后的空间预估要小于80%。
  
  - 所有剩余可用空间均是最大单表大小的1.5倍以上。
   
- 缩容过程中系统将临时关闭"自动剔除故障CN"功能，缩容完成后系统自动重新开启该功能。
 
#### 操作步骤
1. [登录DWS管理控制台](https://console.huaweicloud.com/dws)。
2. 在左侧导航栏选择**"集群 \> 集群列表"**，默认显示用户所有的集群列表。
3. 在集群列表中，在指定集群所在行的**"操作"** 列，选择**"更多 \> 节点变更 \> 缩容"**。
4. 弹出右边窗口显示缩容页面，页面将显示**当前资源详情、** **缩容配置** 和**配置确认** 模块。
   
   在缩容开始前如果集群满足巡检条件，页面会显示**巡检** 模块，单击**"开始巡检"** 先完成一次巡检（如果需要终止巡检任务可单击**"终止任务"** ），巡检中会显示巡检进度，用户需保证巡检通过，通过后可单击**"下一步"** 进行变更操作，详情请参见[查看巡检](https://support.huaweicloud.com/mgtg-dws/dws_01_01755.html)。
   
   
5. 用户可参考**当前资源详情** 模块信息**在缩容配置** 栏配置缩容相关信息。
   
   表1缩容配置参数说明 
   | 参数名称       | 参数描述                                                                                             |
   |:---|:---|
   | 计算组/逻辑集群 | 集群为**逻辑集群/计算组**时显示该参数，选择缩容的逻辑集群/计算组。                                                            |
   | 缩容节点数     | 下拉框选择需要缩容的节点数。                                                                                   |
   | 缩容模式        | 支持**"在线模式"** 和**"离线模式"** ，**"在线缩容"**默认开启。在线缩容过程中，支持数据增删改查及部分DDL语法，其余不支持的语法将会报错，缩容期间可能造成部分业务短暂中断。 |
   | 重分布并发数     | 支持设置重分布并发配置，可配置并发数在1\~200之间，默认值为4。                                                               |
      
   
   
6. 确认**变更后配置** 无误后，勾选**"我已知晓缩容操作可能存在的风险，同意进行缩容"**。
7. 单击**"提交"** ，返回集群列表，集群显示**"缩容中"**，请耐心等待一段时间。
8. （可选）如果**缩容失败** ，用户可选择**"更多 \> 节点变更 \> 重试缩容"** ，弹出窗口确认集群是否按照之前下发的缩容策略重试，确认无误后单击**"是"**。
9. （包周期计费模式）集群在缩容结束后，系统会提示删除空闲节点，用户可单击**"确认"**完成空闲节点删除。按需计费模式的集群缩容完成后系统将在后台自动删除节点，包周期计费模式的集群用户需手动删除节点。
10. （包周期计费模式）页面跳转至删除节点页面，查看资源信息并单击**"提交"**。
11. （包周期计费模式）跳转至资源确认页面，确认退款信息，无误后，单击**"提交"**。
 
