通过数据传输服务DTS(Data Transmission Service),可以实现PolarDB MySQL集群同步至MySQL(包括自建MySQL、RDS MySQL实例)。

支持的目标数据库

PolarDB MySQL集群同步至MySQL,支持目标数据库为以下类型。本文以RDS MySQL实例为例介绍配置流程,其他类型的目标数据库的配置流程与本案例类似。
  • RDS MySQL实例。
  • ECS上的自建数据库。
  • 通过专线、VPN网关或智能网关接入的自建数据库。
  • 通过数据库网关接入的自建数据库。

前提条件

注意事项

类型 说明
源库限制
  • 待同步的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据。
  • 如同步对象为表级别,且需进行编辑(如表列名映射),则单次同步任务仅支持同步至多1000张表。当超出数量限制,任务提交后会显示请求报错,此时建议您拆分待同步的表,分批配置任务,或者调用DTS OpenAPI配置任务。
  • Binlog日志:
    • 需开启,并且binlog_format为row、binlog_row_image为full。否则预检查阶段显示报错提示,且无法成功启动数据同步任务。
    • 建议在全量初始化期间,Binlog日志至少保留7天以上。或者等到全量初始化完成后,再清理DTS任务运行后源库产生的Binlog日志。
      说明 为保障数据安全,DTS本地只会循环存储源库近24小时或者50 GB的Binlog日志,一旦超出该限制,DTS本地将自动清除所缓存的日志。
      警告 过早清理源库的Binlog日志,可能会导致同步任务失败。例如源库的全量初始化数据较多,目标库写入异常等原因,导致全量初始化耗时超过24小时。在该情况下,过早清理源库的Binlog日志,DTS将无法获取到24小时前的Binlog日志,可能会导致同步任务失败。
  • 同步期间,请勿执行添加注释的DDL操作(如ALTER TABLE table_name COMMENT='表的注释';),否则数据同步任务会失败。
其他限制
  • 不支持同步源PolarDB MySQL只读节点。
  • 执行数据同步前需评估源库和目标库的性能,同时建议业务低峰期执行数据迁移。否则全量数据初始化时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升。
  • 全量初始化会并发执行INSERT操作,导致目标数据库的表产生碎片,因此全量初始化完成后目标实例的表空间比源实例的表空间大。
  • 对于表级别的数据同步,请勿对源库的同步对象使用gh-ost或pt-online-schema-change等类似工具执行在线DDL变更,否则会导致同步失败。
  • 对于表级别的数据同步,如果除DTS以外的数据没有写入目标库,您可以使用数据管理DMS(Data Management Service)来执行在线DDL变更,请参见不锁表结构变更
    警告 如果有除DTS外的数据写入目标库,请勿使用DMS执行在线DDL变更,否则可能引起目标库数据丢失。

优惠活动

DTS优惠活动,最低0折

支持的同步架构

  • 一对一单向同步
  • 一对多单向同步
  • 级联单向同步
  • 多对一单向同步

关于各类同步架构的介绍及注意事项,请参见数据同步拓扑介绍

支持同步的SQL操作

操作类型 SQL操作语句
DML INSERT、UPDATE、DELETE
DDL
  • ALTER TABLE、ALTER VIEW
  • CREATE FUNCTION、CREATE INDEX、CREATE PROCEDURE、CREATE TABLE、CREATE VIEW
  • DROP INDEX、DROP TABLE
  • RENAME TABLE
  • TRUNCATE TABLE

操作步骤

  1. 登录