CONFIGURATION PARAMETER复制 / 发送服务器
output_plugin_libraries
列出可作为逻辑解码输出插件指定的库。
Lists libraries that may be named as logical decoding output plugins.
字符串 会话(超级用户) 引入 14 现存至 20 devel 0 次默认值变更
- 类型
- 字符串string
- 上下文
- 会话(超级用户)超级用户可在会话内用 SET 修改
- 默认值
pgoutput, test_decoding- 分类
- 复制 / 发送服务器
- 引入版本
- 14
- 状态
- 现存
版本轨迹
相对 PostgreSQL 17 无变化。
默认值变迁
默认值自 PostgreSQL 14 起没有变过。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。
手册说明
列出安装在 dynamic_library_path 所指定位置中、同时也被信任可供复制客户端用作逻辑输出插件的库。 任何针对其他库的逻辑解码或 复制请求都将被拒绝。所有用户都受此限制。 默认值为 'pgoutput, test_decoding',它们是标准 PostgreSQL 发行版中包含的两个逻辑输出插件。
其格式为以逗号分隔的库名称列表,每个名称的解释方式与 LOAD命令相同 (但逻辑解码客户端指定的插件名称必须与列表中的一个条目完全匹配, 大小写或路径结构不得有变化)。条目之间的空白会被忽略;如果库名称中需要包含空白或逗号, 请用双引号将其括起。
服务器管理员有责任确保,加载添加到此列表中的库时,不会无意中向非超级用户授予额外权限。
从没有 output_plugin_libraries 参数的版本更新服务器时, 以下查询可帮助构造所有持久逻辑复制槽所需的插件列表:
SELECT DISTINCT plugin FROM pg_replication_slots WHERE plugin IS NOT NULL;
调整 output_plugin_libraries 之前,请仔细审查该列表以确保安全。
上述查询只能显示过去某个时刻已成功添加到复制槽的插件。 新近被拒绝的请求将以类似以下消息出现在日志中:
ERROR: library "..." may not be used as an output plugin DETAIL: The configuration parameter "output_plugin_libraries" (currently 'pgoutput, test_decoding') does not name this library as a trusted output plugin. HINT: If it is safe for all REPLICATION users to use this library as an output plugin, add it to "output_plugin_libraries" and reload the server configuration.
机制详解
列出可作为逻辑解码输出插件指定的库。超级用户或获授 SET 权限的角色可在相应的会话或配置作用域中修改它。
逻辑解码只接受该服务端白名单中的输出插件库名,按 LOAD 规则解释并要求插件名精确匹配。加入库是信任决策,因为插件代码在服务器进程内部执行。
应把 output_plugin_libraries 与 wal_level、max_wal_senders、max_replication_slots 一起监控和变更。先在对应角色与真实负载上验证,再按其 superuser context 选择会话修改、reload 或 restart;历史默认值并不等于当前有效值。
调优建议
按典型负载给出的取值思路,不是放之四海皆准的配方:实际取值要看数据量、并发度与硬件。
-
OLTP在线事务处理
只列出已安装、已审计且确有消费者使用的输出插件;修改后用最低权限逻辑复制用户验证,并把插件升级纳入服务器发布。
-
OLAP分析与批处理
ETL 解码插件同样是进程内代码,不要为方便使用通配或宽泛路径;验证大事务的内存、WAL 保留与插件输出。
-
小规格低配实例与开发机
不做逻辑解码就保留内置小白名单;增加 wal2json 等插件前确认包来源、版本兼容与维护责任。
常见问题
- 在错误的主库、备库、发送端或订阅端角色上修改。
- 只看字节/时间配置,不监控真实复制延迟、槽位置与 worker 状态。
- 故障切换后新主库缺少与旧主库一致的容量或依赖。
- 用无限等待或无限 WAL 保留掩盖失效消费者。
演化历史
相邻两个大版本之间的差异,新的在前。版本号链到该版的快照。
-
PostgreSQL 20 ← 19 沿用 19
事实沿用 19
-
PostgreSQL 14 ← 13 新增此参数
PostgreSQL 14 起可用
逐版本快照
每个收录版本里的 7 项事实,与上一个存在的版本不同的格子带底色。版本号链到该版。
| 版本 | 默认值 | 单位 | 上下文 | 类型 | 最小值 | 最大值 | 枚举值 |
|---|---|---|---|---|---|---|---|
| 14 | pgoutput, test_decoding |
— |
会话(超级用户) |
字符串 |
— |
— |
— |
| 15 | pgoutput, test_decoding |
— |
会话(超级用户) |
字符串 |
— |
— |
— |
| 16 | pgoutput, test_decoding |
— |
会话(超级用户) |
字符串 |
— |
— |
— |
| 17 | pgoutput, test_decoding |
— |
会话(超级用户) |
字符串 |
— |
— |
— |
| 18 | pgoutput, test_decoding |
— |
会话(超级用户) |
字符串 |
— |
— |
— |
| 19 | pgoutput, test_decoding |
— |
会话(超级用户) |
字符串 |
— |
— |
— |
| 20 沿用 | pgoutput, test_decoding |
— |
会话(超级用户) |
字符串 |
— |
— |
— |
参考资料
同类参数
| 参数 | 类型 | 上下文 | 默认值 | 版本变动 | 最近变更 |
|---|---|---|---|---|---|
| 发送服务器 12 | |||||
idle_replication_slot_timeout |
整数 | 重载生效 | 0 s |
— | |
| 设置复制槽保持空闲多久后失效。 | 现存 | ||||
max_repack_replication_slots |
整数 | 重启生效 | 5 |
— | |
| 设置 REPACK 命令可使用的最大复制槽数量。 | 现存 | ||||
max_replication_slots |
整数 | 重启生效 | 10 |
102 次 | |
| 设置可同时定义的复制槽最大数量。 | 现存 | ||||
max_slot_wal_keep_size |
整数 | 重载生效 | -1 MB |
— | |
| 设置复制槽可保留的 WAL 最大大小。 | 现存 | ||||
max_wal_senders |
整数 | 重启生效 | 10 |
103 次 | |
| 设置可同时运行的 WAL sender 进程最大数量。 | 现存 | ||||
output_plugin_libraries |
字符串 | 会话(超级用户) | pgoutput, test_decoding |
— | |
| 列出可作为逻辑解码输出插件指定的库。 | 现存 | ||||
replication_timeout |
整数 | 重载生效 | 1 min |
— | |
| 设置等待 WAL 复制活动的最长时间。 | 于 9.3 移除 | ||||
track_commit_timestamp |
布尔 | 重启生效 | off |
— | |
| 记录事务提交时间。 | 现存 | ||||
wal_keep_segments |
整数 | 重载生效 | 0 |
— | |
| 设置为备库保留的 WAL 文件数量。 | 于 13 移除 | ||||
wal_keep_size |
整数 | 重载生效 | 0 B |
— | |
| 设置为备库保留的 WAL 文件大小。 | 现存 | ||||
wal_sender_shutdown_timeout |
整数 | 会话 | -1 ms |
— | |
| 设置关机时等待 WAL 全部复制到接收端的最长时间。 | 现存 | ||||
wal_sender_timeout |
整数 | 会话 | 1 min |
121 次 | |
| 设置等待 WAL 复制活动的最长时间。 | 现存 | ||||