类别 | 说明 |
支持版本 | 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 后的表不会同步到目标端。 |
数据类型 | 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)同步到目标实例后,会自动转为目标实例时区的对应值。 |
支持的 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. 增量同步阶段同时高并发的 DDL 和 DML 操作可能会存在数据冲突,建议减少增量阶段的 DDL。 3. 请勿在源库上执行清除 WAL 的操作。 4. 在同步增量阶段,请勿删除系统库和 schema postgres.public.identify、__tencentdb__sync_*.* 、{database}.__tencentdb__ schema。 5. 源和目标数据库类型为腾讯云数据库时,请勿修改数据库实例的网络,如发生源实例和目标实例网络变更,导致原 VIP 被删除,同步任务失败、或保持运行中状态不变(此时同步已不再工作),这种情况,同步任务无法重试,需要手动结束该任务后重新建立新的同步任务。 |
源库 HA | 源库发生 HA 等操作导致源实例主节点发生迁移会引起 WAL 日志变化,原同步任务会失败,需要清理目标库已同步的数据,然后重新建立同步任务。 |