示例-从 PostgreSQL 同步到 ProtonBase
准备工作
网络部分参考 数据同步网络配置
权限
只包含全量作业,授予如下权限,其中 schema1、other_schema 替换成需要备同步的 schema,user 为同步作业的用户
postgres=# grant select on all tables in schema ${schema1},[${other_schema}] to ${user};
postgres=# grant usage on ${schema1},[${other_schema}] to ${user};
包含增量作业,请新增带 REPLICATION 权限的用户(因为云厂商不授予 SuperUser 账号,无法给已有用户赋予 REPLICATION 权限)
- 高权限账号登录
psql postgres://${user}:${password}@${host}:5432/${your_database_name}
- 创建 cdc 同步用户:
CREATE USER ${cdc_user} WITH REPLICATION ENCRYPTED PASSWORD '${cdc_user_passord}';
- 对 cdc_user 赋权
postgres=# grant select on all tables in schema schema1,[other_schema] to ${cdc_user};
postgres=# grant usage on schema schema1,[other_schema] to ${cdc_user};
增量作业设置
wal_level = logical
- 自建服务,请修改 postgresql.conf 文件中 wal_level 值后重启
- 云厂商
- 阿里云:请参考官网设置 (opens in a new tab)
创建订阅(PUBLICATION)
- 高权限账号登录
psql -h ${host} -p 5432 -U ${user} "dbname=${your_database_name} replication=database" -W
- 创建订阅
CREATE PUBLICATION teleport_pub FOR ALL TABLES;
或者
CREATE PUBLICATION teleport_pub FOR TABLE ${your_schema}.${your_table}, ...;
数据源配置
PostgreSQL 数据源需要配置如下连接属性
- Host:postgres 服务地址
- Port:postgres 服务端口,一般为 5432
- Username:上述权限的用户
- Password:上述权限用户对应的密码
默认节点映射
节点的默认映射规则如下
concat(SOURCE_DATABASE, '.', SOURCE_SCHEMA, '.', SOURCE_OBJECT)
含义为:
PostgreSQL 的表比如 d.s.t (其中 d 为 database 名,s 为 scheam, t 为表名)映射到 ProtonBase 下的 d.s.t
默认字段映射
"_" 开头表示数组
PostgreSQL | ProtonBase |
---|---|
INT2 | INT2 |
_INT2 | _INT2 |
INT4 | INT4 |
_INT4 | _INT4 |
INT8 | INT8 |
_INT8 | _INT8 |
CHAR | CHAR |
_CHAR | _CHAR |
BPCHAR | BPCHAR |
_BPCHAR | _BPCHAR |
VARCHAR | VARCHAR |
_VARCHAR | _VARCHAR |
TEXT | TEXT |
_TEXT | _TEXT |
NUMERIC | NUMERIC |
_NUMERIC | _NUMERIC |
FLOAT4 | FLOAT4 |
_FLOAT4 | _FLOAT4 |
FLOAT8 | FLOAT8 |
_FLOAT8 | _FLOAT8 |
BOOL | BOOL |
_BOOL | _BOOL |
DATE | DATE |
_DATE | _DATE |
TIME | TIME |
_TIME | _TIME |
TIMETZ | TIMETZ |
_TIMETZ | _TIMETZ |
TIMESTAMP | TIMESTAMP |
_TIMESTAMP | _TIMESTAMP |
TIMESTAMPTZ | TIMESTAMPTZ |
_TIMESTAMPTZ | _TIMESTAMPTZ |
BYTEA | BYTEA |
_BYTEA | _BYTEA |
NAME | NAME |
NAME_ARRAY | NAME_ARRAY |
BIT | BIT |
_BIT | _BIT |
INTERVAL | INTERVAL |
_INTERVAL | _INTERVAL |
VARBIT | VARBIT |
_VARBIT | _VARBIT |
UUID | UUID |
_UUID | _UUID |
XML | XML |
_XML | _XML |
JSONB | JSONB |
_JSONB | _JSONB |
JSON | JSON |
_JSON | _JSON |