云数据库 PostgreSQL 如何使用 failover slot 进行逻辑复制

逻辑复制槽(logical replication slot)是 PostgreSQL 中用于逻辑复制的机制,保证了逻辑订阅者能够从指定的 LSN(Log Sequence Number)开始接收变更数据,避免数据丢失。云数据库 PostgreSQL 通过自研内核能力实现 failover slot,用于高可用场景下的跨地域故障转移,保证主备切换时复制槽的连续性和数据一致性。具体功能介绍。

相关产品
云数据库 PostgreSQL 产品页,含版本规格、价格与购买入口。

背景

这篇会说明 failover slot 的创建和使用步骤。

前提条件

·处于同一 VPC 下的两个云数据库 PostgreSQL 实例,分别作为主节点和备节点。

·两个实例大版本需一致,且均为11~16。

操作步骤

一、1、主节点创建 publication

登录主实例,执行以下命令,创建 publication。本示例中,publication 名称为 pub_1,需要发布的表为 table_1。

CREATE PUBLICATION pub_1 FOR TABLE table_1;

注意:说明:

注意:创建 slot 时,系统默认创建为 failover slot ,并在创建订阅时自动创建与 subscription 同名的 failover slot。具体说明请参见 创建 Failover slot 。

二、2、备节点创建订阅

登录备节点,依次执行以下命令,创建订阅。本示例中,subscription 的名称为 sub_1。

注意:创建订阅之前,请确保备节点已经创建与 publication 所连接的 table_1 结构相同的表。

— 创建订阅create subscription sub_1connection 'instanceid=postgres-***** host=*.*.*.* port=5432 dbname=database_name user=user_name password=****** access_type=1'publication pub_1;

命令中的参数说明如下:

·instanceid:主实例的实例 ID ,可在控制台的实例列表获取。

·host:主节点实例的内网 IP。

·port:连接端口号,默认5432。

·dbname:主实例发布的 publication 所在的数据库名称。

·user:可在主实例所使用的用户名称。

·password:可在主实例使用的账户密码。

·access_type:取值为1,表示目标实例为 TencentDB 实例。

备库创建订阅后,failover slot 将在主备切换后自动转移到备节点,无需再配置 slot 跟随。

三、检查复制槽状态

在主实例上执行:

SELECT slot_name, slot_type, activeFROM pg_replication_slotsWHERE slot_name = 'sub_1';

若 active 值为 true ,表示 failover slot 正在被使用。

四、检查数据同步

在主库插入数据后,在备库查询 table_1 ,能够看到新插入的数据,则 failover_slot 正常运行。

五、主备切换验证

在实例详情页单击主备切换,切换后在新主库上重复上述查询,查询结果与上述一致,则备库订阅依然正常,failover_slot 正常运行。

赞 (0)
上一篇 4天前
下一篇 4天前