概述
数据表通过分库分表进行水平拆分后,部分过热的数据会占用大部分存储空间与负载压力。
PolarDB-X热点扩容将过热数据单独迁移存放至单独的存储资源RDS实例中,来优化PolarDB-X的存储结构并提升整体数据库执行效率。
示意图
PolarDB-X热点扩容会将原物理分库中的热点数据迁移至新的物理分库中,建议您选择一个新的存储资源RDS实例来存放这些数据,避免对原存储资源RDS实例造成过多读写压力。
使用流程
热点扩容流程分为配置>迁移>切换>清理四个步骤。
步骤一:配置扩容任务信息
1、开启扩容任务
首先在PolarDB-X数据库左侧菜单中单击扩容管理,单击右上角扩容按钮,开始扩容配置。
扩容模式选择热点扩容后,单击下一步。
2、选择目标RDS
选择RDS后,点击下一步
注意:为避免对生产环境产生影响,此步骤建议您选择新的RDS实例存放热点数据。
3.热点映射配置
1)点击添加热点分库,确定后将会在选用的RDS实例中添加热点分库。
2)点击添加表按钮,选择希望进行热点扩容的数据表,并可根据业务形态选择分表映射或分库映射。
- 分表模式:
- 分表模式中,指定热点数据的分库键与分表键,选择上方创建好的热点分库,并自定义新的热点分表来存放即将迁移的热点数据。
热点分表为以逻辑表名开头,中间增加hot标识,后缀为用户自定义,用户可以通过后缀为热点表指定一个有业务含义的名称。
- 分库模式:
- 在分库模式中,指定热点数据的分库键,并选择上方创建的热点分库,即可将指定分库键中的所有数据迁移至选用的热点分库中。
3)点击添加按钮,可为该物理表同时配置多个映射关系。
4)点击下一步进入热点映射预览。
注意:
- 目前热点扩容只支持拆分函数为HASH与UNI_HASH的逻辑表。
- 当前热点扩容只支持数字和字符串类型拆分键。
- 无法将多张不同物理分表中的热点数据绑定到一张热点表中。
- 若热点数据在0库中,则无法进行扩容。
- 无法选择已经存在的热点表进行扩容。
- 已经扩容过的热点数据,无法再次进行扩容。
- 相同分库键下,无法同时配置分库模式与分表模式。
4、非热点映射配置
非热点映射即源库中除了热点数据外,其他普通数据的统称。
PolarDB-X热点扩容会将数据表中的热点数据与非热点数据拆分至两个物理分库中。
为减少对原RDS实例及业务产生的影响,建议选择新的RDS实例来存放非热点数据。在非热点数据配置中,您可以选择一个新的RDS来存放非热点数据。
步骤二: 迁移
新增热点分库后,需要对原物理分库的数据进行迁移。
迁移任务过程不会变更原有数据库中数据,对当前业务无影响。在切换前,可以通过回滚,放弃本次热点扩容操作。
说明:
- 在执行切换前,本次扩容还没有对原数据库中数据产生实质影响,因此在切换前都可以通过回滚来放弃本次扩容。
- 扩容期间需要停止清理原RDS的Binlog文件,可能会导致磁盘空间不足,如果非热点数据仍然要留在原RDS实例上,请务必在原RDS实例上预留充足的磁盘空间。正常情况百分之五十以上为宜。如空间实在无法保证,可以提交工单来扩容RDS存储空间。
- 原RDS实例扩容过程中会产生读压力,请尽量在原RDS低负载时操作。
- 扩容期间请勿在控制台提交DDL任务或通过直接连接PolarDB-X执行DDL语句,否则会导致扩容任务失败。
- 扩容需要保证源库中所有表具有主键,如果没有需要事先添加好。
历史数据和增量数据迁移完成后,迁移任务进度会达到100%,此时可以进行切换或者回滚,放弃本次扩容。
步骤三:切换
切换任务会将读写流量切换到新增的分库上,整个过程会在3~5分钟内完成。在切换过程中,除了会有一到两次闪断,服务不受影响。请在业务低谷期执行切换。
在任务列表中,单击切换按钮并确认。切换过程会生成一个切换任务,并在任务进度中显示。
切换完成后,在任务进度中会显示清理按钮,表示切换任务已经完成。
步骤四:清理
切换完成后,单击清理按钮并确认。此步骤将删除原RDS上被迁移的物理分库。清理任务也是一个异步任务,可以在任务进度中查看执行状态。
清理任务完成后,整个热点扩容过程结束。
热点扩容是通过迁移物理分库的方式实现。同一时间最多支持3个热点键值迁移,当有需求迁移个数超过3个时,可以提交工单,申请增加迁移数目。
注意:
- 清理任务会删除本次扩容后不再使用的数据库,可以考虑备份后再执行此操作。
- 清理操作对数据库有一定压力,请在业务低谷期执行。
限制条件
- 当前热点扩容只支持hash、与uni_hash方式的拆分函数。
- 当前热点扩容只支持数字和字符串类型拆分键。
- 相同的分库键下,不支持继承模式和非继承模式同时存在。
- 为避免UK冲突等风险,多张物理表中的热点数据无法通过热点扩容方式写入到同一张热点表中。
- 扩容的表必须包含主键或者唯一索引。
- 0库中所有的数据目前不允许扩容。