二、支持的版本
| 类型 | 支持版本 |
| 自建 PostgreSQL | 9.6 / 10.x / 11.x / 12.x / 13.x / 14.x / 15.x / 16.x |
| 腾讯云 PostgreSQL | 11.x / 12.x / 13.x / 14.x / 15.x / 16.x / 17.x / 18.x |
三、读取能力
| 能力 | 支持情况 | 说明 |
| 离线同步(读 / 写) | ✓ / – | 支持作为离线同步任务的源端读取数据;DataBuddy 数据源仅支持接入读取,不支持写入 |
| 实时同步(读 / 写) | ✓ / – | 支持作为实时同步任务的源端读取整库数据变更;DataBuddy 数据源仅支持接入读取,不支持写入 |
| 分库分表同步(读 / 写) | ✓ / – | 支持以分库分表方式读取多个分表数据;DataBuddy 数据源仅支持接入读取,不支持写入 |
完整数据源能力对照参见 支持的数据源与读取能力。
五、实时同步限制
| 限制项 | 说明 |
| 逻辑复制版本要求 | PostgreSQL 10+ 才支持原生逻辑复制 |
| wal_level | 必须设置为 logical |
| 复制槽 | 需要创建复制槽(Replication Slot) |
| 无主键表 | 需设置 REPLICA IDENTITY FULL |
| 发布(Publication) | 需要创建发布来指定同步的表 |
六、离线同步限制
| 限制项 | 说明 |
| 视图 | 支持读取视图 |
| 切割键 | 仅支持整型字段 |
| 特殊字符表名 | 表名 / 字段名不支持数字开头或包含大小写字母、中划线 |
七、支持的字段类型
完整字段类型请参见 PostgreSQL 产品文档。
| 字段类型 | 离线读 | 实时读 |
| SMALLINT / SMALLSERIAL / INTEGER / SERIAL / BIGINT / BIGSERIAL | ✅ | ✅ |
| REAL / DOUBLE PRECISION / NUMERIC / DECIMAL / MONEY | ✅ | ✅ |
| BOOLEAN | ✅ | ✅ |
| CHAR / VARCHAR / TEXT / UUID | ✅ | ✅ |
| JSON / JSONB / ARRAY | ✅ | ✅ |
| DATE / TIME / TIMETZ / TIMESTAMP / TIMESTAMPTZ | ✅ | ✅ |
| INTERVAL | ✅ | ✅ |
| BYTEA / BIT / BIT VARYING | ✅ | ✅ |
| CIDR / INET / MACADDR | ✅ | ✅ |
| POINT / LINE / LSEG / BOX / PATH / POLYGON / CIRCLE | ✅ | ✅ |
八、字段类型映射(离线同步)
同步时源端字段类型会转换为 DataBuddy 内部类型(同步链路中的中间类型)。配置任务前请重点核对「备注」列标注的类型,避免精度丢失或语义变化。
| 源端类型 | DataBuddy 内部类型 | 备注 |
| SMALLINT / SMALLSERIAL / INTEGER / SERIAL / BIGINT / BIGSERIAL | Long | – |
| REAL / DOUBLE PRECISION | Double | 遵循 IEEE 754 浮点精度 |
| NUMERIC / DECIMAL | Double | 转为双精度浮点数,超出精度范围会丢失小数精度;对精度敏感的场景建议在目标端改用 Decimal 或字符串类型 |
| MONEY | String | 按文本读取,保留货币符号与千分位 |
| BOOLEAN | Boolean | – |
| BIT | Boolean | 读取为 true / false |
| BIT VARYING | String | 按位串文本读取 |
| CHAR / VARCHAR / TEXT | String | – |
| UUID | String | – |
| JSON / JSONB | String | 按文本读取,不做结构化解析 |
| ARRAY | String | 按 JSON 文本序列化读取 |
| INTERVAL | String | 按文本读取,不落数值 |
| CIDR / INET / MACADDR | String | 按文本读取,不解析网络地址语义 |
| POINT / LINE / LSEG / BOX / PATH / POLYGON / CIRCLE | String | 按文本读取,不解析几何语义 |
| DATE | Date | 精确到日 |
| TIME / TIMETZ / TIMESTAMP / TIMESTAMPTZ | Date | 均按日期时间读取,不区分时区语义 |
| BYTEA | Bytes | 不做内容解析 |
| 上表未列出的其他类型 | – | 任务报错并提示不支持的字段类型 |
九、字段类型映射(实时同步)
实时同步(整库多表)由 CDC 连接器解析源端类型并写入 TCLake。下表为自动建表时目标表实际使用的字段类型 ,配置任务前请重点核对「备注」列标注的类型。
| 源端类型 | TCLake 目标类型 | 备注 |
| SMALLINT / SMALLSERIAL / INTEGER / SERIAL | INTEGER | – |
| BIGINT / BIGSERIAL | LONG | – |
| BOOLEAN | BOOLEAN | – |
| NUMERIC / DECIMAL(精度 ≤ 38) | DECIMAL | 精度与标度保留 |
| NUMERIC / DECIMAL(精度 > 38) | STRING | 精度超出 38 降级为字符串 |
| REAL | FLOAT | 与离线落 Double 不同 |
| DOUBLE PRECISION | DOUBLE | – |
| DATE | DATE | – |
| TIME | STRING | 不落时间类型 |
| TIMESTAMP | TIMESTAMP | 不带时区 |
| TIMESTAMP WITH TIME ZONE | TIMESTAMPTZ | 带时区语义,与 TIMESTAMP 落点不同 |
| INTERVAL | LONG | – |
| CHAR / VARCHAR / TEXT | STRING | – |
| JSON / JSONB / UUID / XML | STRING | 按文本读取,不解析结构 |
| BYTEA | STRING | 二进制按字符串承载 |
| BIT / BIT VARYING | STRING | 按位串文本读取 |
| CIDR / INET / MACADDR / MONEY / PG_LSN / TSQUERY / TSVECTOR / TXID_SNAPSHOT | STRING | 按文本读取,不解析专有语义 |
| POINT / LINE / LSEG / BOX / PATH / POLYGON / CIRCLE | STRING | 按文本读取,不解析几何语义 |
注意:说明:
十一、DML
| 操作 | 是否支持 |
| INSERT / DELETE / UPDATE | ✅ |
十二、DDL
| 操作 | 是否支持 |
| 新增表 / 新增列 / 删除列 / 修改列类型 | ✅ |
| 删除表 / 清空表 / 重命名表(RENAME TABLE) | ❌ |
PostgreSQL 逻辑复制对 DDL 变更的支持有限,Schema 变更后可能需要重新配置同步任务与发布。
十四、1. 配置账号权限
离线同步 :
CREATE USER wedata_user WITH PASSWORD 'your_password';GRANT CONNECT ON DATABASE your_database TO wedata_user;GRANT USAGE ON SCHEMA public TO wedata_user;GRANT SELECT ON ALL TABLES IN SCHEMA public TO wedata_user;
实时同步 :
CREATE USER wedata_cdc_user WITH REPLICATION PASSWORD 'your_password';GRANT CONNECT ON DATABASE your_database TO wedata_cdc_user;GRANT USAGE ON SCHEMA public TO wedata_cdc_user;GRANT SELECT ON ALL TABLES IN SCHEMA public TO wedata_cdc_user;
十五、2. 配置 WAL 级别(仅实时同步)
SHOW wal_level;
腾讯云 PostgreSQL 在控制台「参数设置」中将 wal_level 设置为 logical。自建 PostgreSQL 修改 postgresql.conf:
wal_level = logicalmax_replication_slots = 10max_wal_senders = 10
修改后需要重启数据库才能生效。
十六、3. 配置 pg_hba.conf(仅实时同步)
# TYPE DATABASE USER ADDRESS METHODhost replication wedata_cdc_user 10.0.0.0/8 md5
十七、4. 创建发布(仅实时同步)
CREATE PUBLICATION wedata_pub FOR TABLE table1, table2;– 或:CREATE PUBLICATION wedata_pub FOR ALL TABLES;
十八、5. 设置 REPLICA IDENTITY(无主键表)
ALTER TABLE your_table REPLICA IDENTITY FULL;
20、操作步骤
1. 登录 DataBuddy 控制台。
2. 在顶部切换到目标地域和 Workspace。
3. 进入 数据集成 > 数据源管理 (或 平台管理 > 数据源管理 )。
4. 点击 添加数据源 ,选择 PostgreSQL 。
5. 填写连接配置与认证信息,详见 参数说明。
6. 点击 连通性测试 (参见 数据源连通性测试)。
7. 测试通过后点击 保存 或 保存 & 创建任务 。
21、参数说明
| 参数 | 说明 | 是否必填 |
| 数据源名称 | 数据源在工作空间内的唯一标识 | 是 |
| JDBC URL | jdbc:postgresql://host:port/database | 是 |
| 用户名 | 数据库连接账号 | 是 |
| 密码 | 数据库连接密码(支持 SSM 凭证托管) | 是 |
| 数据源版本 | 12 / 13 / 14 / 15 / 16 | 是 |
23、实时整库
| 配置项 | 说明 |
| 来源表范围 | 指定表 (仅同步选中的表,新增表需重启)/ 正则匹配 (指定库名 + 表名正则,符合规则的新增表自动接入) |
| 读取模式 | 全量 + 增量 / 仅增量 |
24、离线单表
| 参数 | 说明 |
| 库 / Schema / 表 | 必填,Schema 默认 public;表支持范围 table_[0-99] |
| 切割键 | 仅支持整型字段;建议主键或索引列 |
| 筛选条件 | 标准 WHERE 语法 |
详细任务配置参见 表到表同步 与 实时整库多表任务配置。
25、最佳实践
·账号权限最小化 :使用专用账号,仅授必要权限。
·WAL 日志保留 :ALTER SYSTEM SET wal_keep_size = '1GB';
·切割键选择 :主键或索引列。
·网络打通 :优先使用内网连接。
27、Q:实时同步报错 wal_level 不支持?
A:未将 wal_level 设置为 logical。
ALTER SYSTEM SET wal_level = 'logical';– 修改后需重启数据库
28、Q:报错无法创建复制槽?
A:max_replication_slots 太小:
ALTER SYSTEM SET max_replication_slots = 20;
29、Q:无主键表 UPDATE / DELETE 无法正确同步?
A:未设置 REPLICA IDENTITY:
ALTER TABLE your_table REPLICA IDENTITY FULL;
30、Q:连接被拒绝?
A:pg_hba.conf 未允许 DataBuddy 网段连接。在文件中添加:
host all wedata_user 10.0.0.0/8 md5host replication wedata_cdc_user 10.0.0.0/8 md5
31、Q:包含特殊字符的表名无法同步?
A:不支持表名、字段名以数字开头或包含大小写字母、中划线
32、相关文档
·添加数据源连接
·数据源连通性测试
·支持的数据源与读取能力
·实时整库多表任务配置