选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档 / 配置参数 / 预写式日志

CONFIGURATION PARAMETER预写式日志 / 归档恢复

recovery_end_command

设置恢复结束时执行一次的 shell 命令。

Sets the shell command that will be executed once at the end of recovery.

字符串 重载生效 引入 12 现存至 20 devel 0 次默认值变更

类型
字符串string
上下文
重载生效改配置文件后重载(pg_ctl reload / SIGHUP)即可生效
默认值
空字符串原始值 ''
引入版本
12
状态
现存

PostgreSQL 18 手册 官方文档 引入提交 2dedf4d9a8

版本轨迹

相对 PostgreSQL 17 无变化。

默认值变迁

空字符串 12 – 20

默认值自 PostgreSQL 12 起没有变过。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。

手册说明

PostgreSQL 18 手册 · 19.5 预写式日志 本站手册 官方原文

这个参数指定了一个将只在恢复末尾被执行一次的 shell 命令。这个参数是可选的。 recovery_end_command的目的是为复制或恢复之后的清除提供一种机制。 与archive_cleanup_command中相似,任何%r会被替换为包含最后一个可用重启点的文件的名称。

如果该命令返回一个非零退出状态,则一个警告日志消息将被写出并且不管怎样该数据库将继续启动。 一个例外是如果该命令被一个信号或者 shell 错误(例如命令未找到)中止,该数据库将不会继续启动。

这个参数只能在postgresql.conf文件中或通过服务器命令行进行设置。

机制详解

设置恢复结束时执行一次的 shell 命令。重新加载配置即可应用新值;已经开始的工作不会被追溯改变。

它位于 WAL 生成、写出、检查点、归档与恢复链路中;实际效果还受 wal_level、检查点节奏、持久化设置与存储语义影响。只观察单一参数不足以证明耐久性或恢复能力。

应把 recovery_end_command 与 archive_mode、archive_command、archive_library 一起监控和变更。先在对应角色与真实负载上验证,再按其 sighup context 选择会话修改、reload 或 restart;历史默认值并不等于当前有效值。

调优建议

按典型负载给出的取值思路,不是放之四海皆准的配方:实际取值要看数据量、并发度与硬件。

  • OLTP在线事务处理

    把 recovery_end_command 作为备份/恢复协议的一部分管理:命令或模块必须幂等、失败可见,并通过从真实归档恢复来验证,而不是只看返回码。

  • OLAP分析与批处理

    按批量装载 WAL 峰值配置归档吞吐与容量;归档跟不上时节流任务并报警,不能用虚假成功或激进清理掩盖积压。

  • 小规格低配实例与开发机

    有明确 PITR 需求才启用并交给成熟备份工具;可重建实例保持简单,但不要留下占位命令制造“已备份”的错觉。

常见问题

  • 把 shell 命令当作事务性的提升钩子,并误以为失败会回滚恢复。
  • 误读 %r,删除其他恢复消费者仍需要的 WAL。
  • 没有考虑提升或恢复重试,就执行非幂等的外部副作用。
  • 误以为 reload 会执行命令;它只在归档恢复结束时运行一次。
  • 在 postgres 服务账号执行的命令中嵌入凭据或不安全的 shell 展开。

演化历史

相邻两个大版本之间的差异,新的在前。版本号链到该版的快照。

  1. PostgreSQL 20 ← 19 沿用 19

    事实沿用 19

  2. PostgreSQL 12 ← 11 新增此参数

    PostgreSQL 12 起可用

逐版本快照

每个收录版本里的 7 项事实,与上一个存在的版本不同的格子带底色。版本号链到该版。

版本 默认值单位上下文类型最小值最大值枚举值
12 空字符串 重载生效 字符串
13 空字符串 重载生效 字符串
14 空字符串 重载生效 字符串
15 空字符串 重载生效 字符串
16 空字符串 重载生效 字符串
17 空字符串 重载生效 字符串
18 空字符串 重载生效 字符串
19 空字符串 重载生效 字符串
20 沿用 空字符串 重载生效 字符串

参考资料

同类参数

参数 类型 上下文 默认值 版本变动 最近变更
Write-Ahead Log 预写式日志 3 个
归档恢复 3
archive_cleanup_command 字符串 重载生效 空字符串
设置每次重启点执行的 shell 命令。 现存
recovery_end_command 字符串 重载生效 空字符串
设置恢复结束时执行一次的 shell 命令。 现存
restore_command 字符串 重载生效 空字符串 141 次
设置取回归档 WAL 文件时调用的 shell 命令。 现存