帮你快速理解、总结文档立即下载

PostgreSQL 数据源

最近更新时间:2026-09-11 20:42:31
我的收藏

概述

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)
需要创建发布来指定同步的表

离线同步限制

限制项
说明
视图
支持读取视图
切割键
仅支持整型字段
特殊字符表名
表名 / 字段名不支持数字开头或包含大小写字母、中划线

支持的字段类型

完整字段类型请参见 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

实时同步支持的 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 = logical
max_replication_slots = 10
max_wal_senders = 10
修改后需要重启数据库才能生效。

3. 配置 pg_hba.conf(仅实时同步)

# TYPE DATABASE USER ADDRESS METHOD
host 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/mydb
jdbc: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 md5
host replication wedata_cdc_user 10.0.0.0/8 md5

Q:包含特殊字符的表名无法同步?

A:不支持表名、字段名以数字开头或包含大小写字母、中划线

相关文档