资讯专栏INFORMATION COLUMN

PostgreSQL实现DDL逻辑复制

IT那活儿 / 2915人阅读
PostgreSQL实现DDL逻辑复制

PostgreSQL 社区官方版本不支持DDL的逻辑复制,仅支持DML【INSERT、UPDATE、DELETE、TRUNCATE】,且要求表有主键,否则UPDATE和DELETE无法复制(注意:逻辑复制要求wal_level为logical)

目前有第三方的插件可以做到DDL复制:
  • 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


pgl_ddl_deploy安装


需要在源端和目标端都需要进行安装:
tar -xzvf pgl_ddl_deploy.tar.gz
cd pgl_ddl_deploy
make
make install


部署流程


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直接结果:

源端添加和删除表:

目标端查看结果:

源端插入数据:

目标端查看:【新添加的表的数据不会自动同步到目标端,需要在目标端进行手工刷新】


END


更多精彩干货分享

点击下方名片关注

IT那活儿

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129911.html

相关文章

  • 数据仓库架构的变迁

    摘要:前面我们简单阐述了分布式数据库的架构,并通过一条简单的查询语句解释了分布式的执行计划。 引言 第八届中国架构师大会(SACC2016)10月27号到29号在北京万达索菲特大饭店成功举办。大会以架构创新之路为主题,云集了国内外顶尖专家,共同探讨云计算和大数据等技术背景下,如何通过架构创新及各种IT新技术来带动企业转型增效。作为一家专注于云端数据仓库的初创公司,酷克数据受邀在SACC201...

    Raaabbit 评论0 收藏0
  • PostgreSQL 5.7. Schemas 笔记

    摘要:笔记一个数据库包含多个里包含的下一层逻辑结构就是也包括各种不同里的名可以相同在创建一个新的时,会自动为其创建一个名为的。如果未设置变量,那么会将你创建的所有对象默认放入中。执行就能看到其名称。 PostgreSQL 5.7. Schemas 笔记 https://www.postgresql.org/docs/9.4/ddl-schemas.html A database conta...

    617035918 评论0 收藏0
  • 新书推荐 |《PostgreSQL实战》出版(提供样章下载)

    摘要:作者谭峰张文升出版日期年月页数页定价元本书特色中国开源软件推进联盟分会特聘专家撰写,国内多位开源数据库专家鼎力推荐。张文升中国开源软件推进联盟分会核心成员之一。 很高兴《PostgreSQL实战》一书终于出版,本书大体上系统总结了笔者 PostgreSQL DBA 职业生涯的经验总结,本书的另一位作者张文升拥有丰富的PostgreSQL运维经验,目前就职于探探科技任首席PostgreS...

    Martin91 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<