restore_command 是一个配置参数,用于指定检索已归档WAL文件的命令。
restore_command 在 PostgreSQL 8.0 中引入。
在 PostgreSQL 11 及更早版本中,restore_command 是一个复制配置命令,只能在 recovery.conf 中设置。
默认值
默认值 restore_command 是: '' (空字符串)。
按 PostgreSQL 版本详细信息
restore_command (PostgreSQL 19)
| 设置 | |
| 单位 | |
| 类别 | 写前日志 / 归档恢复 |
| 简短描述 | 设置将调用该shell命令来检索已归档的WAL文件。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | string |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | |
| 重置值 | |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: restore_command
restore_command (PostgreSQL 18)
| 设置 | |
| 单位 | |
| 类别 | 写前日志 / 归档恢复 |
| 简短描述 | 设置将调用该shell命令来检索已归档的WAL文件。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | string |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | |
| 重置值 | |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: restore_command
restore_command (PostgreSQL 17)
| 设置 | |
| 单位 | |
| 类别 | 写前日志 / 归档恢复 |
| 简短描述 | 设置将调用该shell命令来检索已归档的WAL文件。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | string |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | |
| 重置值 | |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: restore_command
restore_command (PostgreSQL 16)
| 设置 | |
| 单位 | |
| 类别 | 写前日志 / 归档恢复 |
| 简短描述 | 设置将调用该shell命令来检索已归档的WAL文件。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | string |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | |
| 重置值 | |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: restore_command
restore_command (PostgreSQL 15)
| 设置 | |
| 单位 | |
| 类别 | 写前日志 / 归档恢复 |
| 简短描述 | 设置将调用该shell命令来检索已归档的WAL文件。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | string |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | |
| 重置值 | |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: restore_command
restore_command (PostgreSQL 14)
| 设置 | |
| 单位 | |
| 类别 | 写前日志 / 归档恢复 |
| 简短描述 | 设置将调用该shell命令来检索已归档的WAL文件。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | string |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | |
| 重置值 | |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: restore_command
restore_command (PostgreSQL 13)
| 设置 | |
| 单位 | |
| 类别 | 写前日志 / 归档恢复 |
| 简短描述 | 设置将调用该shell命令来检索已归档的WAL文件。 |
| 扩展描述 | |
| 上下文 | postmaster |
| 变量类型 | string |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | |
| 重置值 | |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: restore_command
restore_command (PostgreSQL 12)
| 设置 | |
| 单位 | |
| 类别 | 写前日志 / 归档恢复 |
| 简短描述 | 设置将检索已归档WAL文件的shell命令。 |
| 扩展描述 | |
| 上下文 | postmaster |
| 变量类型 | string |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | |
| 重置值 | |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: restore_command
变更历史
- PostgreSQL 14
- 现在可以通过配置重载(
SIGHUP)来更改,而不是服务器重启(提交 942305a3)。
- 现在可以通过配置重载(
- PostgreSQL 12
- PostgreSQL 8.3
- PostgreSQL 8.0
- 添加(提交 66ec2db7)。
示例
使用以下 restore_command 作为示例。
scp backupuser@backup:/var/lib/backup/wal-archive/%f "%p"
在正常操作中,当检索已归档WAL时,PostgreSQL日志文件将包含如下条目:
[2021-06-20 10:14:16 UTC] LOG: 00000: restored log file "000000010000000000000004" from archive [2021-06-20 10:14:17 UTC] LOG: 00000: restored log file "000000010000000000000005" from archive [2021-06-20 10:14:17 UTC] LOG: 00000: restored log file "000000010000000000000006" from archive
日志文件还将包含如下条目:
scp: /var/lib/backup/wal-archive/000000010000000000000007: No such file or directory scp: /var/lib/backup/wal-archive/00000002.history: No such file or directory
这些不是错误。PostgreSQL将持续尝试检索下一个预期的WAL文件,以及下一个历史文件(以防上游已升级到新的时间线)。如果文件(尚未)存在,配置的命令(此处为scp)将报告文件未找到错误,这是正常且预期的。
参考资料
- PostgreSQL文档: restore_command
- PostgreSQL 11 文档: restore_command
