pgpool_recovery

PGPool辅助扩展,从v4.3提供的恢复函数

概览

扩展包名版本分类许可证语言
pgpool4.7.1ADMINPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
5900pgpool_adm-
5910pgpool_recovery-
5920pgpool_regclass-
相关扩展pgautofailover pglogical pg_failover_slots repmgr pg_repack pg_rewrite

版本

类型仓库版本PG 大版本包名依赖
EXTPGDG4.7.11817161514pgpool-
RPMPGDG4.7.11817161514pgpool-II-pg$v-extensions-
DEBPGDG4.7.11817161514postgresql-$v-pgpool2-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1
el8.aarch64PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1
el9.x86_64PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1
el9.aarch64PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1
el10.x86_64PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1
el10.aarch64PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1
d12.x86_64PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1
d12.aarch64PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1
d13.x86_64PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1
d13.aarch64PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1
u22.x86_64PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1
u22.aarch64PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1
u24.x86_64PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1
u24.aarch64PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1PGDG 4.7.1

安装

您可以直接安装 pgpool 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:

pig repo add pgdg -u          # 添加 PGDG 仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install pgpool;          # 当前活跃 PG 版本安装
pig ext install -y pgpool -v 18  # PG 18
pig ext install -y pgpool -v 17  # PG 17
pig ext install -y pgpool -v 16  # PG 16
pig ext install -y pgpool -v 15  # PG 15
pig ext install -y pgpool -v 14  # PG 14
dnf install -y pgpool-II-pg18-extensions       # PG 18
dnf install -y pgpool-II-pg17-extensions       # PG 17
dnf install -y pgpool-II-pg16-extensions       # PG 16
dnf install -y pgpool-II-pg15-extensions       # PG 15
dnf install -y pgpool-II-pg14-extensions       # PG 14
apt install -y postgresql-18-pgpool2   # PG 18
apt install -y postgresql-17-pgpool2   # PG 17
apt install -y postgresql-16-pgpool2   # PG 16
apt install -y postgresql-15-pgpool2   # PG 15
apt install -y postgresql-14-pgpool2   # PG 14

创建扩展

CREATE EXTENSION pgpool_recovery;

用法

pgpool_recovery: pgpool-II 的恢复函数

pgpool_recovery 扩展提供 Pgpool-II 用于后端 PostgreSQL 节点在线恢复的恢复相关函数。

函数

-- 触发后端节点的在线恢复
-- 在主节点上执行恢复脚本
SELECT pgpool_recovery(
    'recovery_1st_stage_script',   -- $PGDATA 中的脚本名称
    'target_hostname',             -- 要恢复节点的主机名
    'target_pgdata',               -- 目标数据目录
    'target_port'                  -- 目标端口号
);

-- 第二阶段恢复(可选,用于流复制)
SELECT pgpool_remote_start(
    'target_hostname',             -- 已恢复节点的主机名
    'target_pgdata'                -- 目标数据目录
);

-- 检查目标节点是否就绪
SELECT pgpool_pgctl('status', 'target_pgdata');

工作原理

  1. Pgpool-II 在主节点上调用 pgpool_recovery(),执行用户定义的 Shell 脚本来执行基础备份和设置
  2. 恢复脚本将数据复制到目标节点并配置复制
  3. pgpool_remote_start() 启动已恢复的 PostgreSQL 实例
  4. Pgpool-II 将已恢复的节点重新附加到连接池中

恢复脚本

恢复脚本(例如 recovery_1st_stage)必须放置在主节点的 $PGDATA 目录中。它通常执行:

  • pg_basebackup 将数据复制到目标
  • 为流复制配置 primary_conninfo
  • 在目标上创建 standby.signal

该扩展必须安装在 Pgpool-II 管理的所有 PostgreSQL 后端节点上。


最后修改 2026-03-12: update extension pages (f579993)