
# 割接流程
#### 操作场景
数据库从一个实例搬迁到另一个数据库实例之后，需要做业务切换，切换时刻的割接流程，本场景只考虑单向有增量的链路的情况。
#### 前提条件
数据迁移实例（包括实时同步、实时迁移、实时灾备任务的实例）处于增量运行中状态。配置方法，请参见对应链路的用户指南。
#### 方案概览
1、源端停写
为避免数据丢失，需要暂停源端业务写入，避免同步链路停掉之后，源端有新产生的数据未同步到目标端。
2、数据追平
业务所需要的数据，都已经从源库同步到目标库后，再确认两端数据已经一致。
3、链路反向
目标库接入业务之后，为了能安全回退，后续增量数据需要及时写回源库。
4、业务切换
开启业务往目标端数据库的写入，恢复业务。
#### 注意事项
因切换期间需要停止数据库写入，请选择业务低峰期操作以降低影响。
任务一旦结束，将停止计费，并回收资源，任务将无法恢复，因此割接流程中需要确认是使用暂停还是结束，还是使用"实时灾备"的功能。
切换前后，需要严格保证切换前后，数据只在一端写入，否则可能造成业务数据无法同步到另一端而造成数据不一致的问题。
#### 操作步骤
1. 等待迁移完成。等待DRS任务进入增量迁移阶段且延迟时间小于5秒，且保持5分钟以上。
2. 暂停业务写入。 
   1. 将业务写入暂时中断，停止在源库中写入新数据，可以通过设置源库只读，必要时可以中断会话/取消写入权限等手段。
   
   2. 登录源库，反复查询位点，确认位点不再变化，或者确保没有新的业务数据写入。 MySQL查看位点的命令为：
      show master status;
      ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002634693244.png)
      ![](https://support.huaweicloud.com/bestpractice-drs/public_sys-resources/note_3.0-zh-cn.png)
      如果因为有心跳或者其它无关业务写入，可以通过如下命令确认位点之后无正常业务写入。
      show binlog events in 'xxx' from yyy;
      ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002665092391.png)
      
   
   
   
   
3. 等待数据追平。 
   1. 在任务进度页面，查看"源位点"和"已消费位点"一致，必要时可以确认跟源端show master status; 命令中查询的位点一致。
   
   2. 数据对比确保源端和目标端数据一致，可以在数据校验页面创建数据对比任务，等待对比结果一致。
      ![](https://support.huaweicloud.com/bestpractice-drs/public_sys-resources/note_3.0-zh-cn.png)
      内容对比时间较长，可以选择行对比；或者挑选一些核心表，配置查询条件，抽检部分数据做内容对比。
      ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002634493248.png)
      
   
   
   
   
4. 准备反向链路。 
   如果任务选择的是"实时灾备"，此时可以直接单击页面的倒换。
   如果任务选择是"实时同步"或者"实时迁移"，则有如下两种操作。
   1. 可以选择暂停或者结束任务。
      ![](https://support.huaweicloud.com/bestpractice-drs/public_sys-resources/note_3.0-zh-cn.png)
      暂停任务的时候，不会迁移event/trigger等信息，如果需要迁移这些信息，则需要结束任务。
      
   
   2. 创建反向单增量任务，等待任务运行到增量中。
   
   
   
   
5. 目标端接入业务。 
   1. 业务连接目标端数据库，开启写入。
   
   2. 业务验证。
   
   
   
   
 
#### 回退方案
1. 业务停写。
2. 业务接入源库。
3. 业务恢复写入。
 
