集群扩容
功能介绍
集群扩容是指通过向现有集群中新增节点,来提升集群的计算能力和存储容量。当您的业务数据量增长或并发查询需求增加,现有集群资源无法满足业务需要时,可以通过扩容操作横向扩展集群的处理能力。
集群扩容的整体流程如下所示:
- 添加节点:向集群中新增DN节点,扩展计算和存储资源。
- 数据重分布:将原有数据按新节点数重新分布,确保数据均匀分布在所有节点上。根据配置不同,数据重分布可以在节点添加完成后自动执行(自动重分布),也可以由用户手动触发。
扩容前建议
如果您是因集群存储容量不足而扩容,建议您在扩容前先执行VACUUM命令清理和回收存储空间。在DWS中,执行DELETE等操作删除数据后,被删除数据占用的磁盘空间可能不会立即释放,形成脏数据(Dead Tuples),导致磁盘空间浪费。
操作建议:先执行VACUUM回收空间,如果回收后已使用存储容量仍然过高,再进行扩容。VACUUM的语法请参见《SQL语法参考》中的VACUUM章节。
扩容方式
DWS支持在线扩容和离线扩容两种方式,详情请参见表1。
| 扩容方式 | 说明 | 适用场景 |
|---|---|---|
| 在线扩容 | 扩容过程中集群保持可用状态,支持增删改查及部分DDL操作,仅在数据重分布阶段短暂阻塞写操作。 在线扩容在以下集群版本默认打开,范围之外的其它版本在线扩容默认关闭:
| 业务不可中断的生产环境。 |
| 离线扩容 | 扩容过程中集群需重启并进入“不可用”状态,数据重分布期间会长时间阻塞写操作。扩容过程中集群会自动重启,因此集群会有一段时间变为“不可用”状态,重启成功后集群恢复到“可用”状态。然后在扩容结束阶段,如果用户选择了自动重分布,系统会将集群中用户数据在全部节点重新动态分布,否则需要用户自主开始数据重分布。 | 可接受短暂停机的维护窗口期。 |
扩容对系统的影响
扩容操作对系统的影响如下所示。
离线扩容的影响
- 集群重启:离线扩容过程中,集群会自动重启,因此集群会有一段时间变为“不可用”状态,重启成功后恢复到“可用”状态。然后在扩容结束阶段,如果用户选择了自动重分布,系统会将集群中用户数据在全部节点重新动态分布,否则需要用户自主开始数据重分布。
- 业务中断:离线扩容过程中,应停止所有业务或仅运行少量查询语句。表重分布期间会对表加共享锁,所有插入、更新、删除操作和表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空闲节点,在扩容时选择使用空闲节点扩容(在反亲和部署模式下,使用空闲节点扩容的节点数量只能是安全环的整数倍)。如果没有,需单击“添加空闲节点”添加,详情请参见添加节点。
约束与限制
计费与规格约束
- 包年/包月计费模式的集群,新增节点也按包年/包月模式计费。
- 存算一体集群扩容时使用与当前集群相同的存储规格。
- 如果创建的是BMS集群,可联系技术支持人员开启跨规格扩容的白名单,开启后扩容界面会显示“资源规格”,可以进行跨规格扩容。
- 如果子网IP数量不足,允许执行跨子网扩容操作。
操作风险提示
- 离线扩容期间集群将变为只读状态,请谨慎操作。
- 扩容期间集群会有闪断,请谨慎操作。
- 建议在开始扩容操作之前创建手动快照,以保证数据安全。如何创建快照请参见备份DWS集群。
- 单击“确认”时会触发检查项的检查,若不通过会弹窗提示,用户按提示解决后可重试,详情请参见扩容检查不通过怎么办?
- 大规模集群扩容时建议关闭自动重分布,有利于扩容阶段失败重试,从而增加可靠性。扩容完成后,再手动执行集群重分布操作,保证重分布阶段也可进行多次失败重试。
扩容集群
- 登录DWS管理控制台。
- 在左侧导航栏选择“集群 > 集群列表”。默认显示用户所有的集群列表。
- 在集群列表中,在指定集群所在行的“操作”列,选择“更多 > 节点变更 > 扩容”。
- 弹出右边窗口显示扩容页面,页面将显示当前资源详情、扩容配置和配置确认模块。
在扩容开始前如果集群满足巡检条件,页面会显示巡检模块,单击“开始巡检”先完成一次巡检(如果需要终止巡检任务可单击“终止任务”),巡检中会显示巡检进度,用户需保证巡检通过,通过后可单击“下一步”进行变更操作,详情请参见查看巡检。
- 如果创建的是BMS集群,可联系技术支持人员开启跨规格扩容的白名单,开启后扩容界面会显示“资源规格”,可以进行跨规格扩容。
- 当集群为包年/包月计费模式时,界面将显示计费模式的“剩余时间”和“到期时间”。
- 如果原子网IP不够,可以跨子网扩容。
- 用户可参考当前资源详情模块信息在扩容配置栏配置扩容相关信息。
表2 扩容配置参数说明 参数名称
参数描述
注意事项
扩容的数据节点数
ECS集群自动默认为集群空闲的节点数,如果需要新增空闲节点可参见添加节点。BMS集群支持手动选择扩容节点数,需小于或等于集群空闲节点数。
- 扩容操作增加的是DN节点,如果需要增加CN节点可参见增删DWS集群CN节点。
- 扩容后的节点数量,在原节点数量的基础上,须至少增加3个节点,最多可增加的节点个数为节点剩余配额的最大值。并且,此处设置的扩容增加节点数量不能超过256个节点。
- 多AZ集群仅支持扩容个数为3的整数倍。
扩容到逻辑集群/计算组
集群为逻辑集群/计算组时显示该参数,下拉框选择需要扩容到的逻辑集群/计算组,只能扩容到读写逻辑集群/计算组。
如果需要扩容到新逻辑集群/计算组,单击“扩容到新逻辑集群”或“扩容到新计算组”,界面自动变更为添加逻辑集群/计算组界面。
在线扩容
默认开启。在线扩容过程中,支持数据库增删改查及部分DDL语法,其余不支持的语法会出现报错。
-
查杀阻塞作业
开启在线扩容后可设置。开启后,在线扩容过程中遇到阻塞情况时,将在等待指定时间后自动查杀阻塞扩容的后台作业。
查杀阻塞作业仅8.2.1.100及以上集群版本支持。
查杀阻塞作业等待时间(秒)
查杀阻塞作业开启后生效。在线扩容过程中设置查杀阻塞作业的等待时间,超时后将查杀阻塞扩容的后台作业。取值范围:30~1200的整数。
查杀阻塞作业开启后显示该参数。
- 在重分布配置栏配置重分布相关信息。
表3 重分布配置参数说明 参数名称
参数描述
自动重分布
默认开启。自动重分布开启,扩容阶段结束后将立即执行数据重分布;如果选择关闭此功能则只进行扩容添加节点,需在“更多>节点变更>重分布”中选择执行数据重分布。
重分布并发配置
自动重分布开启,支持设置并发数量。可配置并发数在1~200之间,默认值为4。
重分布模式
可选择“在线模式”和“离线模式”,默认为“在线模式”。在线模式下重分布期间可执行增删改查操作(性能有影响);离线模式下重分布期间集群只读。
- 确认无误后,勾选“我已知晓变更可能存在的风险,同意进行变更”,单击“提交”。
- 如果是从集群外部扩容到已有的逻辑集群,会弹出提示窗显示扩容前后的数据分布信息(包括扩容前后的DN节点个数、bucket桶个数、bucket倾斜率和bucket桶变化情况),其中bucket桶变化情况指扩容后bucket总数可能增加,需要重新进行数据重分布,以实现数据分布更加均匀,从而提升数据库性能。确认后单击“确定”。
- 提交扩容申请后,集群的“任务信息”显示为“节点扩容”,扩容需要时间请耐心等待。
- 扩容过程中,集群会自动重启,因此会有一段时间“集群状态”显示为“不可用”,重启成功后“集群状态”会变成“可用”。
- 扩容结束后,集群将重新分布数据,重分布过程中会存在一段时间,“集群状态”为“只读”。
- 只有“集群状态”显示为“可用”且“任务信息”不再有“节点扩容”的状态,才表示扩容成功,用户可以开始使用集群。
- 如果集群的“任务信息”显示为“扩容失败”,表示集群扩容失败。
查看扩容详情
- 登录DWS管理控制台。
- 在左导航栏选择“集群 > 集群列表”,默认显示用户所有的集群列表。
- 集群列表中,在指定集群所在行的“任务信息”列,单击“查看详情”。
- 进入“扩容详情”页面,用户可查看集群此时的扩容状态。 图1 查看扩容详情