文档中心>实践教程>云数据库 PostgreSQL>如何使用 failover slot 进行逻辑复制

如何使用 failover slot 进行逻辑复制

最近更新时间:2025-08-13 11:26:51

我的收藏

背景

逻辑复制槽(logical replication slot)是 PostgreSQL 中用于逻辑复制的机制,保证了逻辑订阅者能够从指定的 LSN(Log Sequence Number)开始接收变更数据,避免数据丢失。云数据库 PostgreSQL 通过自研内核能力实现 failover slot,用于高可用场景下的跨地域故障转移,保证主备切换时复制槽的连续性和数据一致性。具体功能介绍请参见 逻辑复制槽故障转移(Failover Slot)
本文将说明 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_1
connection '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 跟随。

3、验证效果

检查复制槽状态

在主实例上执行:
SELECT slot_name, slot_type, active
FROM pg_replication_slots
WHERE slot_name = 'sub_1';
若 active 值为 true ,表示 failover slot 正在被使用。

检查数据同步

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

主备切换验证

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