数据库传输服务 DTS 提供多种类型的数据库同步服务。本文介绍如何通过数据库传输服务 DTS 配置反向数据同步任务。
前提条件
- 已创建双向数据同步任务。同步任务的创建方法,请参见创建同步任务。
- 正向同步任务已进入增量同步阶段,且反向同步任务状态为待配置。关于同步拓扑的更多信息,请参见数据同步拓扑。
注意事项
- 反向同步的全量初始化不会同步正向同步包含的库表。
- 在正向同步任务尚未进入增量同步阶段的情况下,配置反向同步任务将不支持配置反向任务的同步对象。
操作步骤
登录 DTS 控制台。
在顶部菜单栏的左上角,选择项目和地域。
在左侧导航栏,单击数据同步。
在同步任务列表页找到目标反向任务,单击任务进度右侧的配置。
在配置同步对象页面,配置如下参数。
- 当实例类型选择 MySQL 时,请配置以下参数信息:
参数 | 说明 |
---|
初始化步骤 | 支持选择结构初始化或全量初始化。 说明 固定选中增量同步,无需选择。预检查完成后,DTS 会将源实例中待同步对象的全量数据在目标实例中初始化,作为后续增量同步数据的基础。 |
主键冲突处理 | 选择当目标库已存在同主键值或唯一值时的处理方法,取值如下: 冲突覆盖:在任务运行时如果遇到目标库已存在的同主键或唯一值,则数据库传输服务 DTS 不会保留目标端中冲突的数据,即源端的数据将会覆盖掉目标端的数据。 冲突报错:在任务运行时如果遇到目标库已存在的同主键或唯一值,则任务会报错并停止运行,报错信息中会提示冲突的数据。 冲突忽略:在任务运行时如果遇到目标库已存在的同主键或唯一值,则数据库传输服务 DTS 会保留目标端中冲突的数据,即源端的数据不会覆盖掉目标端的数据。
注意 - 在主键冲突处理选择冲突报错时,根据数据同步阶段的不同,数据处理方式也存在差异,具体如下所示:
- 全量初始化阶段:数据库传输服务 DTS 不会保留目标端中冲突的数据,即源端的数据将会覆盖掉目标端的数据。
- 增量同步阶段:数据库传输服务 DTS 将进行冲突报错处理,同时任务将停止运行,并在报错信息中提示冲突数据。
- 当数据进行冲突覆盖时,如果目标库中存在同名表,可能会导致数据不一致或任务失败等问题,具体如下所示。建议您通过表名映射的方式、删除或重命名目标库中同名表的方式避免数据不一致等问题降低业务风险。
- 表结构一致时:全量同步的数据将覆盖目标表中与源库主键或唯一键的值相同的记录。
- 表结构不一致时:可能会导致无法初始化数据,只能同步部分列数据或同步失败。
|
同步起始点 | 设置从某个指定位点或时间点拉取 Binlog 日志,取值如下: - 系统默认:默认为当前时间点。
- 指定GTID:在输入框内输入指定的 GTID,格式为
source_id:transaction_id 。 - 指定GTID_EXECUTED:在输入框内输入指定的 GTID_EXECUTED,格式为
source_id:transaction_id ,当存在多个时,可使用英文逗号(,)隔开。 - 指定时间戳:单击输入框,选择日期,单击选择时间设置时间点,然后单击确定。
说明 - 当初始化步骤勾选了全量初始化时,不支持此步骤。
- GTID、GTID_EXECUTED 必须是源端合法的值,否则预检查时会报错。
- 当选择指定时间戳时,您设置的时间必须要晚于源端 Binlog 的最早时间。当没有对应时间 Binlog 时,则选取最接近 Binlog 的起点。
|
同步对象 | 选择需要同步的对象,如表格、视图、函数或存储过程等。 说明 反向同步任务默认仅会同步 Delete、Insert 和 Update 操作,不会同步 DDL 操作。 |
错误重试时间 | 源库或目标库断连后,若能在该时间内重新连上,同步任务即可自动恢复。取值范围:600~86400,单位:秒(s)。默认值为 600 秒。 |
- 当实例类型选择 Redis 时,请配置以下参数信息:
参数 | 说明 |
---|
初始化步骤 | 支持是否勾选全量初始化。 |
同步对象 | 选择需要同步的对象。 |
错误重试时间 | 源库或目标库断连后,若能在该时间内重新连上,同步任务即可自动恢复。取值范围:600~86400,单位:秒(s)。默认值为 600 秒。 |
单击预检查。您可以根据预检查结果执行如下操作:
- 单击预检查结果操作列的详情,来查看详细的告警或失败信息,并根据告警或失败信息修改库表后,单击重试。
- 单击操作列的忽略,忽略本次告警继续启动同步任务。
说明
- 选择忽略告警并启动同步任务,可能导致数据不一致,给业务带来风险。
- 关于预检查项的具体说明,请参见预检查项。
在页面右下角,单击启动任务即可。
说明
任务启动后您可以返回控制台,在同步任务列表页查看同步任务的进度详情。更多详情,请参见查看同步进度。