PostgreSQL 社区官方版本不支持DDL的逻辑复制,仅支持DML【INSERT、UPDATE、DELETE、TRUNCATE】,且要求表有主键,否则UPDATE和DELETE无法复制(注意:逻辑复制要求wal_level为logical)。
BDR【收费】
pglogical【开源,比较复杂】
pgl_ddl_deploy
本文主要介绍pgl_ddl_deploy插件。
pgl_ddl_deploy该插件可以实现PG逻辑复制中的DDL复制。该插件具有以下特点:
任何DDL SQL语句都可以直接传播给订阅者 表可以在创建时自动添加到复制中 支持过滤。可以选择性仅复制某些schema 可以选择以锁定安全的方式在订阅服务器上进行部署 ALTER TABLE语句可以由子命令标签过滤
当前最新版本是2.10版,从2.0版本开始,它支持使用本机逻辑复制进行DDL复制(以前依赖于pglogical插件)。
详细信息请查阅:https://github.com/enova/pgl_ddl_deploy
1. 在发布端进行配置
1.1 创建发布
▼▼▼
CREATE PUBLICATION testpub FOR ALL TABLES IN SCHEAM public;CREATE EXTENSION pgl_ddl_deploy;
复制
1.2 在发布端进行配置
▼▼▼
INSERT INTO pgl_ddl_deploy.set_configs (set_name,include_schema_regex,driver) VALUES('testpub','.*','native'::pgl_ddl_deploy.driver);
复制
set_name:发布端的名字,一定要和创建的发布的名称一致
include_schema_regex:提供正则表达式,用来匹配需要同步的schema,它可以将新表自动添加到复制中
driver:选择原生(native)或者pglogical插件
1.3 开启DDL复制
▼▼▼
SELECT pgl_ddl_deploy.deploy('testpub') from pgl_ddl_deploy.set_configs;
复制
返回结果为t,代表启动成功
1.4 相关权限配置
▼▼▼
SELECT pgl_ddl_deploy.add_role('testpub') from pg_roles where rolname='replic';
复制
2. 目标端配置:
▼▼▼
CREATE EXTENSION pgl_ddl_deploy;CREATE SUBSCRIPTION testsub connection 'host=PG-1 port=5432 user=replic password=replic dbname=test' PUBLICATION testpub;
复制
源端配置:
目标端配置:
源端执行ALTER:
目标查看ALTER直接结果:
源端添加和删除表:
目标端查看结果:
源端插入数据:
目标端查看:【新添加的表的数据不会自动同步到目标端,需要在目标端进行手工刷新】

更多精彩干货分享
点击下方名片关注
IT那活儿

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
外国CTO也感兴趣的开源数据库项目——openHalo
小满未满、
1327次阅读
2025-04-21 16:58:09
9.9 分高危漏洞,尽快升级到 pgAdmin 4 v9.2 进行修复
严少安
383次阅读
2025-04-11 10:43:23
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
368次阅读
2025-04-15 14:48:05
转发有奖 | PostgreSQL 16 PGCM高级认证课程直播班招生中!
墨天轮小教习
174次阅读
2025-04-14 15:58:34
中国PostgreSQL培训认证体系新增PGAI应用工程师方向
开源软件联盟PostgreSQL分会
143次阅读
2025-05-06 10:21:13
SQL 优化之 OR 子句改写
xiongcc
130次阅读
2025-04-21 00:08:06
融合Redis缓存的PostgreSQL高可用架构
梧桐
111次阅读
2025-04-08 06:35:40
告别老旧mysql_fdw,升级正当时
NickYoung
110次阅读
2025-04-29 11:15:18
PostgreSQL的dblink扩展模块使用方法
szrsu
95次阅读
2025-04-24 17:39:30
pgsql+pgpool高可用配置示例
(*´I`*)
91次阅读
2025-04-15 10:43:30