介绍
作为本际云服务器推荐网的小编小本本,今天给大家分享PostgreSQL实现DDL逻辑复制的内容。PostgreSQL社区官方版本不支持DDL的逻辑复制,但是有第三方的插件可以做到DDL复制,其中我们介绍的是pgl_ddl_deploy插件。

特点
pgl_ddl_deploy插件具有以下特点:
- 任何DDLSQL语句都可以直接传播给订阅者
- 表可以在创建时自动添加到复制中
- 支持过滤,可以选择仅复制某些schema
- 可以选择以锁定安全的方式在订阅服务器上进行部署ALTER TABLE语句
- 可以由子命令标签过滤
- 当前最新版本是2.10版,从2.0版本开始,它支持使用本机逻辑复制进行DDL复制(以前依赖于pglogical插件)
部署流程
安装需要在源端和目标端都需要进行安装:
tar -xzf pgl_ddl_deploy.tar.gz
cd pgl_ddl_deploy
make
make install
发布端配置:
-
创建发布
CREATE PUBLICATION testpub FOR ALL TABLES IN SCHEMA public; -
创建扩展
CREATE EXTENSION pgl_ddl_deploy; -
配置
INSERT INTO pgl_ddl_deploy.set_configs(set_name, include_schema_regex, driver) VALUES(testpub, '.*', native::pgl_ddl_deploy.driver); -
开启DDL复制
SELECT pgl_ddl_deploy.deploy(testpub) from pgl_ddl_deploy.set_configs; -
权限配置
SELECT pgl_ddl_deploy.add_role(testpub) from pg_roles where rolname = 'replic';
目标端配置:
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那活儿等你来!
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6033.html
