更新时间:2025-09-04 GMT+08:00
通过DRS实现数据库的垂直拆分
方案介绍
当RDS for MySQL实例负载过高时,可以将该实例的一个数据库或表垂直拆分至另外一个单独的实例中。例如:一个RDS for MySQL实例上有数据库db1和db2,随着业务增长,如想要减轻该实例的压力,您可以将数据库db2垂直拆分至另外一个单独的实例中。
- 双写方案是一种常见的数据迁移方案,可保证迁移过程业务在线,同时迁移可回滚,但可能涉及对应用程序的一定程度上的改造以及性能影响。
- 双向同步方案即迁移过程中搭建反向同步链路,保证写入新实例的同时,数据同步到原实例,保证业务可回滚,但涉及到业务中断,需在业务低峰期进行。
本文将以RDS for MySQL源实例和RDS for MySQL目标实例为例,介绍如何通过双写方案和双向同步方案实现垂直拆分。
前提条件
- 已有RDS for MySQL业务实例作为源实例。
- 已准备RDS for MySQL非业务所在的空实例作为目标实例,且目标实例的数据库账号权限与源实例的数据库账号权限一致。
注意事项
由于双向同步方案需要短暂暂停业务,请选择业务低峰期操作以降低对业务的影响。
双写方案
双向同步方案
- 创建迁移任务。
- 查询迁移进度。
- 对比迁移项。
在“迁移对比”信息页面,对源和目标实例的数据库test_db中的数据进行对比分析。更多配置,请参见数据对比。
如果数据一致,则结束数据迁移任务。
- 断开源实例数据库test_db与应用程序的连接,即断开业务连接。
- 登录源实例,在数据库test_db上执行以下命令查看会话信息,确保没有新的会话执行写入操作。
SHOW processlist;
- 创建反向同步任务。
反向同步任务的作用是为业务提供回退方案,业务恢复运行后,一旦出现异常可将业务切换至原有的数据库中。
- 在“实时同步管理”页面,单击“创建同步任务”。
- 在“同步实例”页面,填选区域、项目、任务名称、描述、同步实例信息,单击“开始创建”。
- 源实例:test2
- 目标实例:test1
- 同步模式:增量
执行以下命令查询此时目标实例的位点,将查询到的位点填入实时同步任务的增量同步起始位点中,可以将目标实例数据库test_db后续产生增量数据迁移到源实例数据库test_db。
SHOW processlist;
详细的数据同步指导,请参见将MySQL同步到MySQL。
- 保持源实例数据库test_db与应用程序的断开状态,将业务切换至目标实例数据库test_db恢复业务。
- 登录目标实例,在数据库test_db上执行以下命令查看会话信息,确保有新的会话执行写入操作。
SHOW processlist;
- 等待业务稳定运行一个周期,测试所有业务功能正常后,删除源实例的数据库test_db并结束反向数据同步任务。