pgbouncer_fdw

用SQL查询pgbouncer统计信息,并执行pgbouncer命令

概览

扩展包名版本分类许可证语言
pgbouncer_fdw1.4.0FDWPostgreSQLSQL
ID扩展名BinLibLoadCreateTrustReloc模式
8650pgbouncer_fdw-
相关扩展dblink dblink postgres_fdw pg_stat_monitor pg_stat_statements wrappers multicorn odbc_fdw jdbc_fdw

版本

类型仓库版本PG 大版本包名依赖
EXTPGDG1.4.01817161514pgbouncer_fdwdblink
RPMPGDG1.4.01817161514pgbouncer_fdw_$v-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
d12.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
d13.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
d13.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
u22.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
u22.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
u24.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
u24.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS

安装

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

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

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

pig install pgbouncer_fdw;          # 当前活跃 PG 版本安装
pig ext install -y pgbouncer_fdw -v 18  # PG 18
pig ext install -y pgbouncer_fdw -v 17  # PG 17
pig ext install -y pgbouncer_fdw -v 16  # PG 16
pig ext install -y pgbouncer_fdw -v 15  # PG 15
pig ext install -y pgbouncer_fdw -v 14  # PG 14
dnf install -y pgbouncer_fdw_18       # PG 18
dnf install -y pgbouncer_fdw_17       # PG 17
dnf install -y pgbouncer_fdw_16       # PG 16
dnf install -y pgbouncer_fdw_15       # PG 15
dnf install -y pgbouncer_fdw_14       # PG 14

创建扩展

CREATE EXTENSION pgbouncer_fdw CASCADE;  -- 依赖: dblink

用法

pgbouncer_fdw: 通过普通 SQL 视图查询 PgBouncer 统计信息并通过 SQL 函数运行 PgBouncer 命令的扩展

创建服务器

CREATE EXTENSION pgbouncer_fdw;

CREATE SERVER pgbouncer FOREIGN DATA WRAPPER dblink_fdw
  OPTIONS (host 'localhost', port '6432', dbname 'pgbouncer');

对于多个 PgBouncer 实例:

CREATE SERVER pgbouncer1 FOREIGN DATA WRAPPER dblink_fdw
  OPTIONS (host '192.168.1.10', port '6432', dbname 'pgbouncer');
CREATE SERVER pgbouncer2 FOREIGN DATA WRAPPER dblink_fdw
  OPTIONS (host '192.168.1.11', port '6432', dbname 'pgbouncer');

INSERT INTO pgbouncer_fdw_targets (target_host) VALUES ('pgbouncer1'), ('pgbouncer2');
UPDATE pgbouncer_fdw_targets SET active = false WHERE target_host = 'pgbouncer';

创建用户映射

CREATE USER MAPPING FOR PUBLIC SERVER pgbouncer
  OPTIONS (user 'ccp_monitoring', password 'mypassword');

可用视图

视图描述
pgbouncer_clients客户端连接详情
pgbouncer_pools连接池统计
pgbouncer_servers后端服务器状态
pgbouncer_stats统计摘要
pgbouncer_databases数据库定义
pgbouncer_config配置参数
pgbouncer_lists内部列表
pgbouncer_dns_hostsDNS 主机缓存
pgbouncer_dns_zonesDNS 区域缓存
pgbouncer_sockets套接字信息
pgbouncer_users用户配置
SELECT * FROM pgbouncer_pools;
SELECT * FROM pgbouncer_stats;
SELECT database, cl_active, cl_waiting, sv_active FROM pgbouncer_pools;

监控多个实例时,每行包含一个 pgbouncer_target_host 列标识来源。

命令函数

管理函数(需要显式 GRANT EXECUTE):

SELECT pgbouncer_command_reload();              -- 重载配置
SELECT pgbouncer_command_pause('mydb');          -- 暂停数据库
SELECT pgbouncer_command_resume('mydb');         -- 恢复数据库
SELECT pgbouncer_command_kill('mydb');           -- 终止连接
SELECT pgbouncer_command_disable('mydb');        -- 禁用数据库
SELECT pgbouncer_command_enable('mydb');         -- 启用数据库
SELECT pgbouncer_command_reconnect('mydb');      -- 重新连接后端
SELECT pgbouncer_command_set('key', 'value');    -- 设置参数
SELECT pgbouncer_command_shutdown();             -- 关闭 PgBouncer
SELECT pgbouncer_command_suspend();              -- 暂停操作
SELECT pgbouncer_command_wait_close('mydb');     -- 等待连接关闭

权限

GRANT USAGE ON FOREIGN SERVER pgbouncer TO monitoring_user;
GRANT SELECT ON pgbouncer_pools TO monitoring_user;
GRANT SELECT ON pgbouncer_stats TO monitoring_user;
GRANT EXECUTE ON FUNCTION pgbouncer_command_reload() TO admin_user;

最后修改 2026-03-14: update extension metadata (953cbd0)