本文将介绍PolarDB-X 1.0平滑扩容的基本原理。

当逻辑库对应的底层存储已经达到物理瓶颈时,需要对底层存储进行水平扩展。例如当磁盘余量接近30%时,您可以在控制台上通过平滑扩容来改善。

平滑扩容是一种在线水平扩容方式,通过把原有的分库平滑迁移到新添加的RDS/PolarDB MySQL实例上,增加RDS/PolarDB MySQL实例的数量来提升总体数据存储容量,从而降低单个RDS/PolarDB MySQL的处理压力。

扩容示意图下:2021060914
PolarDB-X 1.0扩容步骤如下:
  1. 创建扩容计划

    选择新增加RDS/PolarDB MySQL,并选定需要迁移到新RDS/PolarDB MySQL实例上的分库,提交任务后系统自动在目标RDS/PolarDB MySQL上创建数据库和账号,并提交任务进行数据迁移同步。

  2. 全量迁移

    系统选择当前时间之前的一个时间点,将这个时间点之前的数据进行全量的数据复制迁移。

  3. 增量数据同步

    完成全量迁移后,基于全量迁移开始之前时间点的增量变更日志进行增量同步,最终原分库和目标分库数据实时同步。

  4. 数据校验

    增量达到准实时同步后,系统自动做全数据校验,并且订正因为同步延迟造成的不一致数据。

  5. 应用停写和路由切换

    校验完成后,并且增量依然维持准实时同步,业务选定时间进行切换,为确保数据严格一致,建议应用停服(也可以不停,但可能面临同一条数据高并发写入覆盖问题),引擎层进行分库规则的路由切换,将后续流量转向新库,切换过程秒级完成。

整个扩容过程对上层的业务正常服务几乎没有影响(如果RDS/PolarDB MySQL实例规格过小或者压力过大则可能造成部分影响),切换时如果应用不停服,建议操作选择在数据库访问低谷期进行,降低同一条数据并发更新覆盖的概率。