兼容模式
- PG模式
- 生产为PG模式(单节点)(必须wal_level=logical)
- 备库模式(只读备库)(主从必须wal_level=logical)
注:截止2024年11月,teledb-x暂不支持DDL同步
1 数据库配置(必选项)
1.1 日志格式配置(如果已经修改过,可忽略)
- 修改postgresql.conf文件
#逻辑级别日志
wal_level = logical
#如果需要远程读日志,需要设置,至少为1,就接受1个读日志线程
max_wal_senders = 10 #建议大于等于10
#设置日志保留个数,设置太少了,日志量太大了日志自动删除后,容易读不到日志
wal_keep_segments = 10 #建议大于等于10
# wal_keep_size:要为日志复制进程保留多少日志量。旧版本使用的是wal_keep_segments参数(要为日志复制进程保留多少个日志文件),在pg 13中,该参数已被移除。wal_keep_size = wal_keep_segments * wal_segment_size
# 修改完成后需要重启数据库:pg_ctl -D /var/lib/postgresql/data -l logfile restart
# wal_level=logical 需要重启数据库
- 验证是否成功
postgres=# select name,setting,category from pg_settings where name in ('wal_level','wal_keep_segments','max_wal_senders','wal_keep_size');
name | setting | category
-------------------+---------+-------------------------------
max_wal_senders | 10 | Replication / Sending Servers
wal_keep_segments | 10 | Replication / Sending Servers
wal_level | logical | Write-Ahead Log / Settings
(3 rows)
2 数据表配置(必选项)
2.1 需要同步的表打开补充日志
ALTER TABLE schemaname.tabname REPLICA IDENTITY FULL;
---批量生成打开表补充日志sql语句参考
SELECT 'ALTER TABLE '||nspname||'.'||relname||' REPLICA IDENTITY FULL;' FROM pg_class c,pg_namespace n where relnamespace = n.oid and c.relkind='r' and nspname='public';
---注1:表所属用户或者超级用户才有开启REPLICA IDENTITY权限,否则报错:must be owner of table
2.1.1 分区表检查SQL以及注意事项
源表为分区表开启补充日志
SELECT
parent.relname AS partitioned_table_name,
parent.relkind AS partitioned_table_type,
parent.relpartbound AS partition_bound,
child.relname,
child.relkind,
child.relreplident,
'ALTER TABLE ' || nspname || '.' || child.relname || ' REPLICA IDENTITY FULL' rif
FROM
pg_class parent
LEFT JOIN pg_inherits ON pg_inherits.inhparent = parent.oid
LEFT JOIN pg_class child ON pg_inherits.inhrelid = child.oid
LEFT JOIN pg_namespace pns ON child.relnamespace = pns.oid
WHERE
parent.relkind = 'p'
AND parent.relname = 'tabname';
---该语句能查询出分区表中的分区是否开启补充日志,若没有开启,可通过生成的批量SQL开启表补充日志
3 用户授权(必选项)
3.1 创建用户及赋权
切换到同步库下,执行如下(数据库命令行执行):
create user zcbus with password '*****';
grant connect on database *** to zcbus; # ***为需要同步的数据库名称
create schema zcbus authorization zcbus;
grant select on all tables in schema pg_catalog to zcbus;
grant select on all tables in schema *** to zcbus; # *为需要同步的schema名称
alter user zcbus REPLICATION;
grant usage on schema *** to zcbus; # *为需要同步的schema名称
以上过程中,web页面不要点击注册按键,所有配置手工完成!
4 数据类型支持列表
在抓取数据时,我们将PostgreSql数据类型与Zcbus支持的类型相匹配。如果我们不支持某个数据类型,我们会自动将该类型更改为最受支持的类型,或者在某些情况下,根本不加载该数据。我们的系统将会抛出异常、跳过我们不接受或转换的数据类型对应表。
PostgreSql类型 | 是否支持 | 描述 |
---|---|---|
smallint | 支持 | |
integer | 支持 | |
bigint | 支持 | |
decimal(m,d) | 支持 | |
numeric(m,d) | 支持 | |
real | 支持 | |
double precision | 支持 | |
smallserial | 支持 | |
serial | 支持 | |
bigserial | 支持 | |
money | 支持 | |
character varying(n) | 支持 | |
varchar(n) | 支持 | |
character(n) | 支持 | |
char(n) | 支持 | |
text | 支持 | |
timestamp | 支持 | |
tmestamp with time zone | 支持 | |
date | 支持 | |
time | 支持 | |
time with time zone | 支持 | |
interval | 支持 | |
bit(n) | 支持 | |
bit varing(n) | 支持 | |
boolean | 支持 | |
point | 支持 | |
line | 支持 | |
lseg | 支持 | |
box | 支持 | |
path | 支持 | |
polygon | 支持 | |
circle | 支持 | |
cidr | 支持 | |
inet | 支持 | |
macaddr | 支持 | |
tsvector | 支持 | |
tsquery | 支持 | |
uuid | 支持 | |
xml | 支持 |
文档更新时间: 2024-10-18 22:32 作者:周风磊