数据传输服务DTS(Data Transmission Service)支持RDS MySQL与PolarDB MySQL引擎集群实例间的双向同步。
支持的源数据库
MySQL与PolarDB MySQL引擎集群双向同步,支持源数据库MySQL为以下类型。本文以RDS MySQL实例为例介绍配置流程,其他类型的源数据库配置流程与本案例类似。- RDS MySQL实例。
- ECS上的自建数据库。
- 通过专线、VPN网关或智能网关接入的自建数据库。
- 通过数据库网关接入的自建数据库。
- 通过云企业网CEN接入的自建数据库。
前提条件
- 已创建源RDS MySQL实例,创建方式,请参见创建RDS MySQL实例。
- 已创建目标PolarDB MySQL引擎集群,详情请参见购买按量付费集群和购买包年包月集群。
- 源RDS MySQL和目标PolarDB MySQL引擎实例的存储空间须保持一致。
注意事项
类型 | 说明 |
---|---|
源和目标库限制 |
|
其他限制 |
|
特殊情况 |
当源库为自建MySQL时
|
支持的冲突检测
为保障同步数据的一致性,您需要确保同一个主键、业务主键或唯一键的记录只在双向同步的一个节点进行更新。如果同时更新则会按照您在数据同步作业中配置的冲突修复策略进行响应。
- INSERT导致的唯一性冲突
同步INSERT语句时违背了唯一性约束,例如双向同步的两个节点同时或者在极为接近的时间INSERT某个主键值相同的记录,那么同步到对端时,会因为已经存在相同主键值的记录,导致Insert同步失败。
- UPDATE更新的记录不完全匹配
- UPDATE要更新的记录在同步目标实例中不存在时,DTS会自动转化为INSERT,此时可能会出现唯一键的唯一性冲突。
- UPDATE要更新的记录出现主键或唯一键冲突。
- DELETE对应的记录不存在
DELETE要删除的记录在同步的目标实例中不存在。出现这种冲突时,不论配置何种冲突修复策略,DTS都会自动忽略DELETE操作。
- 由于数据同步两端的系统时间可能存在差异、同步存在延时等多种因素,DTS无法完全保证冲突检测机制能够完全防止数据的冲突。在使用双向同步时,您需要在业务层面配合进行相应的改造,保证同一个主键、业务主键或唯一键的记录只在双向同步的某个节点进行更新。
- 对于上述数据同步的冲突,DTS提供了修复策略,您可以在配置双向同步时选择。
支持的同步架构
DTS支持RDS MySQL与PolarDB MySQL引擎集群间的双向同步。
关于各类同步架构的介绍及注意事项,请参见数据同步拓扑介绍。
支持同步的SQL
操作类型 | SQL操作语句 |
---|---|
DML | INSERT、UPDATE、DELETE |
DDL |
|
数据库账号的权限要求
数据库 | 所需权限 | 创建及授权方式 |
---|---|---|
源RDS MySQL | 高权限账号。 | 创建数据库和账号。 |
目标PolarDB MySQL引擎 | 高权限账号。 | 创建数据库账号。 |