使用说明

最近更新时间:2025-08-21 15:03:22

我的收藏
类别
说明
支持版本
1. 源库
自建数据库 PostgreSQL 10-16
第三方云厂商(阿里云 RDS PostgreSQL/AWS RDS PostgreSQL/华为云 RDS for PostgreSQL)10-16
云数据库 PostgreSQL 10-16(相同主账号之间迁移/不同主账号之间迁移)
2. 目标库
云数据库 PostgreSQL 10-16
源库影响
1. DTS 在执行全量数据同步时,会占用一定的源端实例资源,可能会导致源实例负载上升,增加数据库自身压力。如果您数据库配置过低,建议您在业务低峰期进行操作。
2. 默认采用无锁方式,同步过程中对源库不加全局锁。
3. 数据同步时,DTS 会使用执行同步任务的账号在源库中建立 postgres.public.identify、{database}.__tencentdb__sync_*.* 来记录任务状态、配置信息,目标实例会使用 {database}.__tencentdb__ schema 记录同步状态信息。postgres.public.identify、{database}.__tencentdb__sync_*.*、{database}.__tencentdb__ schema 占用空间非常小,约为源库存储空间的千分之一到万分之一 ,所以对源库的性能无影响,也不会抢占资源。
4. 因同步任务依赖 max_replication_slots 参数(每个数据库配置同步任务时占用一个 replication_slots),可通过 SQL 语句 select * from pg_replication_slots查看已使用情况,如果已配置同步库数量 + replication_slots > max_replication_slots,新建同步任务会失败,需要用户主动结束任务后系统才会释放 replication_slots(失败任务未结束不会释放 replication_slots)。
同步对象
1. 不支持的对象同步:ROLE、PROCEDURE、TRIGGER、FUNCTION、RULE 等。
2. 不支持公共对象和权限变更同步。
3. 全量阶段结构初始化不支持外键导入,会自动移除外键约束后导入。
4. 数据同步不支持 FOREIGN TABLE 表类型,全量阶段导出导入不支持 TEMPORARY TABLE,增量同步阶段仅支持 UNLOGGED TABLE 数据结构同步。
5. 源库在增量阶段对 SEQUENCE 对象更新,同步到目标库后不支持对 SEQUENCE 的 last_value 的刷新,可能需要用户自行检查同步结果,并手动修改目标库上的取值。
6. 源库的对象同步目标端后,对象 owner 会改为目标库账号。例如之前表1的 owner 为 A,目标库使用 B 账号进行同步,则写入到目标库后表1的 owner 改为 B。
7. 不支持选择源端整个实例进行同步,如果在后续同步任务中,源端有新建库的操作(CREATE DATABASE),建议在同步任务启动前,自行在目标端创建好该库对象。
8. 如果在同步任务过程中,源端有 CREATE TABLE,RENAME TABLE 操作,请在配置阶段选择同步对象时,勾选该表所在的整库,否则新建的表,或者 RENAME 后的表不会同步到目标端。
9. 选择整库同步时,目标端不能存在同名的 schema 或者同名的表对象。
10. 只读实例不支持作为源端实例和目标端实例。
11. 增量同步阶段暂不支持触发器和存储过程同步。
12. 不在同步对象内的对象,不支持发起增量校验。
13. 暂不支持同步临时表。
数据类型
1. 支持的数据类型
Aclitem、Bit、Bool、Box、Bpchar、Bytea、Char、Cid、Cidr、Circle、Date、Float4、Float8、Inet、Int2、Int4、Int8、Interval、JSON、Jsonb、Jsonpath、Line、Lseg、Macaddr、Name、Numeric、Oid、Path、Point、Polygon、Record、Text、Tid、Time、Timestamp、Timestamptz、Unknown、UUID、Varbit、Varchar、XID、Daterange、Int4range、Int8range、Numrange、Tsrange、Tstzrange、Datemultirange、Int4multirange、Int8multirange、Nummultirange、
Tsmultirange、Tstzmultirange、XML、Money、Time with time zone、Tsvector、Tsquery、pg_lsn、txid_snapshot。
2. 时区
源实例带时区的字段(timestamp with time zone)同步到目标实例后,会自动转为目标实例时区的对应值。
3. 建议使用 UTF8 字符集,否则可能出现控制台界面展示问题。
支持的 SQL
1. DML
INSERT、UPDATE、DELETE
2. DDL
DROP DATABASE、ALTER DATABASE
CREATE SCHEMA、DROP SCHEMA
CREATE TABLE、ALTER TABLE、DROP TABLE
CREATE VIEW、DROP VIEW
CREATE INDEX、DROP INDEX
CREATE SEQUENCE、DROP SEQUENCE
说明:
暂不支持 CREATE TABLE 表名 AS SELECT 语句。
暂不支持 WHERE 条件过滤的 SQL 过滤策略。
同步功能说明
1. 同步任务阶段不可以删除目标端对象。
2. 增量同步过程中创建带外键约束表,写入数据时,会导致任务失败。
3. 在全量初始化场景下,如果存在部分未同步的分区表以及其索引,会导致全量导入分区表索引同步失败。建议将分区表加入到同步对象内。
4. 暂不支持仅结构同步,仅全量同步。
操作限制
1. 同步过程中请勿进行如下操作,否则会导致同步任务失败。
请勿修改、删除源数据库和目标数据库中的用户信息(包括用户名、密码和权限)和端口号。
增量同步阶段同时高并发的 DDL 和 DML 操作可能会存在数据冲突,建议减少增量阶段的 DDL。
请勿在源库上执行清除 WAL 的操作。
在同步增量阶段,请勿删除系统库和 schema postgres.public.identify、__tencentdb__sync_*.* 、{database}.__tencentdb__ schema。
源和目标数据库类型为腾讯云数据库时,请勿修改数据库实例的网络,如发生源实例和目标实例网络变更,导致原 VIP 被删除,同步任务失败、或保持运行中状态不变(此时同步已不再工作),这种情况,同步任务无法重试,需要手动结束该任务后重新建立新的同步任务。
2. 增量 DDL 不会同步在 plsql 中(匿名块、procedure 和 function )执行的 DDL。
3. 不支持表名的重命名
4. 暂不支持在匿名块中通过 execute fomat(create table) 方式创建表操作。
5. 在结构初始化之后和全量导出之前,不支持 create table 操作,否则会出现“该表在目标端不存在”的报错。
6. 目标库已存在同名插件且与源库插件在不同的 schema 下,同时源库对象引用插件内函数或类型的情况下,不支持对源库对象进行库表映射。
数据同步说明
1. DTS 在启动数据同步任务时,会对等待同步的表及新建的表(针对开启增量 DDL 的任务)设置 REPLICA IDENTITY FULL 属性,如果表上有长事务会导致设置超时,进而导致任务失败。
2. DTS 在启动数据同步任务时,如果数据库实例存在未提交的长事务,则会创建复制槽 slot 超时,进而导致任务失败。
源库 HA
源库发生 HA 等操作导致源实例主节点发生迁移会引起 WAL 日志变化,原同步任务会失败,需要清理目标库已同步的数据,然后重新建立同步任务。