pglogical是一个完全作为PostgreSQL扩展实现的逻辑复制系统,为PostgreSQL数据库提供了逻辑流复制发布和订阅的功能。
前提条件
-
RDS PostgreSQL实例大版本为10或以上。
-
实例内核小版本为20230830或以上。
重要
20230830内核小版本之前已支持此插件,但为了规范插件管理,提升RDS PostgreSQL在插件侧的安全防护,RDS计划在内核版本迭代中陆续对部分存在安全风险的插件进行优化,部分插件在低内核小版本无法创建,更多信息,请参见【产品/功能变更】RDS PostgreSQL限制创建插件说明。
-
如果您在20230830内核小版前已经使用了此插件,则不影响使用。
-
如果您首次创建或重新创建此插件,请升级内核小版本到最新。
-
-
使用该插件前,需要将pglogical加入到shared_preload_libraries参数中。
您可以使用RDS PostgreSQL参数设置功能,为shared_preload_libraries参数添加pglogical。具体操作,请参见设置实例参数。
说明
该参数修改后,在提交参数时会立即重启实例。重启实例会造成连接中断,重启前请做好业务安排,并确保应用有自动重连机制,谨慎操作。
背景信息
pglogical是PostgreSQL的拓展模块,使用发布/订阅模型复制数据,使选择性复制更加高效。提供比Slony、Bucardo或Londiste更快的复制速度,支持跨版本升级。支持多场景复制,具体包括:
-
数据库大版本升级。
-
完整的数据库复制。
-
利用复制集,选择性地筛选表、行、列。
-
可从多个上游服务器,做数据的聚集和合并。
使用插件
-
开启pglogical。
CREATE EXTENSION pglogical;
-
关闭pglogical。
DROP EXTENSION pglogical;
快速配置逻辑流复制
-
在发布端创建发布节点。
说明
发布节点中
host
固定配置为127.0.0.1,port
请通过SQL命令SHOW PORT;
查询获取。SELECT pglogical.create_node( node_name := 'provider', dsn := 'host=127.0.0.1 port= dbname=test user=provider_user password=provider_pass' );
-
配置复制集。
将public中的所有表添加到default复制集。
SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);
说明
-
复制集用来控制将发布节点数据库中的哪些表以及这些表上的哪些操作发布给订阅者。
-
default复制集表示发布所有表及这些表的所有操作。更多复制集定义请参见pglogical官方文档。
-
-
在订阅端创建订阅节点。
说明
订阅节点中
host
固定配置为127.0.0.1,port
请通过SQL命令SHOW PORT;
查询获取SELECT pglogical.create_node( node_name := 'subscriber', dsn := 'host=127.0.0.1 port= dbname=test user=subscriber_user password=subscriber_pass' );
-
在订阅端创建订阅。
说明
订阅中
host
必须配置为发布端内网地址,port
配置为发布端内网端口。SELECT pglogical.create_subscription( subscription_name := 'subscription', provider_dsn := 'host= port= dbname=test user=provider_user password=provider_pass' );
创建订阅后,将在后台启动同步和复制流程。
相关参考
pglogical的详细说明,请参见pglogical官方文档。
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/155479.html