文档

源库存在触发器时如何配置同步作业

更新时间:

当您同步任务的对象为整库,且该数据库中包含了会更新库内某个表的触发器(Trigger)时,可能会导致源库和目标库的数据不一致。本文介绍源库存在触发器的情况下如何正确地配置同步作业,以确保数据的一致性和完整性。

重要

若您使用的是新版DTS控制台,并且DTS实例源库和目标库符合特定条件时,您可以在配置任务对象及高级配置阶段选择源库触发器迁移方式。源库及目标库需满足的条件和相关操作步骤,请参见同步或迁移源库中的触发器

案例介绍

数据库triggertestdata中存在了两个表:parent和child。其中,表parent中有一个触发器(定义:当INSERT一条数据到表parent之后,将其INSERT写入的数据写入一份至表child中)。

说明

表结构及触发器定义如下表所示。

对象类型

名称

结构语句

parent

CREATE TABLE `parent` (
  `user_vs_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`user_vs_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2001 DEFAULT CHARSET=utf8

child

CREATE TABLE `child` (
  `sys_child_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_vs_id` int(11) DEFAULT NULL,
  `name` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`sys_child_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2001 DEFAULT CHARSET=utf8

触发器

data_check

CREATE  TRIGGER `triggertestdata`.`data_check`
AFTER INSERT  ON triggertestdata.parent
 FOR EACH ROW
begin

insert into child(user_vs_id, name) values(new.user_vs_id, new.name) ;

end;

在此案例中,如果在数据同步时,在源库的表parent中执行了INSERT操作,将导致源和目标库中的表child数据不一致。为解决该问题,需要删除被迁移到目标库中的触发器。

实现流程

  1. 参考相关配置文档,创建源库到目标数据库的迁移任务

    重要
    • 新版DTS控制台:迁移类型只需选中库表结构迁移

    • 旧版DTS控制台:迁移类型只需选中结构迁移

  2. 登录目标数据库,删除从源数据库迁移过来的触发器。

  3. 参考相关配置文档,创建源库到目标数据库的同步任务

    重要
    • 新版DTS控制台:同步类型默认已选中增量同步,您只需选选中全量同步

    • 旧版DTS控制台:同步初始化只需选中全量数据初始化

操作步骤

本文以自建MySQL同步至RDS MySQL为例介绍配置流程,更多配置案例请参见DTS数据同步方案概览

  1. 创建一个数据迁移任务,将源库的结构迁移至目标库,相关案例请参见从自建MySQL迁移至RDS实例(仅选择结构迁移)。

    说明

    在配置数据迁移任务时,在设置迁移类型及列表环节仅需选择结构迁移,然后选择待迁移的库或表。

    仅选择结构迁移

  2. 由于执行结构迁移时,触发器也会被迁移至目标库中。当迁移任务完成后,您需要登录目标数据库,执行下述命令删除被迁移过去的触发器。

    drop trigger <触发器名称>;

    示例:

    drop trigger data_check;
  3. 创建数据同步作业,将源库的数据同步至目标库中,配置案例请参见从ECS上的自建MySQL同步至RDS(仅选择全量数据初始化)。

    说明
    • 在同步作业的选择同步对象环节中,需和步骤1中选择的同步对象一致。

    • 由于已经完成了结构迁移,在同步作业的高级设置环节中,您仅需选中全量数据初始化

    仅选择全量数据初始化

数据一致性测试

  1. 登录源数据库,在表parent中插入一条记录。

    insert into parent values(1,'testname');

    执行该操作后,由于源库触发器的缘故,该条记录也会被写入至源库的child表中。

  2. 登录源和目标数据库,查询表child的数据,比对其数据是否一致。

    • 源库查询结果查询结果

    • 目标库查询结果查询结果

    经比对,数据一致。

  • 本页导读 (1)
文档反馈