概述
PostgreSQL 是功能强大的开源对象关系型数据库系统。DataBuddy 数据接入支持将 PostgreSQL 作为来源端,覆盖离线同步、实时整库同步与分库分表同步等场景。本文介绍其连接配置、能力支持范围、前提条件与常见问题。
支持的版本
类型 | 支持版本 |
自建 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 |
JDBC Driver | postgresql-42.2.26 |
读取能力
能力 | 离线读 | 实时整库读 | 分库分表读 |
支持 | ✓ | ✓ | ✓ |
使用限制
实时同步限制
限制项 | 说明 |
逻辑复制版本要求 | PostgreSQL 10+ 才支持原生逻辑复制 |
wal_level | 必须设置为 logical |
复制槽 | 需要创建复制槽(Replication Slot) |
无主键表 | 需设置 REPLICA IDENTITY FULL |
发布(Publication) | 需要创建发布来指定同步的表 |
离线同步限制
限制项 | 说明 |
视图 | 支持读取视图 |
切割键 | 仅支持整型字段 |
特殊字符表名 | 表名 / 字段名不支持数字开头或包含大小写字母、中划线 |
支持的字段类型
字段类型 | 离线读 | 实时读 |
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 | ❌ | ❌ |
实时同步支持的 DML / DDL
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;
创建数据源
操作步骤
1. 登录 DataBuddy 控制台。
2. 在顶部切换到目标地域和 Workspace。
3. 进入 数据接入 > 任务管理 > 数据源管理 (或 平台管理 > 数据源管理 )。
4. 点击 添加数据源 ,选择 PostgreSQL 。
5. 填写连接配置与认证信息,详见 参数说明。
6. 点击 测试连接 (参见 数据源连通性测试)。
7. 测试通过后点击 保存 或 保存 & 创建任务 。
参数说明
参数 | 说明 | 是否必填 |
数据源名称 | 数据源在工作空间内的唯一标识 | 是 |
JDBC URL | jdbc:postgresql://host:port/database | 是 |
用户名 | 数据库连接账号 | 是 |
密码 | 数据库连接密码(支持 SSM 凭证托管) | 是 |
数据源版本 | 12 / 13 / 14 / 15 / 16 | 是 |
JDBC URL 示例:
jdbc:postgresql://10.0.0.1:5432/mydbjdbc:postgresql://10.0.0.1:5432/mydb?reWriteBatchedInserts=true
常用 URL 参数:
参数 | 说明 |
reWriteBatchedInserts | 优化批量插入性能(推荐 true) |
ssl / sslmode | SSL 连接配置 |
connectTimeout | 连接超时时间(秒) |
在数据接入任务中使用
实时整库
配置项 | 说明 |
来源表范围 | 指定表 (仅同步选中的表,新增表需重启)/ 正则匹配 (指定库名 + 表名正则,符合规则的新增表自动接入) |
读取模式 | 全量 + 增量 / 仅增量 |
离线单表
参数 | 说明 |
库 / Schema / 表 | 必填,Schema 默认 public;表支持范围 table_[0-99] |
切割键 | 仅支持整型字段;建议主键或索引列 |
筛选条件 | 标准 WHERE 语法 |
最佳实践
账号权限最小化 :使用专用账号,仅授必要权限。
WAL 日志保留 :
ALTER SYSTEM SET wal_keep_size = '1GB';切割键选择 :主键或索引列。
网络打通 :优先使用内网连接。
常见问题
Q:实时同步报错 wal_level 不支持?
A:未将
wal_level 设置为 logical。ALTER SYSTEM SET wal_level = 'logical';-- 修改后需重启数据库
Q:报错无法创建复制槽?
A:
max_replication_slots 太小:ALTER SYSTEM SET max_replication_slots = 20;
Q:无主键表 UPDATE / DELETE 无法正确同步?
A:未设置
REPLICA IDENTITY:ALTER TABLE your_table REPLICA IDENTITY FULL;
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
Q:包含特殊字符的表名无法同步?
A:不支持表名、字段名以数字开头或包含大小写字母、中划线
相关文档
创建单表同步任务