如果同步的源数据库类型为PostgreSQL,如自建PostgreSQL、RDS PostgreSQL,您需要在配置具体的同步任务前,参考本文的注意事项及限制,以保障数据同步任务的正常运行。

源库为PostgreSQL的同步方案概览

根据同步方案,查看同步任务的注意事项及限制:

RDS PostgreSQL间双向同步

类型 说明
源和目标库的限制
  • 待同步的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据。
  • 如同步对象为表级别,且需进行编辑(如表列名映射),则单次同步任务仅支持同步至多1000张表。当超出数量限制,任务提交后会显示请求报错,此时建议您拆分待同步的表,分批配置任务,或者调用DTS OpenAPI配置任务。
  • 数据日志:
    • 需开启,即设置wal_level参数的值为logical。设置方式,请参见设置实例参数
    • 建议在全量初始化期间,数据日志至少保留7天以上。或者等到全量初始化完成后,再清理DTS任务运行后源库产生的数据日志。
      说明 为保障数据安全,DTS服务器只会循环存储源库近24小时或者50 GB的数据日志,一旦超出该限制,DTS服务器将自动清除所缓存的日志。
      警告 过早清理源库的数据日志,可能会导致同步任务失败。例如源库的全量初始化数据较多,目标库写入异常等原因,导致全量初始化耗时超过24小时。在该情况下,过早清理源库的数据日志,DTS将无法获取到24小时前的数据日志,可能会导致同步任务失败。
  • 为保障同步任务的正常进行,目前仅支持RDS PostgreSQL 11进行主备切换,且需设置参数 rds_failover_slot_modesync,设置方式,请参见逻辑订阅故障转移(Failover Slot)
    警告 其他版本的RDS PostgreSQL进行主备切换,会导致同步中断。
其他限制
  • 目前仅支持在华东1(杭州)、华东2(上海)、华北1(青岛)地域配置。
  • 单个数据同步任务只能同步一个数据库,如需同步多个数据库,您需要为每个数据库配置数据同步任务。
  • 不支持数组(ARRAY)类型的数据同步。
  • 同步期间,如果同步对象的选择粒度为Schema,在待同步的Schema中创建了新的表或使用RENAME命令重建了待同步的表,您需要在对该表写入数据前执行ALTER TABLE schema.table REPLICA IDENTITY FULL;命令,以保障该表数据同步的一致性。
    说明 将上述命令中的 schematable替换成真实的Schema名和表名。
  • 为保障同步延迟时间展示的准确性,DTS会在源库中新增一个名为dts_postgres_heartbeat的心跳表。
  • 同步期间,DTS会在源库中创建前缀为dts_sync_的replication slot用于复制数据。DTS会每隔90分钟自动清理一次历史replication slot,避免其持续累积占用磁盘空间。
    说明 当释放同步任务或同步失败时,DTS会主动清理该replication slot;如果RDS PostgreSQL发生了主备切换,则需要您登录备库来手动清理。
    Amazon slot查询信息
  • 执行数据同步前需评估源库和目标库的性能,同时建议业务低峰期执行数据同步。否则全量数据初始化时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升。
  • 全量初始化会并发执行INSERT操作,导致目标数据库的表产生碎片,因此全量初始化完成后目标实例的表空间比源实例的表空间大。
  • 对于表级别的数据同步,请勿对源库的同步对象使用gh-ost或pt-online-schema-change等类似工具执行在线DDL变更,否则会导致同步失败。
  • 对于表级别的数据同步,如果除DTS以外的数据没有写入目标库,您可以使用数据管理DMS(Data Management Service)来执行在线DDL变更,请参见不锁表结构变更
    警告 如果有除DTS外的数据写入目标库,请勿使用DMS执行在线DDL变更,否则可能引起目标库数据丢失。
特殊情况 当源实例为RDS PostgreSQL时

同步期间,请勿修改RDS PostgreSQL的连接地址和可用区,否则会导致同步失败。

RDS PostgreSQL同步至RDS MySQL

类型 说明
源库限制
  • 待同步的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据。
  • 如同步对象为表级别,且需进行编辑(如表列名映射),则单次同步任务仅支持同步至多1000张表。当超出数量限制,任务提交后会显示请求报错,此时建议您拆分待同步的表,分批配置任务,或者调用DTS OpenAPI配置任务。
  • 数据日志:
    • 需开启,即设置wal_level参数的值为logical。设置方式,请参见设置实例参数
    • 建议在全量初始化期间,数据日志至少保留7天以上。或者等到全量初始化完成后,再清理DTS任务运行后源库产生的数据日志。
      说明 为保障数据安全,DTS服务器只会循环存储源库近24小时或者50 GB的数据日志,一旦超出该限制,DTS服务器将自动清除所缓存的日志。
      警告 过早清理源库的数据日志,可能会导致同步任务失败。例如源库的全量初始化数据较多,目标库写入异常等原因,导致全量初始化耗时超过24小时。在该情况下,过早清理源库的数据日志,DTS将无法获取到24小时前的数据日志,可能会导致同步任务失败。
  • 源库的操作限制
    为保障同步任务的正常进行,目前仅支持RDS PostgreSQL 11进行主备切换,且需设置参数 rds_failover_slot_modesync,设置方式,请参见 逻辑订阅故障转移(Failover Slot)
    警告 自建PostgreSQL或其他版本的RDS PostgreSQL进行主备切换,会导致同步中断。
其他限制
  • 该同步任务仅支持在新版控制台配置。
  • 单个数据同步任务只能同步一个数据库,如需同步多个数据库,您需要为每个数据库配置数据同步任务。
  • 同步期间,如果同步对象的选择粒度为Schema,在待同步的Schema中创建了新的表或使用RENAME命令重建了待同步的表,您需要在对该表写入数据前执行ALTER TABLE schema.table REPLICA IDENTITY FULL;命令,以保障该表数据同步的一致性。
    说明 将上述命令中的 schematable替换成真实的Schema名和表名。
  • 为保障同步延迟时间展示的准确性,DTS会在源库中新增一个名为dts_postgres_heartbeat的心跳表。
  • 同步期间,DTS会在源库中创建前缀为dts_sync_的replication slot用于复制数据。DTS会每隔90分钟自动清理一次历史replication slot,避免其持续累积占用磁盘空间。
    说明 当释放同步任务或同步失败时,DTS会主动清理该replication slot;如果RDS PostgreSQL发生了主备切换,则需要您登录备库来手动清理。
    Amazon slot查询信息
  • 执行数据同步前需评估源库和目标库的性能,同时建议业务低峰期执行数据同步。否则全量数据初始化时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升。
  • 全量初始化会并发执行INSERT操作,导致目标数据库的表产生碎片,因此全量初始化完成后目标实例的表空间比源实例的表空间大。
  • 对于表级别的数据同步,请勿对源库的同步对象使用gh-ost或pt-online-schema-change等类似工具执行在线DDL变更,否则会导致同步失败。
  • 对于表级别的数据同步,如果除DTS以外的数据没有写入目标库,您可以使用数据管理DMS(Data Management Service)来执行在线DDL变更,请参见不锁表结构变更
    警告 如果有除DTS外的数据写入目标库,请勿使用DMS执行在线DDL变更,否则可能引起目标库数据丢失。
特殊情况
  • 当源实例为RDS PostgreSQL时

    同步期间,请勿修改RDS PostgreSQL的连接地址和可用区,否则会导致同步失败。

自建PostgreSQL或RDS PostgreSQL同步至云原生数据仓库AnalyticDB PostgreSQL

类型 说明
源库限制
  • 待同步的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据。
  • 如同步对象为表级别,且需进行编辑(如表列名映射),则单次同步任务仅支持同步至多1000张表。当超出数量限制,任务提交后会显示请求报错,此时建议您拆分待同步的表,分批配置任务,或者调用DTS OpenAPI配置任务。
  • 数据日志:
    • 需开启,即设置wal_level参数的值为logical。设置方式,请参见设置实例参数
    • 建议在全量初始化期间,数据日志至少保留7天以上。或者等到全量初始化完成后,再清理DTS任务运行后源库产生的数据日志。
      说明 为保障数据安全,DTS服务器只会循环存储源库近24小时或者50 GB的数据日志,一旦超出该限制,DTS服务器将自动清除所缓存的日志。
      警告 过早清理源库的数据日志,可能会导致同步任务失败。例如源库的全量初始化数据较多,目标库写入异常等原因,导致全量初始化耗时超过24小时。在该情况下,过早清理源库的数据日志,DTS将无法获取到24小时前的数据日志,可能会导致同步任务失败。
  • 源库的操作限制
    为保障同步任务的正常进行,目前仅支持RDS PostgreSQL 11进行主备切换,且需设置参数 rds_failover_slot_modesync,设置方式,请参见 逻辑订阅故障转移(Failover Slot)
    警告 自建PostgreSQL或其他版本的RDS PostgreSQL进行主备切换,会导致同步中断。
其他限制
  • 暂不支持结构初始化,在配置同步任务前,您需要在目标实例中创建对应的库和表。
  • 同步对象要求:
    • 仅支持表级同步。
    • 不支持BIT、VARBIT、GEOMETRY、ARRAY、UUID、TSQUERY、TSVECTOR、TXID_SNAPSHOT类型的数据同步。
  • 单个数据同步任务只能同步一个数据库,如需同步多个数据库,您需要为每个数据库配置数据同步任务。
  • 同步期间,如果同步对象的选择粒度为Schema,在待同步的Schema中创建了新的表或使用RENAME命令重建了待同步的表,您需要在对该表写入数据前执行ALTER TABLE schema.table REPLICA IDENTITY FULL;命令,以保障该表数据同步的一致性。
    说明 将上述命令中的 schematable替换成真实的Schema名和表名。
  • 为保障同步延迟时间展示的准确性,DTS会在源库中新增一个名为dts_postgres_heartbeat的心跳表。
  • 同步期间,DTS会在源库中创建前缀为dts_sync_的replication slot用于复制数据。DTS会每隔90分钟自动清理一次历史replication slot,避免其持续累积占用磁盘空间。
    说明 当释放同步任务或同步失败时,DTS会主动清理该replication slot;如果RDS PostgreSQL发生了主备切换,则需要您登录备库来手动清理。
    Amazon slot查询信息
  • 执行数据同步前需评估源库和目标库的性能,同时建议业务低峰期执行数据同步。否则全量数据初始化时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升。
  • 全量初始化会并发执行INSERT操作,导致目标数据库的表产生碎片,因此全量初始化完成后目标实例的表空间比源实例的表空间大。
  • 对于表级别的数据同步,请勿对源库的同步对象使用gh-ost或pt-online-schema-change等类似工具执行在线DDL变更,否则会导致同步失败。
  • 对于表级别的数据同步,如果除DTS以外的数据没有写入目标库,您可以使用数据管理DMS(Data Management Service)来执行在线DDL变更,请参见不锁表结构变更
    警告 如果有除DTS外的数据写入目标库,请勿使用DMS执行在线DDL变更,否则可能引起目标库数据丢失。
特殊情况
  • 当源实例为RDS PostgreSQL时

    同步期间,请勿修改RDS PostgreSQL的连接地址和可用区,否则会导致同步失败。