使用说明

最近更新时间:2024-07-11 17:06:12

我的收藏
类别
说明
支持版本
1. 源库
自建数据库 PostgreSQL 9.3、9.4、9.5、9.6、10-16
第三方云厂商(阿里云 RDS PostgreSQL/AWS RDS PostgreSQL/华为云 RDS for PostgreSQL)9.3、9.4、9.5、9.6、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。
数据类型
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
CREATE DATABASE、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 日志变化,原同步任务会失败,需要清理目标库已同步的数据,然后重新建立同步任务。