RDS PostgreSQL提供逻辑订阅功能,支持在多个RDS PostgreSQL实例之间实现准实时表级单向同步,可以用于数据共享、数据汇总、数据拆分等业务场景。
如果您在全国多个地域部署业务,可以通过逻辑订阅共享数据,例如将中心数据共享给其他地域,或者将其他地域数据汇总到中心进行实时分析查询等。
本文简单介绍逻辑订阅的使用流程,示例的流程如下:
源实例的数据库src创建发布,发布表public.t1,然后在目的实例的数据库dst创建订阅sub1_from_pub1,订阅源库表public.t1。
更多详情请参见逻辑订阅原理与最佳实践。
注意事项
您可以在单个实例的两个表之间实现逻辑订阅,也可以在同一VPC内的两个实例间(必须使用内网地址)实现逻辑订阅。
前提条件
-
实例为RDS PostgreSQL 10及以上版本的云盘实例。
-
实例参数wal_level的值为logical,您可以在控制台的参数设置页面进行修改,该参数修改后需要重启实例才能生效。重启实例会造成连接中断,请提前做好业务安排,谨慎操作。
-
如果是同一VPC内两个实例间实现逻辑订阅,需要在各自的白名单中放通实例所在VPC的IP段,例如放通172.16.0.0/16。
-
需要具有rds_superuser权限的账号,例如高权限账号或者高权限账号使用
create role xxx with superuser
创建的其他账号。
操作步骤
源库创建新发布
-
连接PostgreSQL源实例。
-
在源库里创建新发布,命令如下:
CREATE PUBLICATION FOR TABLE ;
示例
create publication pub1 for table public.t1;
说明
-
只能发布持久基表。详情请参见CREATE PUBLICATION。
-
您可以通过
select * from pg_publication;
查看当前数据库有哪些发布。
-
目的库创建订阅
-
连接PostgreSQL目的实例。
-
在目标库创建新订阅。
-
如果源库和目标库在相同的实例,使用如下步骤:
-
在源数据库中创建逻辑复制槽。
-
在目标数据库中创建逻辑订阅。
-
请提前在目标数据库中创建与源数据库相同表结构的数据表。
-
同实例时,必须使用WITH添加订阅参数
create_slot=false
。
SELECT pg_create_logical_replication_slot('', 'pgoutput');
说明
CREATE SUBSCRIPTION CONNECTION 'dbname=' PUBLICATION publication_name WITH (create_slot=false);
-
-
如果源库和目标库再不同的实例,使用如下步骤:
在目标数据库中创建逻辑订阅。
CREATE SUBSCRIPTION CONNECTION '' PUBLICATION ;
源库的实例连接信息格式为:
host= port= user= password= dbname=
。示例:
create subscription sub1_from_pub1 connection 'host=pgm-xxxxx.pgsql.singapore.rds.aliyuncs.com port=3433 user=test password=xxxxx dbname=src' publication pub1 with (enabled, create_slot, slot_name='sub1_from_pub1');
说明
-
您可以通过
select * from pg_subscription;
查看整个数据库集群有哪些订阅。 -
源库的发布名称后可以使用WITH附加相关订阅参数,详情请参见CREATE SUBSCRIPTION。
-
-
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/156203.html