PostgreSQL逻辑复制(logic replication)
-
发布端库
修改/etc/postgresql/13/db1/postgresql.conf(debian下按服务安装创建的postgresql配置路径,按照自己安装时的配置相应替换)配置,修改wal_level为logical:
wal_level= logical
wal_level有三个级别,分别是minimal\replica\logical. 物理复制时,选择默认的replica即可。逻辑复制时选择logical。
-
发布端库修改用于逻辑复制的用户的权限
要包含连接与复制(replication)的权限:
host all dbuser 192.168.168.131/32 trust
-
发布端库(publisher)创建PUBLICATION:
CREATE PUBLICATION mypub FOR TABLE tab_mac;
-
订阅端库(subscriber) 创建SUBSRIPTION(使用有SUPERUSER权限的用户登录订阅端库来创建):
CREATE SUBSCRIPTION mysub CONNECTION 'dbname=v1db host=192.168.168.131 user=dbuser' PUBLICATION mypub;
如果多个订阅端库创建相同名字的SUBSCRIPTION,会因为自动创建对应的replication_slot名字重复而不能创建.
-
查看订阅
select * from pg_subscription;#关联owner角色 select s.bubname,s.subenabled,r.rolname as owner from pg_subscription s join pg_roles r on s.subowner = r.oid
-
如果创建的订阅较多,还得修改postgresql.conf配置,如下
max_worker_processes=8max_logical_replication_workers=4