pg_failover_slots
在Failover过程中保留复制槽
仓库
EnterpriseDB/pg_failover_slots
https://github.com/EnterpriseDB/pg_failover_slots
源码
pg_failover_slots-1.2.1.tar.gz
pg_failover_slots-1.2.1.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_failover_slots | 1.2.1 | ETL | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 9540 | pg_failover_slots | 否 | 是 | 是 | 否 | 否 | 是 | - |
| 相关扩展 | pglogical pglogical_origin pglogical_ticker pgactive repmgr bgw_replstatus pgl_ddl_deploy decoderbufs |
|---|
Load via shared_preload_libraries on both primary and standby nodes.
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.2.1 | 1817161514 | pg_failover_slots | - |
| RPM | PIGSTY | 1.2.1 | 1817161514 | pg_failover_slots_$v | - |
| DEB | PIGSTY | 1.2.1 | 1817161514 | postgresql-$v-pg-failover-slots | - |
构建
您可以使用 pig build 命令构建 pg_failover_slots 扩展的 RPM / DEB 包:
pig build pkg pg_failover_slots # 构建 RPM / DEB 包
安装
您可以直接安装 pg_failover_slots 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install pg_failover_slots; # 当前活跃 PG 版本安装
pig ext install -y pg_failover_slots -v 18 # PG 18
pig ext install -y pg_failover_slots -v 17 # PG 17
pig ext install -y pg_failover_slots -v 16 # PG 16
pig ext install -y pg_failover_slots -v 15 # PG 15
pig ext install -y pg_failover_slots -v 14 # PG 14
dnf install -y pg_failover_slots_18 # PG 18
dnf install -y pg_failover_slots_17 # PG 17
dnf install -y pg_failover_slots_16 # PG 16
dnf install -y pg_failover_slots_15 # PG 15
dnf install -y pg_failover_slots_14 # PG 14
apt install -y postgresql-18-pg-failover-slots # PG 18
apt install -y postgresql-17-pg-failover-slots # PG 17
apt install -y postgresql-16-pg-failover-slots # PG 16
apt install -y postgresql-15-pg-failover-slots # PG 15
apt install -y postgresql-14-pg-failover-slots # PG 14
预加载配置:
shared_preload_libraries = 'pg_failover_slots';
用法
pg_failover_slots 通过把逻辑复制槽的定义和位置从 primary 同步到 standby,使这些复制槽在故障转移后仍可继续使用。
在两端启用
shared_preload_libraries = 'pg_failover_slots'
README 给出的 standby 必要设置是:
hot_standby_feedback = on
primary_slot_name = 'my_physical_slot'
主要配置
pg_failover_slots.synchronize_slot_names = 'name_like:%'
pg_failover_slots.drop_extra_slots = true
pg_failover_slots.primary_dsn = 'host=primary dbname=mydb'
pg_failover_slots.standby_slot_names = 'standby_physical_slot'
pg_failover_slots.standby_slots_min_confirmed = -1
pg_failover_slots.worker_nap_time = 60000
pg_failover_slots.maintenance_db = 'postgres'
README 说明 synchronize_slot_names 支持按精确槽名、LIKE 模式或 plugin 名称过滤。
故障转移前检查 standby 是否就绪
SELECT slot_name, active
FROM pg_replication_slots
WHERE slot_type = 'logical';
在 standby 上,逻辑槽只有“存在且 active = false”时才算准备完成。README 明确说明 active = true 表示该槽仍在初始化过程中。
说明
- 上游要求 PostgreSQL 11+。
v1.2.1是 bug-fix 发布,没有新增面向用户的 SQL 或 GUC。v1.2.0增加了 PostgreSQL 18 支持,并补充说明了drop_extra_slots的行为。