tencent cloud

云数据库 PostgreSQL

动态与公告
产品动态
产品简介
产品概述
产品特性
产品优势
应用场景
信息安全说明
地域和可用区
产品功能列表
大版本生命周期说明
MSSQL 兼容版
产品计费
计费概述
实例类型与规格
购买方式
退费说明
欠费说明
备份空间收费说明
快速入门
创建 PostgreSQL 实例
连接 PostgreSQL 实例
管理 PostgreSQL 实例
数据导入
通过 DTS 迁移数据
内核能力介绍
内核版本概述
内核版本更新动态
查看内核版本
自研内核功能介绍
数据库审计
审计服务说明
开通审计服务
查看审计日志
修改审计服务
审计性能说明
用户指南
实例管理
升级实例
CPU 弹性扩容
只读实例
账号管理
数据库管理
参数管理
日志管理及分析
备份与恢复
数据迁移
插件管理
网络管理
访问管理
数据安全
租户及资源隔离
安全组
监控与告警
标签
AI 实践
使用 tencentdb_ai 插件调用大模型
使用 tencentdb_ai 插件构建 AI 应用
结合 Supabase 快速构建基于云数据库 PostgreSQL 的后端服务
实践教程
跨库访问
如何在 PostgreSQL 中自动创建分区
基于 pg_roaringbitmap 实现超大规模标签查找
一条 SQL 实现查询附近的人
如何配置云数据库 PostgreSQL 作为 GitLab 外部数据源
通过 cos_fdw 插件支持分级存储能力
通过 pgpool 实现读写分离
通过 auto_explain 插件实现慢 SQL 分析
使用 pglogical 进行逻辑复制
使用 Debezium 采集 PostgreSQL 数据
在 CVM 本地搭建 PostgreSQL 异地灾备环境
只读实例与只读组实践教程
如何使用云函数定时操作数据库
表膨胀处理
性能白皮书
测试方法
测试结果
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Read-only Replica APIs
Backup and Recovery APIs
Parameter Management APIs
Security Group APIs
Performance Optimization APIs
Account APIs
Specification APIs
Network APIs
Data Types
Error Codes
常见问题
相关协议
Service Level Agreement
Terms of Service
词汇表
联系我们

逻辑复制槽故障转移(Failover Slot)

PDF
聚焦模式
字号
最后更新时间: 2026-03-31 10:09:27

功能背景

当前 PostgreSQL 用户在使用逻辑复制的时候会创建 logical replication slot,该信息没有记录在 catalog 中,因此不会将其信息从主库同步到备库。如果发生 HA 切换,逻辑复制的 Slot 会丢失,导致逻辑复制断开,给使用带来不便。因此我们需要将逻辑复制槽进行故障转移。

功能介绍

Failover Slot 功能可以将 Slot 信息从主库同步到备库,如此可以在 HA 切换之后避免逻辑订阅断开,用户可以无感知地继续使用逻辑订阅。我们提供了一个插件 tencent_failover_slot,用户使用该插件可以完成 Failover Slot 的创建、转换为普通 Slot、查看 Failover Slot 信息、删除 Failover Slot 等操作。同时,我们新增了 GUC 参数方便客户针对异常的情况的设置。下面详细介绍。

创建 Failover Slot

为便于操作,在用户创建 slot 时,系统将默认创建 failover slot 。您可登录数据库,直接执行以下命令创建 failover slot。
-- 创建插件
create extension tencentdb_failover_slot;
-- 创建 failover slot
SELECT pg_create_logical_replication_slot('slotname', 'pluginname');
若您希望默认创建普通 slot ,请进入 控制台,单击实例 ID 后,进入参数设置页面,通过搜索框找到 tencentdb_force_enable_failover_slot 参数,修改其值为 off,保存修改。

参数值修改为 off 后,需要依次执行以下命令创建 failover slot。若您此时使用创建 slot 语句,则会创建普通 slot。
-- 创建插件
create extension tencentdb_failover_slot;
-- 创建 failover slot
select pg_create_logical_failover_slot('slotname','pluginname');
注意:
Slot 是实例级别的,而插件是 database 级别的,如果切换了 database 需要调用插件里的函数,需要重新创建 tencentdb_failover_slot 插件。
pg_create_logical_failover_slot 函数包含两个参数:
slotname:Failover Slot 的名称。
pluginname:表示该逻辑复制槽所使用的逻辑解码插件的名称,推荐使用 pgoutput。

将 Failover Slot 转换为普通 Slot

select transform_slot_to_nonfailover('slotname');
说明:
slotname:slot 名字。
需要保证该 slot 当前是 inactive 的,即没有发布订阅正在使用该 slot。

查看 Failover Slot 信息

postgres=# select * from pg_failover_slots;
slot_name
-----------------
fs
fsg
(2 rows)
说明:
pg_failover_slots 视图包含一列,展示了当前所有的 Failover Slot 的名字,更多 Failover Slot 信息请查看 pg_replication_slots 视图。

删除 Failover Slot

select * from pg_drop_replication_slot('slotname');
说明:
slotname:slot 名称。

参数设置

新增参数 failover_slot_timeline_diverged_option,类型为 enum,方便用户针对异常情况的处理设置,设置路径为 云数据库 PostgreSQL 控制台 > 实例详情 > 参数设置。该参数默认值为 error,可选值 error、rewind。当极端情况下会发生备机日志接收速度比逻辑复制慢并发生 HA 的情况,此时如果设置 error,代表逻辑复制将暂停,发布端和订阅端都能收到报错,等待用户来处理。如果设置为 rewind,那么逻辑复制将从切换时间点开始。

注意事项

当前只支持逻辑复制槽(logical replication slot)故障转移,不支持物理复制槽(physical slot)故障转移。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈