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

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

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

CONFIGURATION PARAMETER预写式日志 / 归档

archive_mode

允许使用 archive_command 归档 WAL 文件。

Allows archiving of WAL files using "archive_command".

枚举 重启生效 引入 9.0(基线) 现存至 20 devel 0 次默认值变更

类型
枚举enum
上下文
重启生效只能在服务器启动时设置,修改后需要重启
默认值
off
枚举值
always, on, off
引入版本
9.0(基线)
状态
现存

PostgreSQL 18 手册 官方文档

版本轨迹

相对 PostgreSQL 17 无变化。

默认值变迁

off 9.0 – 20

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

手册说明

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

当启用archive_mode时,完成的WAL段会通过设置 archive_commandarchive_library发送到归档存储。除了off, 要禁用,有两种模式:onalways。在正常操作期间,这两种模式之间没有区别,但当设置为always时, WAL归档程序在归档恢复或待机模式下也会被启用。在always模式下,从归档中恢复的所有文件 或通过流复制传输的文件将被再次归档。详细信息请参见 Section 26.2.9

archive_mode是一个独立的设置,不同于 archive_commandarchive_library,这样 archive_commandarchive_library可以在不离开 归档模式的情况下进行更改。 此参数只能在服务器启动时设置。 当wal_level设置为minimal时, 无法启用archive_mode

机制详解

启用后,PostgreSQL 会运行 WAL 归档进程,并在段文件可被回收之前将每个已完成段交给 archive_command,或在支持版本中交给 archive_library。模式与命令或库相互独立,因此归档逻辑可以重载而无需退出归档模式。

在普通主库运行期间,on 与 always 没有区别。在恢复或备库模式下,on 不归档收到的 WAL,而 always 还会归档从归档恢复或通过流复制收到的段。

打开该模式并不能证明归档健康或可恢复。命令失败会让 WAL 在 pg_wal 中积累;错误地返回成功会造成不可恢复的 WAL 链。时间点恢复还需要合适的基础备份和经过验证的恢复流程。

调优建议

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

  • OLTP在线事务处理

    只为明确的 PITR 或日志传送需求启用,并使用可靠、幂等的归档实现。监控 pg_stat_archiver 失败、最新归档时间和 pg_wal 增长;恢复演练比命令返回成功更有说服力。

  • OLAP分析与批处理

    按批量导入的 WAL 峰值规划归档带宽和目标容量。归档跟不上时,应节流或错峰批任务,而不是放任 pg_wal 写满。

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

    只有理解保留策略和恢复步骤时才使用 pgBackRest 等托管工具。对于可随时重建的数据库,应保持关闭,而不是配置一个占位归档命令。

常见问题

  • 启用 archive_mode 却使用空命令或失败命令,最终写满 pg_wal。
  • 使用 /bin/true 一类虚假成功命令,破坏可恢复的 WAL 链。
  • 误以为 archive_mode 可重载;修改它需要重启服务器。
  • 把 WAL 归档当作基础备份和恢复演练的替代品。
  • always 模式写共享归档时没有处理重复文件和并发竞态。

演化历史

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

  1. PostgreSQL 20 ← 19 沿用 19

    事实沿用 19

  2. PostgreSQL 17 ← 16 仅描述更新

    简述 Allows archiving of WAL files using archive_command. Allows archiving of WAL files using "archive_command".

  3. PostgreSQL 9.5 ← 9.4 属性变更

    类型 布尔 枚举 枚举值 (无) always, on, off

逐版本快照

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

版本 默认值单位上下文类型最小值最大值枚举值
9.0 off 重启生效 布尔
9.1 off 重启生效 布尔
9.2 off 重启生效 布尔
9.3 off 重启生效 布尔
9.4 off 重启生效 布尔
9.5 off 重启生效 枚举 always, on, off
9.6 off 重启生效 枚举 always, on, off
10 off 重启生效 枚举 always, on, off
11 off 重启生效 枚举 always, on, off
12 off 重启生效 枚举 always, on, off
13 off 重启生效 枚举 always, on, off
14 off 重启生效 枚举 always, on, off
15 off 重启生效 枚举 always, on, off
16 off 重启生效 枚举 always, on, off
17 off 重启生效 枚举 always, on, off
18 off 重启生效 枚举 always, on, off
19 off 重启生效 枚举 always, on, off
20 沿用 off 重启生效 枚举 always, on, off

参考资料

同类参数

参数 类型 上下文 默认值 版本变动 最近变更
Write-Ahead Log 预写式日志 4 个
归档 4
archive_command 字符串 重载生效 空字符串
设置归档 WAL 文件时调用的 shell 命令。 现存
archive_library 字符串 重载生效 空字符串
设置归档 WAL 文件时调用的库。 现存
archive_mode 枚举 重启生效 off 9.51 次
允许使用 archive_command 归档 WAL 文件。 现存
archive_timeout 整数 重载生效 0 s
设置强制切换到下一个 WAL 文件前的最长等待时间。 现存