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

源库为PostgreSQL的同步方案概览

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

PostgreSQL间同步

  • RDS PostgreSQL间的单向同步
    类型 说明
    源库限制
    • 待同步的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据。
    • 如同步对象为表级别,且需进行编辑(如表列名映射),则单次同步任务仅支持同步至多1000张表。当超出数量限制,任务提交后会显示请求报错,此时建议您拆分待同步的表,分批配置多个任务,或者配置整库的同步任务。
    • WAL日志:
      • 需开启,即设置wal_level参数的值为logical
      • 如为增量同步任务,DTS要求源数据库的WAL日志保存24小时以上,如为全量同步和增量同步任务,DTS要求源数据库的WAL日志至少保留7天以上(您可在全量同步完成后将WAL日志保存时间设置为24小时以上),否则DTS可能因无法获取WAL日志而导致任务失败,极端情况下甚至可能会导致数据不一致或丢失。由于您所设置的WAL日志保存时间低于DTS要求的时间进而导致的问题,不在DTS的SLA保障范围内。

    • 源库的操作限制

      为保障同步任务的正常进行,避免主备切换导致的逻辑订阅中断,需要RDS PostgreSQL支持并开启Logical Replication Slot Failover,设置方式,请参见逻辑复制槽故障转移(Logical Replication Slot Failover)

    其他限制
    • 单个数据同步任务只能同步一个数据库,如需同步多个数据库,您需要为每个数据库配置数据同步任务。
    • 不支持数组(ARRAY)类型的数据同步。
    • 同步期间,如果同步对象的选择粒度为Schema,在待同步的Schema中创建了新的表或使用RENAME命令重建了待同步的表,您需要在对该表写入数据前执行ALTER TABLE schema.table REPLICA IDENTITY FULL;命令,以保障该表数据同步的一致性。
      说明 将上述命令中的schematable替换成真实的Schema名和表名。
    • DTS的校验对象为数据内容,暂不支持Sequence等元数据的校验,您需要自行校验。
    • 由于业务切换到目标端后,新写入的Sequence不会按照源库的Sequence最大值作为初始值去递增,您需要在业务切换前,在源库中查询对应Sequence的最大值,然后在目标库中将其作为对应Sequence的初始值。查询源库Sequence值的相关命令如下:
      do language plpgsql $$
      declare
        nsp name;
        rel name;
        val int8;
      begin
        for nsp,rel in select nspname,relname from pg_class t2 , pg_namespace t3 where t2.relnamespace=t3.oid and t2.relkind='S'
        loop
          execute format($_$select last_value from %I.%I$_$, nsp, rel) into val;
          raise notice '%',
          format($_$select setval('%I.%I'::regclass, %s);$_$, nsp, rel, val+1);
        end loop;
      end;
      $$;
    • DTS会在源库中创建以下临时表,用于获取增量数据的DDL、增量表的结构、心跳信息等。在同步期间,请勿删除源库中的临时表,否则会导致DTS任务异常。临时表会在DTS实例释放后自动删除。

      public.DTS_PG_CLASSpublic.DTS_PG_ATTRIBUTEpublic.DTS_PG_TYPEpublic.DTS_PG_ENUMpublic.DTS_POSTGRES_HEARTBEATpublic.DTS_DDL_COMMANDpublic.DTS_ARGS_SESSION

    • 为保障同步延迟时间展示的准确性,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
    类型 说明
    源库限制
    • 待同步的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据。
    • 如同步对象为表级别,且需进行编辑(如表列名映射),则单次同步任务仅支持同步至多1000张表。当超出数量限制,任务提交后会显示请求报错,此时建议您拆分待同步的表,分批配置多个任务,或者配置整库的同步任务。
    • WAL日志:
      • 需开启,即设置wal_level参数的值为logical
      • 如为增量同步任务,DTS要求源数据库的WAL日志保存24小时以上,如为全量同步和增量同步任务,DTS要求源数据库的WAL日志至少保留7天以上(您可在全量同步完成后将WAL日志保存时间设置为24小时以上),否则DTS可能因无法获取WAL日志而导致任务失败,极端情况下甚至可能会导致数据不一致或丢失。由于您所设置的WAL日志保存时间低于DTS要求的时间进而导致的问题,不在DTS的SLA保障范围内。

    • 如自建PostgreSQL进行主备切换,会导致同步失败。
    其他限制
    • 单个数据同步任务只能同步一个数据库,如需同步多个数据库,您需要为每个数据库配置数据同步任务。
    • 不支持数组(ARRAY)类型的数据同步。
    • 同步期间,如果同步对象的选择粒度为Schema,在待同步的Schema中创建了新的表或使用RENAME命令重建了待同步的表,您需要在对该表写入数据前执行ALTER TABLE schema.table REPLICA IDENTITY FULL;命令,以保障该表数据同步的一致性。
      说明 将上述命令中的schematable替换成真实的Schema名和表名。
    • DTS的校验对象为数据内容,暂不支持Sequence等元数据的校验,您需要自行校验。
    • 由于业务切换到目标端后,新写入的Sequence不会按照源库的Sequence最大值作为初始值去递增,您需要在业务切换前,在源库中查询对应Sequence的最大值,然后在目标库中将其作为对应Sequence的初始值。查询源库Sequence值的相关命令如下:
      do language plpgsql $$
      declare
        nsp name;
        rel name;
        val int8;
      begin
        for nsp,rel in select nspname,relname from pg_class t2 , pg_namespace t3 where t2.relnamespace=t3.oid and t2.relkind='S'
        loop
          execute format($_$select last_value from %I.%I$_$, nsp, rel) into val;
          raise notice '%',
          format($_$select setval('%I.%I'::regclass, %s);$_$, nsp, rel, val+1);
        end loop;
      end;
      $$;
    • DTS会在源库中创建以下临时表,用于获取增量数据的DDL、增量表的结构、心跳信息等。在同步期间,请勿删除源库中的临时表,否则会导致DTS任务异常。临时表会在DTS实例释放后自动删除。

      public.DTS_PG_CLASSpublic.DTS_PG_ATTRIBUTEpublic.DTS_PG_TYPEpublic.DTS_PG_ENUMpublic.DTS_POSTGRES_HEARTBEATpublic.DTS_DDL_COMMANDpublic.DTS_ARGS_SESSION

    • 为保障同步延迟时间展示的准确性,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间的双向同步
    类型 说明
    源和目标库的限制
    • 待同步的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据。
    • 如同步对象为表级别,且需进行编辑(如表列名映射),则单次同步任务仅支持同步至多1000张表。当超出数量限制,任务提交后会显示请求报错,此时建议您拆分待同步的表,分批配置多个任务,或者配置整库的同步任务。
    • WAL日志:
      • 需开启,即设置wal_level参数的值为logical
      • 如为增量同步任务,DTS要求源数据库的WAL日志保存24小时以上,如为全量同步和增量同步任务,DTS要求源数据库的WAL日志至少保留7天以上(您可在全量同步完成后将WAL日志保存时间设置为24小时以上),否则DTS可能因无法获取WAL日志而导致任务失败,极端情况下甚至可能会导致数据不一致或丢失。由于您所设置的WAL日志保存时间低于DTS要求的时间进而导致的问题,不在DTS的SLA保障范围内。

    • 为保障同步任务的正常进行,避免主备切换导致的逻辑订阅中断,需要RDS PostgreSQL支持并开启Logical Replication Slot Failover,设置方式,请参见逻辑复制槽故障转移(Logical Replication Slot Failover)

    其他限制
    • 目前仅支持在华东1(杭州)、华东2(上海)、华北1(青岛)地域配置。
    • 单个数据同步任务只能同步一个数据库,如需同步多个数据库,您需要为每个数据库配置数据同步任务。
    • 不支持数组(ARRAY)类型的数据同步。
    • 同步期间,如果同步对象的选择粒度为Schema,在待同步的Schema中创建了新的表或使用RENAME命令重建了待同步的表,您需要在对该表写入数据前执行ALTER TABLE schema.table REPLICA IDENTITY FULL;命令,以保障该表数据同步的一致性。
      说明 将上述命令中的schematable替换成真实的Schema名和表名。
    • DTS的校验对象为数据内容,暂不支持Sequence等元数据的校验,您需要自行校验。
    • 由于业务切换到目标端后,新写入的Sequence不会按照源库的Sequence最大值作为初始值去递增,您需要在业务切换前,在源库中查询对应Sequence的最大值,然后在目标库中将其作为对应Sequence的初始值。查询源库Sequence值的相关命令如下:
      do language plpgsql $$
      declare
        nsp name;
        rel name;
        val int8;
      begin
        for nsp,rel in select nspname,relname from pg_class t2 , pg_namespace t3 where t2.relnamespace=t3.oid and t2.relkind='S'
        loop
          execute format($_$select last_value from %I.%I$_$, nsp, rel) into val;
          raise notice '%',
          format($_$select setval('%I.%I'::regclass, %s);$_$, nsp, rel, val+1);
        end loop;
      end;
      $$;
    • DTS会在源库中创建以下临时表,用于获取增量数据的DDL、增量表的结构、心跳信息等。在同步期间,请勿删除源库中的临时表,否则会导致DTS任务异常。临时表会在DTS实例释放后自动删除。

      public.DTS_PG_CLASSpublic.DTS_PG_ATTRIBUTEpublic.DTS_PG_TYPEpublic.DTS_PG_ENUMpublic.DTS_POSTGRES_HEARTBEATpublic.DTS_DDL_COMMANDpublic.DTS_ARGS_SESSION

    • 为保障同步延迟时间展示的准确性,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张表。当超出数量限制,任务提交后会显示请求报错,此时建议您拆分待同步的表,分批配置多个任务,或者配置整库的同步任务。
  • WAL日志:
    • 需开启,即设置wal_level参数的值为logical
    • 如为增量同步任务,DTS要求源数据库的WAL日志保存24小时以上,如为全量同步和增量同步任务,DTS要求源数据库的WAL日志至少保留7天以上(您可在全量同步完成后将WAL日志保存时间设置为24小时以上),否则DTS可能因无法获取WAL日志而导致任务失败,极端情况下甚至可能会导致数据不一致或丢失。由于您所设置的WAL日志保存时间低于DTS要求的时间进而导致的问题,不在DTS的SLA保障范围内。

  • 源库的操作限制
其他限制
  • 暂不支持结构初始化,在配置同步任务前,您需要在目标实例中创建对应的库和表。
  • 同步对象要求:
    • 仅支持表级同步。
    • 不支持BIT、VARBIT、GEOMETRY、ARRAY、UUID、TSQUERY、TSVECTOR、TXID_SNAPSHOT类型的数据同步。
  • 单个数据同步任务只能同步一个数据库,如需同步多个数据库,您需要为每个数据库配置数据同步任务。
  • 同步期间,如果同步对象的选择粒度为Schema,在待同步的Schema中创建了新的表或使用RENAME命令重建了待同步的表,您需要在对该表写入数据前执行ALTER TABLE schema.table REPLICA IDENTITY FULL;命令,以保障该表数据同步的一致性。
    说明 将上述命令中的schematable替换成真实的Schema名和表名。
  • DTS会在源库中创建以下临时表,用于获取增量数据的DDL、增量表的结构、心跳信息等。在同步期间,请勿删除源库中的临时表,否则会导致DTS任务异常。临时表会在DTS实例释放后自动删除。

    public.DTS_PG_CLASSpublic.DTS_PG_ATTRIBUTEpublic.DTS_PG_TYPEpublic.DTS_PG_ENUMpublic.DTS_POSTGRES_HEARTBEATpublic.DTS_DDL_COMMANDpublic.DTS_ARGS_SESSION

  • 为保障同步延迟时间展示的准确性,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同步至PolarDB O引擎

类型 说明
源库限制
  • 待同步的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据。
  • 如同步对象为表级别,且需进行编辑(如表列名映射),则单次同步任务仅支持同步至多1000张表。当超出数量限制,任务提交后会显示请求报错,此时建议您拆分待同步的表,分批配置多个任务,或者配置整库的同步任务。
  • WAL日志:
    • 需开启,即设置wal_level参数的值为logical
    • 如为增量同步任务,DTS要求源数据库的WAL日志保存24小时以上,如为全量同步和增量同步任务,DTS要求源数据库的WAL日志至少保留7天以上(您可在全量同步完成后将WAL日志保存时间设置为24小时以上),否则DTS可能因无法获取WAL日志而导致任务失败,极端情况下甚至可能会导致数据不一致或丢失。由于您所设置的WAL日志保存时间低于DTS要求的时间进而导致的问题,不在DTS的SLA保障范围内。

  • 如自建PostgreSQL进行主备切换,会导致同步失败。
其他限制
  • 暂不支持结构初始化,在配置同步任务前,您需要在目标实例中创建对应的库和表。
  • 单个数据同步任务只能同步一个数据库,如需同步多个数据库,您需要为每个数据库配置数据同步任务。
  • 不支持数组(ARRAY)类型的数据同步。
  • 同步期间,如果同步对象的选择粒度为Schema,在待同步的Schema中创建了新的表或使用RENAME命令重建了待同步的表,您需要在对该表写入数据前执行ALTER TABLE schema.table REPLICA IDENTITY FULL;命令,以保障该表数据同步的一致性。
    说明 将上述命令中的schematable替换成真实的Schema名和表名。
  • DTS的校验对象为数据内容,暂不支持Sequence等元数据的校验,您需要自行校验。
  • 由于业务切换到目标端后,新写入的Sequence不会按照源库的Sequence最大值作为初始值去递增,您需要在业务切换前,在源库中查询对应Sequence的最大值,然后在目标库中将其作为对应Sequence的初始值。查询源库Sequence值的相关命令如下:
    do language plpgsql $$
    declare
      nsp name;
      rel name;
      val int8;
    begin
      for nsp,rel in select nspname,relname from pg_class t2 , pg_namespace t3 where t2.relnamespace=t3.oid and t2.relkind='S'
      loop
        execute format($_$select last_value from %I.%I$_$, nsp, rel) into val;
        raise notice '%',
        format($_$select setval('%I.%I'::regclass, %s);$_$, nsp, rel, val+1);
      end loop;
    end;
    $$;
  • DTS会在源库中创建以下临时表,用于获取增量数据的DDL、增量表的结构、心跳信息等。在同步期间,请勿删除源库中的临时表,否则会导致DTS任务异常。临时表会在DTS实例释放后自动删除。

    public.DTS_PG_CLASSpublic.DTS_PG_ATTRIBUTEpublic.DTS_PG_TYPEpublic.DTS_PG_ENUMpublic.DTS_POSTGRES_HEARTBEATpublic.DTS_DDL_COMMANDpublic.DTS_ARGS_SESSION

  • 为保障同步延迟时间展示的准确性,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 MySQL

类型 说明
源库限制
  • 待同步的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据。
  • 如同步对象为表级别,且需进行编辑(如表列名映射),则单次同步任务仅支持同步至多1000张表。当超出数量限制,任务提交后会显示请求报错,此时建议您拆分待同步的表,分批配置多个任务,或者配置整库的同步任务。
  • WAL日志:
    • 需开启,即设置wal_level参数的值为logical
    • 如为增量同步任务,DTS要求源数据库的WAL日志保存24小时以上,如为全量同步和增量同步任务,DTS要求源数据库的WAL日志至少保留7天以上(您可在全量同步完成后将WAL日志保存时间设置为24小时以上),否则DTS可能因无法获取WAL日志而导致任务失败,极端情况下甚至可能会导致数据不一致或丢失。由于您所设置的WAL日志保存时间低于DTS要求的时间进而导致的问题,不在DTS的SLA保障范围内。

  • 源库的操作限制

    为保障同步任务的正常进行,避免主备切换导致的逻辑订阅中断,需要RDS PostgreSQL支持并开启Logical Replication Slot Failover,设置方式,请参见逻辑复制槽故障转移(Logical Replication Slot Failover)

其他限制
  • 单个数据同步任务只能同步一个数据库,如需同步多个数据库,您需要为每个数据库配置数据同步任务。
  • 同步期间,如果同步对象的选择粒度为Schema,在待同步的Schema中创建了新的表或使用RENAME命令重建了待同步的表,您需要在对该表写入数据前执行ALTER TABLE schema.table REPLICA IDENTITY FULL;命令,以保障该表数据同步的一致性。
    说明 将上述命令中的schematable替换成真实的Schema名和表名。
  • DTS会在源库中创建以下临时表,用于获取增量数据的DDL、增量表的结构、心跳信息等。在同步期间,请勿删除源库中的临时表,否则会导致DTS任务异常。临时表会在DTS实例释放后自动删除。

    public.DTS_PG_CLASSpublic.DTS_PG_ATTRIBUTEpublic.DTS_PG_TYPEpublic.DTS_PG_ENUMpublic.DTS_POSTGRES_HEARTBEATpublic.DTS_DDL_COMMANDpublic.DTS_ARGS_SESSION

  • 为保障同步延迟时间展示的准确性,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的连接地址和可用区,否则会导致同步失败。