为最大化地减少数据迁移对业务的影响,您可以参照本文的流程执行业务切换并建立回退方案。

前提条件

已配置数据迁移任务,且数据迁移任务处于迁移中已完成状态,配置案例请参见DTS数据迁移方案概览

注意事项

  • 由于执行业务切换操作需要停止数据库写入并暂停业务,请选择业务低峰期操作以降低影响。
  • 为便于区分会话信息以及提升数据安全性,建议单独创建并授权一个数据库账号以供数据迁移使用。

操作步骤

  1. 等待数据迁移任务的进度变更为增量迁移,并显示为无延迟状态或延迟时间低于5秒。
    说明 如果数据迁移任务在配置时未勾选增量数据迁移,进度条不会变更为增量迁移,且迁移完成后会自动结束任务。此类情况通常约定在执行数据迁移任务之前将业务中断并停止新的数据写入源数据库,所以请直接跳转至步骤5继续操作。
  2. 将业务暂时中断,禁止新的数据写入源数据库。
  3. 登录源数据库,根据数据库类型选择下述命令查看会话信息,确保没有新的会话执行写入操作。
    show processlist;
    select * from sys.dm_exec_connections;
    select sid,serial#,username,program,machine,status from v$session;
    select * from pg_stat_activity;
    CLIENT LIST
    use admin
    db.runCommand({currentOp: 1, $all:[{"active" : true}]})

    说明 上述语句查询到的进程或会话信息中,包含DTS连接源数据库的进程或会话。
  4. 等待迁移任务的增量迁移再次进入无延迟状态,保持1分钟或以上,然后手动结束迁移任务。
    无延迟
  5. 保持业务中断状态,取消源数据库禁止写入的限制。
  6. 创建反向数据迁移任务并启动,用于将目标库后续产生增量数据迁移回源数据库。此步骤创建的反向迁移任务的作用是为业务提供回退方案,业务恢复运行后,一旦出现异常可将业务切换至原有的数据库中。

    例如原先是将自建MySQL迁移至RDS MySQL,反向数据迁移任务配置案例请参见从RDS MySQL迁移至自建MySQL(仅选择增量数据迁移)。

    警告 在配置反向数据迁移任务时,在设置迁移类型及列表环节仅需选择增量数据迁移,然后选择需要迁移回源数据库的库或表。
    仅选择增量数据迁移
  7. 验证源和目标的数据一致后,将业务的数据库服务切换至目标数据库并恢复业务。
  8. 由于创建的反向迁移任务会将目标库产生的增量数据实时迁移回源库,如果业务运行出现问题,可随时将业务切换回源库。

后续步骤

业务切换至目标数据库并稳定运行一段时间,测试所有业务涉及的功能并确认无问题,可结束反向数据迁移的任务,详情请参见结束数据迁移任务

警告 用于数据迁移的数据库账号拥有读写权限,为保障数据库安全性,请在数据迁移完成后,删除用于数据迁移的数据库账号或回收相关写权限。

常见问题

  • Q:业务切换后,如果业务运行出现问题如何处理?

    A:由于创建的反向迁移任务会将目标库产生的增量数据实时迁移回源库,如果业务运行出现问题,可随时将业务切换回源库。

  • Q:业务切换失败后,源库如何保证数据一致性?

    A:您可以在业务切换前备份源库。

  • Q:业务切换后,由于误操作导致在源数据库中写入了新的数据,应该如何处理?

    A:通过数据校验确认源和目标库的差异数据,进行手动订正。