archive_command

一个配置参数,用于确定已完成的WAL段如何被归档

archive_command 是一个 配置参数,它决定了已完成的 WAL 段如何被发送到归档存储。

archive_commandPostgreSQL 8.0 中被添加。

默认值

archive_command 的默认值是:'' (空字符串)

用法

为了让 archive_command 被识别,archive_mode 必须被设置为 onPostgreSQL 9.5 及更高版本:可选 always)。

禁用WAL归档

由于 archive_mode 的更改生效需要 PostgreSQL 重启,因此临时禁用 WAL 归档的推荐方法是将 archive_command 设置为空字符串(''),这将导致命令失败。一旦设置了有效的 archive_command,归档将恢复。

如果 archive_command 被设置为一个返回零退出状态(成功)的任意命令,例如 /bin/true,那么准备归档的 WAL 文件将被删除而不会被归档。这实际上也禁用了归档,但意味着归档 WAL 文件链将出现断裂,并且除非通过其他途径归档文件,否则归档将仅在归档链断裂之前最后一个归档的文件为止是有效的。

故障处理

如果 archive_command 无法执行,PostgreSQL 将最多重试执行 3 次,每次重试之间暂停 1 秒,然后发出以下日志消息:

archiving write-ahead log file "..." failed too many times, will try again later

然后它将等待最多 60 秒,然后重新开始新的尝试。

这些值在 src/backend/postmaster/pgarch.c 中被硬编码为 NUM_ARCHIVE_RETRIESPGARCH_AUTOWAKE_INTERVAL

诊断问题

PostgreSQL 9.4 开始,可以使用 系统目录 视图 pg_stat_archiver 来确定 archive_command 是否正在失败。

失败的详细信息可以在 PostgreSQL 日志文件中找到,看起来会像这样:

[2019-06-10 21:51:43 UTC] node2 postgres [unknown] LOCATION:  ProcessStandbyReplyMessage, walsender.c:1788
cp: cannot create regular file "/home/backup/invalid-wal-dir/000000010000000000000001": No such file or directory
[2019-06-10 21:51:44 UTC]    LOG:  00000: archive command failed with exit code 1
[2019-06-10 21:51:44 UTC]    DETAIL:  The failed archive command was:
test ! -f /home/backup/invalid-wal-dir/000000010000000000000001 &&
cp pg_wal/000000010000000000000001 /home/backup/invalid-wal-dir/000000010000000000000001

按 PostgreSQL 版本详细信息

archive_command (PostgreSQL 19)

设置
单位  
类别 Write-Ahead Log / 归档
简短描述 设置将用于归档 WAL 文件的 shell 命令。
扩展描述 空字符串表示使用“archive_library”。
上下文 sighup
变量类型 string
来源 默认
最小值  
最大值  
枚举值  
启动值
重置值
源文件  
源行  
需要重启 false

文档archive_command

archive_command (PostgreSQL 18)

设置
单位  
类别 Write-Ahead Log / 归档
简短描述 设置将用于归档 WAL 文件的 shell 命令。
扩展描述 空字符串表示使用“archive_library”。
上下文 sighup
变量类型 string
来源 默认
最小值  
最大值  
枚举值  
启动值
重置值
源文件  
源行  
需要重启 false

文档archive_command

archive_command (PostgreSQL 17)

设置
单位  
类别 Write-Ahead Log / 归档
简短描述 设置将用于归档 WAL 文件的 shell 命令。
扩展描述 仅当未设置“archive_library”时才使用此选项。
上下文 sighup
变量类型 string
来源 默认
最小值  
最大值  
枚举值  
启动值
重置值
源文件  
源行  
需要重启 false

文档archive_command

archive_command (PostgreSQL 16)

设置
单位  
类别 Write-Ahead Log / 归档
简短描述 设置将用于归档 WAL 文件的 shell 命令。
扩展描述 仅当未设置“archive_library”时才使用此选项。
上下文 sighup
变量类型 string
来源 默认
最小值  
最大值  
枚举值  
启动值
重置值
源文件  
源行  
需要重启 false

文档archive_command

archive_command (PostgreSQL 15)

设置
单位  
类别 Write-Ahead Log / 归档
简短描述 设置将用于归档 WAL 文件的 shell 命令。
扩展描述 仅当未设置“archive_library”时才使用此选项。
上下文 sighup
变量类型 string
来源 默认
最小值  
最大值  
枚举值  
启动值
重置值
源文件  
源行  
需要重启 false

文档archive_command

archive_command (PostgreSQL 14)

设置
单位  
类别 Write-Ahead Log / 归档
简短描述 设置将用于归档 WAL 文件的 shell 命令。
扩展描述  
上下文 sighup
变量类型 string
来源 默认
最小值  
最大值  
枚举值  
启动值
重置值
源文件  
源行  
需要重启 false

文档archive_command

archive_command (PostgreSQL 13)

设置
单位  
类别 Write-Ahead Log / 归档
简短描述 设置将用于归档 WAL 文件的 shell 命令。
扩展描述  
上下文 sighup
变量类型 string
来源 默认
最小值  
最大值  
枚举值  
启动值
重置值
源文件  
源行  
需要重启 false

文档archive_command

archive_command (PostgreSQL 12)

设置
单位  
类别 Write-Ahead Log / 归档
简短描述 设置将用于归档 WAL 文件的 shell 命令。
扩展描述  
上下文 sighup
变量类型 string
来源 默认
最小值  
最大值  
枚举值  
启动值
重置值
源文件  
源行  
需要重启 false

文档archive_command

archive_command (PostgreSQL 11)

设置
单位  
类别 Write-Ahead Log / 归档
简短描述 设置将用于归档 WAL 文件的 shell 命令。
扩展描述  
上下文 sighup
变量类型 string
来源 默认
最小值  
最大值  
枚举值  
启动值
重置值
源文件  
源行  
需要重启 false

文档archive_command

archive_command (PostgreSQL 10)

设置
单位  
类别 Write-Ahead Log / 归档
简短描述 设置将用于归档 WAL 文件的 shell 命令。
扩展描述  
上下文 sighup
变量类型 string
来源 默认
最小值  
最大值  
枚举值  
启动值
重置值
源文件  
源行  
需要重启 false

文档archive_command

archive_command (PostgreSQL 9.6)

设置
单位  
类别 Write-Ahead Log / 归档
简短描述 设置将用于归档 WAL 文件的 shell 命令。
扩展描述  
上下文 sighup
变量类型 string
来源 默认
最小值  
最大值  
枚举值  
启动值
重置值
源文件  
源行  
需要重启 false

文档archive_command

archive_command (PostgreSQL 9.5)

设置
单位  
类别 Write-Ahead Log / 归档
简短描述 设置将用于归档 WAL 文件的 shell 命令。
扩展描述  
上下文 sighup
变量类型 string
来源 默认
最小值  
最大值  
枚举值  
启动值
重置值
源文件  
源行  
需要重启 false

文档archive_command

archive_command (PostgreSQL 9.4)

设置
单位  
类别 Write-Ahead Log / 归档
简短描述 设置将用于归档 WAL 文件的 shell 命令。
扩展描述  
上下文 sighup
变量类型 string
来源 默认
最小值  
最大值  
枚举值  
启动值
重置值
源文件  
源行  

文档archive_command

archive_command (PostgreSQL 9.3)

设置
单位  
类别 Write-Ahead Log / 归档
简短描述 设置将用于归档 WAL 文件的 shell 命令。
扩展描述  
上下文 sighup
变量类型 string
来源 默认
最小值  
最大值  
枚举值  
启动值
重置值
源文件  
源行  

文档archive_command

archive_command (PostgreSQL 9.2)

设置
单位  
类别 Write-Ahead Log / 归档
简短描述 设置将用于归档 WAL 文件的 shell 命令。
扩展描述  
上下文 sighup
变量类型 string
来源 默认
最小值  
最大值  
枚举值  
启动值
重置值
源文件  
源行  

文档archive_command

archive_command (PostgreSQL 9.1)

设置
单位  
类别 Write-Ahead Log / 归档
简短描述 设置将用于归档 WAL 文件的 shell 命令。
扩展描述  
上下文 sighup
变量类型 string
来源 默认
最小值  
最大值  
枚举值  
启动值
重置值
源文件  
源行  

文档archive_command

archive_command (PostgreSQL 9.0)

设置
单位  
类别 Write-Ahead Log / 归档
简短描述 设置将用于归档 WAL 文件的 shell 命令。
扩展描述  
上下文 sighup
变量类型 string
来源 默认
最小值  
最大值  
枚举值  
启动值
重置值
源文件  
源行  

文档archive_command

archive_command (PostgreSQL 8.4)

设置
单位  
类别 Write-Ahead Log / 设置
简短描述 设置将用于归档 WAL 文件的 shell 命令。
扩展描述  
上下文 sighup
变量类型 string
来源 默认
最小值  
最大值  
枚举值  
启动值
重置值
源文件  
源行  

文档archive_command

archive_command (PostgreSQL 8.3)

设置  
单位  
类别 Write-Ahead Log / 设置
简短描述 设置将用于归档 WAL 文件的 shell 命令。
扩展描述  
上下文 sighup
变量类型 string
来源 默认
最小值  
最大值  

文档archive_command

archive_command (PostgreSQL 8.2)

设置  
单位  
类别 Write-Ahead Log / 设置
简短描述 WAL 归档命令。
扩展描述 将用于归档 WAL 文件的 shell 命令。
上下文 sighup
变量类型 string
来源 默认
最小值  
最大值  

文档archive_command

变更历史

示例

archive_command 命令反复失败时 PostgreSQL 日志输出示例

cp: cannot create regular file '/var/log/archive/000000010000000000000001': No such file or directory
[2022-05-19 18:46:53 UTC]    LOG:  00000: archive command failed with exit code 1
[2022-05-19 18:46:53 UTC]    DETAIL:  The failed archive command was: test ! -f /var/log/archive/000000010000000000000001 && cp pg_wal/000000010000000000000001 /var/log/archive/000000010000000000000001
cp: cannot create regular file '/var/log/archive/000000010000000000000001': No such file or directory
[2022-05-19 18:46:54 UTC]    LOG:  00000: archive command failed with exit code 1
[2022-05-19 18:46:54 UTC]    DETAIL:  The failed archive command was: test ! -f /var/log/archive/000000010000000000000001 && cp pg_wal/000000010000000000000001 /var/log/archive/000000010000000000000001
cp: cannot create regular file '/var/log/archive/000000010000000000000001': No such file or directory
[2022-05-19 18:46:55 UTC]    LOG:  00000: archive command failed with exit code 1
[2022-05-19 18:46:55 UTC]    DETAIL:  The failed archive command was: test ! -f /var/log/archive/000000010000000000000001 && cp pg_wal/000000010000000000000001 /var/log/archive/000000010000000000000001
[2022-05-19 18:46:55 UTC]    LOCATION:  shell_archive_file, shell_archive.c:124
[2022-05-19 18:46:55 UTC]    WARNING:  01000: archiving write-ahead log file "000000010000000000000001" failed too many times, will try again later
...
cp: cannot create regular file '/var/log/archive/000000010000000000000001': No such file or directory
[2022-05-19 18:47:53 UTC]    LOG:  00000: archive command failed with exit code 1
...

请注意,成功恢复归档不会被记录。

分类

GUC 配置项, 复制, 存储

另请参阅

archive_mode, archive_timeout, pg_stat_archiver, restore_command, archive_library

反馈

在此处 提交关于“archive_command”的任何评论、建议或更正