PG逻辑复制插件之pgl_ddl_deploy支持DDL复制

0    321    1

👉 本文共约11670个字,系统预计阅读时间或需44分钟。

简介

详情:https://github.com/lhrbest/pgl_ddl_deploy

Transparent DDL replication for Postgres 9.5+ for both pglogical and native logical replication.

PostgreSQL 社区官方版本不支持DDL的逻辑复制,仅支持DML【INSERT、UPDATE、DELETE、TRUNCATE】,且要求表有主键,否则UPDATE和DELETE无法复制【注意:逻辑复制要求wal_level为logical】。
目前有第三方的插件可以做到DDL复制,BDR【收费】、pglogical【开源,比较复杂】、pgl_ddl_deploy。

pgl_ddl_deploy该插件可以实现PG逻辑复制中的DDL复制。该插件具有以下特点:

  • 任何DDL SQL语句都可以直接传播给订阅者

    本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
  • 表可以在创建时自动添加到复制中

  • 支持过滤。可以选择性仅复制某些schema

  • 可以选择以锁定安全的方式在订阅服务器上进行部署

  • ALTER TABLE语句可以由子命令标签过滤

    当前最新版本是2.10版,从2.0版本开始,它支持使用本机逻辑复制进行DDL复制(以前依赖于pglogical插件)。详细信息请查阅:https://github.com/enova/pgl_ddl_deploy

    在配置ddl复制的过程中,需要复制queue表,该表记录了一个函数,用来执行ddl语句。

安装

内容

数据字典

示例:内部逻辑复制

相关环境配置请参考:https://www.xmmup.com/pgluojifuzhichajianzhipglogicalshiyongshuoming.html

环境配置

2个节点都需要配置:

配置发布订阅

过程:

数据已经同步!!!

配置DDL同步

1.在发布端配置

发布端我们需要进行配置,配置方法就是往pgl_ddl_deploy表中插入记录。

set_name:发布端的名字,这个一定要和你创建的发布名字一致。

include_schema_regex:提供正则表达式,用来匹配需要同步的schema,它可以将新表自动添加到复制当中。

driver: 选择原生(native)或者是pgologic插件实现。

因为是demo配置,配置较为简单,详细复杂的配置选项参考:https://github.com/enova/pgl_ddl_deploy

2.开启DDL复制

配置完成后使用pgl_ddl_deploy.deploy方法启动ddl复制。

这里显示为t,代表启动成功。

3.添加权限

测试DDL复制

启动成功之后,我们来做个小测试,t1表来增加一列。

发布端:

订阅端:

查询数据字典

过程:

总结

从个人使用感觉上,感觉插件多多少少还是有点问题的。

所以,生产中,建议只同步DML语句,对于DDL语句,为了稳定,还是建议手动执行。

附录:官方文档

    头像

    小麦苗

    学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

    您可能还喜欢...

    发表评论

    您的电子邮箱地址不会被公开。

    16 + 14 =

     

    嘿,我是小麦,需要帮助随时找我哦
    • 18509239930
    • 个人微信

    • 麦老师QQ聊天
    • 个人邮箱
    • 点击加入QQ群
    • 个人微店

    • 回到顶部
    返回顶部