本场景介绍如何在数据库传输服务 DTS 控制台创建公网自建 MySQL 同步至公网自建 MySQL 任务。
华南 1(广州)、华北 2(上海)和华北 2(北京)的 DTS 服务器 IP 地址是 221.194.189.0/27,157.148.90.32/27,180.184.132.64/27,61.129.54.64/27,220.196.172.32/27,117.135.143.32/27,220.196.168.32/27,116.132.250.32/27,111.45.13.32/27,125.88.248.32/27,180.153.35.32/27,220.181.65.32/27,220.181.65.64/27
。
亚太东南(柔佛)的 DTS 服务器 IP 地址是 101.47.0.32/27,220.181.65.32/27,220.181.65.64/27
。
中国香港的 DTS 服务器 IP 地址是 101.47.65.32/28,101.47.65.48/28
。
关于 DTS 服务器 IP 地址段的详细信息,请参见添加 DTS 服务器的 IP 地址段。
已确认源端和目标端的网络连通性与服务可用性。
(可选)根据预检查项中的说明,检查源端和目标端中各同步对象。更多详情,请参见预检查项(MySQL)。
当源库为自建 MySQL 时,您需要关注以下信息:
同步时,如果源库进行主备切换,否则会导致同步任务失败。
在同步期间,如果源库执行了重启操作,同步任务会暂时中断并自动尝试修复,如果任务长时间没恢复,请提交工单联系技术支持。
由于数据库传输服务 DTS 的延迟时间是根据同步到目标库最后一条数据的时间戳和当前时间戳对比得出,源库长时间未执行 DML 操作可能会导致延迟信息不准确。如果任务显示的延迟时间过大,您可以在源库执行一个 DML 操作来更新延迟信息。
说明
当同步对象为整库时,您可以创建心跳表,心跳表每秒定期更新或写入数据。
当目标库使用的是高权限账号时,数据库传输服务 DTS 会自动在目标库中创建数据库。如果待同步的数据库名称不符合目标数据库的定义规范,您需要在同步任务前手动在目标库中创建数据库。
为保证数据同步的性能和同步任务的稳定性,源库的 TRIGGER 和 EVENT 会在增量同步结束后才进行同步。
在库表结构初始化过程中,数据库传输服务 DTS 会将源数据库中的外键同步到目标数据库。
在全量初始化和增量同步过程中,数据库传输服务 DTS 会以 Session 级别暂时禁用约束检查和外键级联操作。当任务运行时源库存在级联更新、删除操作时,可能会导致数据不一致。
当数据进行冲突报错时,根据数据同步阶段的不同,目标数据库在检查到已存在同主键值或唯一键的处理方法也存在差异,具体如下所示:
全量初始化阶段:数据库传输服务 DTS 不会保留目标端中冲突的数据,即源端的数据将会覆盖掉目标端的数据。
增量同步阶段:数据库传输服务 DTS 将进行冲突报错处理,需手动修改相关数据,否则同步任务无法启动。
当数据进行冲突覆盖时,如果目标库中存在同名表,可能会导致数据不一致或任务失败等问题,具体如下所示。建议您通过表名映射的方式、删除或重命名目标库中同名表的方式避免数据不一致等问题降低业务风险。
表结构一致时:全量同步的数据将覆盖目标表中与源库主键或唯一键的值相同的记录。
表结构不一致时:可能会导致无法初始化数据,只能同步部分列数据或同步失败。
在 DTS 同步期间,建议您不要往目标库中写入其他数据,否则可能会导致源库与目标库的数据不一致等问题。例如,有除 DTS 外的数据写入目标库时,使用 DBW 执行在线 DDL 变更,可能引起目标库数据丢失。
类型 | 说明 |
---|---|
源库限制 |
|
目标库限制 |
|
其他限制 |
|
在双向同步 MySQL 时,请勿同时在源端和目标端做 DDL 操作,否则可能会导致同步任务失败。
在链路创建、库表结构初始化和全量初始化过程,请勿执行库或表结构变更的 DDL 操作否则同步任务会失败。
由于使用 gh-ost 或 pt-online-schema-change 等在线 DDL 工具执行 DDL 操作时会生成临时表,在数据同步过程中,需要注意以下几点:
当需要使用在线 DDL 工具执行 DDL 操作时,需要保证同步对象是整个数据库,否则会由于临时表无法同步导致 DDL 失败。
同步期间请勿使用在线 DDL 工具执行轻量 DDL 操作例如小表增加字段等,否则可能由于 DDL 临时表存在时间过短导致 DDL 同步失败。
一对一单向同步
一对多单向同步
多对一单向同步
级联单向同步
一对一双向同步
关于数据库传输服务 DTS 支持的同步拓扑类型和使用说明,请参见数据同步拓扑。
操作类型 | SQL 操作语句 |
---|---|
DML | INSERT、UPDATE、DELETE |
DDL |
|
数据库 | 结构初始化 | 全量初始化 | 增量同步 |
---|---|---|---|
源库 | SELECT 权限 | SELECT 权限 | REPLICATION SLAVE 、REPLICATION CLIENT 和 SELECT 权限。 |
目标库 | 读写权限 | 读写权限 | 读写权限 |
类别 | 参数 | 说明 |
---|---|---|
无 | 任务名称 | (可选)自定义同步任务名称。命名规则如下:
|
链路规格 | 按需选择同步任务的链路规格,当前支持 Compact 和 Standard。 说明 成功创建任务后,不支持修改任务的链路规格。关于链路规格的详细信息,请参见产品规格。 | |
同步拓扑 | 根据业务需要选择同步拓扑,当前支持单向同步和双向同步。 说明 双向同步当前仅支持 MySQL 5.6 及以上版本。关于同步拓扑的更多信息,请参见数据同步拓扑。 | |
源库配置 | 选择已有数据源 | 您可以按需选择是否使用已录入的实例:
|
实例类型 | 选择 MySQL。 | |
接入方式 | 选择公网自建 MySQL。 说明 在同步公网自建 MySQL 实例时,您需要提前在源端的白名单或安全组策略中,添加 DTS IP 段的访问权限。单击查看 DTS IP 段查看和复制 IP 段。 | |
地域 | 选择目标实例所属地域。 | |
主机地址 | 输入目标库自建实例的主机地址。 | |
端口 | 输入目标自建实例的端口号。 | |
数据库账号 | 输入目标实例的数据库账号。 | |
数据库密码 | 输入目标实例数据库账号对应的密码。 | |
连接方式 | 按需选择非加密连接或 SSL 安全连接,建立更加安全可靠的同步链路。 说明
| |
SSL 加密证书 | 单击上传 SSL 加密证书上传 CA 证书。当连接方式选择了 SSL 安全连接时,支持该配置。 | |
测试链接 | 单击测试链接,验证是否成功连接实例。
| |
目标库配置 | 选择已有数据源 | 您可以按需选择是否使用已录入的实例:
|
实例类型 | 选择 MySQL。 | |
接入方式 | 选择公网自建 MySQL。 说明 在同步公网自建 MySQL 实例时,您需要提前在源端的白名单或安全组策略中,添加 DTS IP 段的访问权限。单击查看 DTS IP 段查看和复制 IP 段。 | |
地域 | 选择目标实例所属地域。 | |
主机地址 | 输入目标库自建实例的主机地址。 | |
端口 | 输入目标自建实例的端口号。 | |
数据库账号 | 输入目标实例的数据库账号。 | |
数据库密码 | 输入目标实例数据库账号对应的密码。 | |
连接方式 | 按需选择非加密连接或 SSL 安全连接,建立更加安全可靠的同步链路。 说明
| |
SSL 加密证书 | 单击上传 SSL 加密证书上传 CA 证书。当连接方式选择了 SSL 安全连接时,支持该配置。 | |
测试链接 | 单击测试链接,验证是否成功连接实例。
| |
无 | 项目 | (可选)从下拉列表中选择该任务所属项目,默认在 default(默认项目) 下。您也可以单击创建新项目,创建新的项目。详细操作,请参见新建项目。 |
标签 | (可选)单击添加标签,为实例添加标签,标签可帮您实现云资源的分类、云资源的访问控制、账单与成本分摊等。标签由一个键值对(Key-Value)组成,用于标识云资源,可以帮助您从不同维度(例如用途、所有者等)对具有相同特征的云资源进行分类,便于筛选和聚合,从而轻松管理云上资源。关于标签的详细信息,请参见标签概述。标签的键值对规则如下:
说明
| |
计费方式 | 按需选择计费方式,当前支持按量计费和包年包月两种计费方式。 说明 关于计费的详细信息,请参见计费说明。 | |
购买时长 | 按需选择包年包月的购买时长。 说明 在计费方式选择包年包月时,支持设置购买时长。 |
单击下一步:配置同步对象。
在配置同步对象配置向导页面,配置相关参数信息,如下表所示。
说明
若暂时不需要启动同步任务,您可以在完成同步对象配置后,单击页面右下角的保存。
保存后会跳转回同步任务列表页,此时任务状态为待启动,您可以在合适的时候再配置同步任务。配置方法,请参见配置同步任务。
参数 | 说明 | |
---|---|---|
同步类型 | 按需选择同步类型,当前支持用户初始化、结构初始化、全量初始化和增量同步。 说明
| |
迁移用户 | 按需勾选目标账号,在目标账号的新密码(选填) 列设置新密码。当需迁移多个用户时,可单击批量修改密码,统一修改需要迁移的账号密码,若不修改则目标库账号密码和源库密码一致。 说明
| |
冲突处理策略 | 选择当目标库已存在同主键值或唯一值时的处理方法,取值如下:
注意
| |
同步起始点 | 设置从某指定位点或时间点拉取 Binlog 日志,取值如下:
说明
| |
同步类型选择 | 选择需要同步的操作类型,当前支持同步 DML 和 DDL 操作语句。具体如下所示:
说明 关于数据库传输服务 DTS 在数据同步时支持的 DDL 操作语句,请参见支持同步的 SQL。 | |
是否开启外键检查 | 按需选择是否开启外键检查,开启外键检查后,支持同步源库的外键级联更新、删除等操作,从而保证数据同步的完整性和一致性。 | |
同步对象 | 选择需要同步的对象,如表格、视图、函数或存储过程等,支持通过普通搜索和全局搜索方式查询目标对象。同时,您可以在已选择对象区域中实现以下操作:
说明 在同步对象或已选择对象区域支持通过正则表达式搜索目标对象。 | |
高级配置 | 已选库表 | 仅支持重新单独设置同步表的同步类型、冲突策略和数据过滤,具体如下所示:
|
开启 ETL 配置 | 选择是否开启 ETL 功能。关于 ETL 的详细信息,请参见 ETL 简介。
| |
错误重试时间 | 在同步任务中,当源库和目标库断连后导致同步任务失败时,会立即在指定时间内多次重试连接源库和目标库。取值范围:600~86400,单位:秒(s)。默认值为 600 秒。 | |
全量同步速率 | 按需设置全量同步速率。防止在同步速率过高时,影响源库的性能,您可以根据源库和目标库的读写压力情况适当调整以下参数:
说明
|
单击预检查。
(可选)当创建的任务已有预检查时,您可以根据以下提示确认是否重新发起预检查,当需要重新发起预检查时,请在是否重新发起预检查对话框,单击确定。
若源端和目标端的数据库实例未做修改,则无需再次发起预检查。
如果修改了源端、目标端的数据库实例信息或同步任务的参数配置,那么建议您重新发起预检查,否则可能会导致任务启动失败或者任务中断。
在预检查配置向导页面,根据检查结果执行以下操作:
单击预检查结果操作列的详情,查看详细的告警和失败信息,并根据告警或失败信息修改库表后,单击重试。
单击操作列的忽略,忽略本次告警继续启动同步任务。同时,也可以单击忽略全部,一键忽略全部告警信息。
说明
选择忽略告警并启动同步任务,可能导致数据不一致,带来业务风险。
关于预检查的具体说明,请参见预检查项。
在预检查页面右下角,单击确认订单。
根据创建任务的计费类型,选择配置方式:
按量付费
在确认订单配置向导页面,再次确认配置信息。阅读《数据库产品和服务条款》并勾选我已阅读并同意《数据库产品和服务条款》,然后单击创建并启动任务。
包年包月
在确认订单配置向导页面,再次确认配置信息。阅读《数据库产品和服务条款》并勾选我已阅读并同意《数据库产品和服务条款》,然后单击创建并启动任务。
在确认订单信息配置向导页面,确认任务的计费信息。
(可选)单击代金券兑换,在代金券兑换对话框,输入代金券兑换码后单击兑换。
(可选)在代金券区域,按需勾选可用代金券,单次仅支持选中一张,即可抵扣部分费用。也可不使用代金券。
单击下一步。
说明
在支付完成配置向导页面,显示支付成功则任务创建成功。
成功创建数据同步任务后,您可以返回 DTS 控制台,在数据同步任务列表查看数据同步任务的信息。
API | 描述 |
---|---|
CreateTransmissionTask | 调用 CreateTransmissionTask 接口创建数据库传输服务任务。 |
ModifyTransmissionTask | 调用 ModifyTransmissionTask 接口修改传输任务。 |