文档首页/ 云数据库 RDS_云数据库 RDS for MySQL/ 最佳实践/ 通过DRS实现数据库的垂直拆分
更新时间:2025-09-04 GMT+08:00

通过DRS实现数据库的垂直拆分

方案介绍

当RDS for MySQL实例负载过高时,可以将该实例的一个数据库或表垂直拆分至另外一个单独的实例中。例如:一个RDS for MySQL实例上有数据库db1db2,随着业务增长,如想要减轻该实例的压力,您可以将数据库db2垂直拆分至另外一个单独的实例中。

  • 双写方案是一种常见的数据迁移方案,可保证迁移过程业务在线,同时迁移可回滚,但可能涉及对应用程序的一定程度上的改造以及性能影响。
  • 双向同步方案即迁移过程中搭建反向同步链路,保证写入新实例的同时,数据同步到原实例,保证业务可回滚,但涉及到业务中断,需在业务低峰期进行。

本文将以RDS for MySQL源实例和RDS for MySQL目标实例为例,介绍如何通过双写方案和双向同步方案实现垂直拆分。

前提条件

  • 已有RDS for MySQL业务实例作为源实例。
  • 已准备RDS for MySQL非业务所在的空实例作为目标实例,且目标实例的数据库账号权限与源实例的数据库账号权限一致。

注意事项

由于双向同步方案需要短暂暂停业务,请选择业务低峰期操作以降低对业务的影响。

双写方案

  1. 创建迁移任务。
    1. 进入创建迁移任务页面
    2. 填选区域、项目、任务名称、描述、迁移实例信息,单击“开始创建”。
      • 源实例:业务所在实例test1
      • 目标实例:已准备的空实例test2
      • 迁移对象:库级迁移(迁移数据库test_db)。

      详细的数据迁移指导,请参见创建迁移任务

  2. 查询迁移进度。
    1. 迁移任务提交后,您可在“实时迁移管理”界面,选中指定迁移任务,单击任务名称,进入“基本信息”页面。
    2. 单击“迁移进度”页签,查看迁移进度。

      等待数据迁移任务的进度变更为增量迁移,并显示为无延迟状态或延迟时间低于5秒。

  3. 对比迁移项。

    在“迁移对比”信息页面,对源和目标实例的数据库test_db中的数据进行对比分析。更多配置,请参见数据对比

    如果数据一致,则结束数据迁移任务

  4. 通过应用程序将业务数据同时写入源和目标实例的数据库test_db中。
  5. 分别登录源和目标实例,在数据库test_db上执行以下命令查看会话信息,确保有新的会话执行写入操作。
    SHOW processlist;
  6. 等待业务稳定运行一个周期,测试所有业务功能正常后,删除源实例的数据库test_db

双向同步方案

  1. 创建迁移任务。
    1. 进入创建迁移任务页面
    2. 填选区域、项目、任务名称、描述、迁移实例信息,单击“开始创建”。
      • 源实例:业务所在实例test1
      • 目标实例:已准备的空白实例test2
      • 迁移对象:库级迁移(迁移数据库test_db)。

      详细的数据迁移指导,请参见创建迁移任务

  2. 查询迁移进度。
    1. 迁移任务提交后,您可在“实时迁移管理”界面,选中指定迁移任务,单击任务名称,进入“基本信息”页面。
    2. 单击“迁移进度”页签,查看迁移进度。

      等待数据迁移任务的进度变更为增量迁移,并显示为无延迟状态或延迟时间低于5秒。

  3. 对比迁移项。

    在“迁移对比”信息页面,对源和目标实例的数据库test_db中的数据进行对比分析。更多配置,请参见数据对比

    如果数据一致,则结束数据迁移任务

  4. 断开源实例数据库test_db与应用程序的连接,即断开业务连接。
  5. 登录源实例,在数据库test_db上执行以下命令查看会话信息,确保没有新的会话执行写入操作。
    SHOW processlist;
  6. 创建反向同步任务。

    反向同步任务的作用是为业务提供回退方案,业务恢复运行后,一旦出现异常可将业务切换至原有的数据库中。

    1. 在“实时同步管理”页面,单击“创建同步任务”。
    2. 在“同步实例”页面,填选区域、项目、任务名称、描述、同步实例信息,单击“开始创建”。
      • 源实例:test2
      • 目标实例:test1
      • 同步模式:增量

        执行以下命令查询此时目标实例的位点,将查询到的位点填入实时同步任务的增量同步起始位点中,可以将目标实例数据库test_db后续产生增量数据迁移到源实例数据库test_db

        SHOW processlist;

      详细的数据同步指导,请参见将MySQL同步到MySQL

  7. 保持源实例数据库test_db与应用程序的断开状态,将业务切换至目标实例数据库test_db恢复业务。
  8. 登录目标实例,在数据库test_db上执行以下命令查看会话信息,确保有新的会话执行写入操作。
    SHOW processlist;
  9. 等待业务稳定运行一个周期,测试所有业务功能正常后,删除源实例的数据库test_db并结束反向数据同步任务。