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

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

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

CONFIGURATION PARAMETER预写式日志 / 归档

archive_timeout

设置强制切换到下一个 WAL 文件前的最长等待时间。

Sets the amount of time to wait before forcing a switch to the next WAL file.

整数 重载生效 引入 9.0(基线) 现存至 20 devel 0 次默认值变更

类型
整数integer
上下文
重载生效改配置文件后重载(pg_ctl reload / SIGHUP)即可生效
默认值
0 s原始值 0 s
取值范围
0 – 1073741823
引入版本
9.0(基线)
状态
现存

PostgreSQL 18 手册 官方文档

版本轨迹

相对 PostgreSQL 17 仅简述或分类有更新。

默认值变迁

0 s 9.0 – 20

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

手册说明

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

archive_commandarchive_library仅在完成的WAL段中调用。 因此,如果您的服务器生成的WAL流量较少(或者在这样做时有间歇期),在事务完成和安全记录到归档存储之间可能会有很长的延迟。 为了限制未归档数据的年龄,您可以将archive_timeout设置为强制服务器定期切换到新的WAL段文件。 当此参数大于零时,只要自上次段文件切换以来经过了这段时间,并且存在任何数据库活动,包括单个检查点(如果没有数据库活动,则跳过检查点),服务器将切换到新的段文件。 请注意,由于强制切换而提前关闭的归档文件仍然与完全填满的文件长度相同。因此,使用非常短的archive_timeout是不明智的,它会使您的归档存储膨胀。 通常,将archive_timeout设置为一分钟左右是合理的。如果您希望数据比这更快地从主库复制出来,您应该考虑使用流复制而不是归档。 如果未指定单位,则将此值视为秒。 此参数只能在postgresql.conf文件或服务器命令行中设置。

机制详解

设置强制切换到下一个 WAL 文件前的最长等待时间。重新加载配置即可应用新值;已经开始的工作不会被追溯改变。

在间隔内没有自然换段时,PostgreSQL 强制切换 WAL 段以便归档当前部分。它不会让 WAL 更早持久化;过小会产生大量未写满但仍占完整段空间的归档文件。

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

调优建议

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

  • OLTP在线事务处理

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

  • OLAP分析与批处理

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

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

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

常见问题

  • 把它误当成提交持久化超时。
  • 间隔过小,制造大量几乎为空却占完整段空间的归档文件。
  • 误以为强制换段能解决归档进程缓慢或失败。
  • 混淆 pg_settings 的原始单位与配置文件可读单位。
  • 只做吞吐基准,不做崩溃恢复与归档还原。

演化历史

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

  1. PostgreSQL 20 ← 19 沿用 19

    事实沿用 19

  2. PostgreSQL 18 ← 17 仅描述更新

    补充说明 (无) 0 disables the timeout.

  3. PostgreSQL 15 ← 14 仅描述更新

    简述 Forces a switch to the next WAL file if a new file has not been started within N seconds. Sets the amount of time to wait before forcing a switch to the next WAL file.

  4. PostgreSQL 10 ← 9.6 仅描述更新

    简述 Forces a switch to the next xlog file if a new file has not been started within N seconds. Forces a switch to the next WAL file if a new file has not been started within N seconds.

逐版本快照

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

版本 默认值单位上下文类型最小值最大值枚举值
9.0 0 s s 重载生效 整数 0 1073741823
9.1 0 s s 重载生效 整数 0 1073741823
9.2 0 s s 重载生效 整数 0 1073741823
9.3 0 s s 重载生效 整数 0 1073741823
9.4 0 s s 重载生效 整数 0 1073741823
9.5 0 s s 重载生效 整数 0 1073741823
9.6 0 s s 重载生效 整数 0 1073741823
10 0 s s 重载生效 整数 0 1073741823
11 0 s s 重载生效 整数 0 1073741823
12 0 s s 重载生效 整数 0 1073741823
13 0 s s 重载生效 整数 0 1073741823
14 0 s s 重载生效 整数 0 1073741823
15 0 s s 重载生效 整数 0 1073741823
16 0 s s 重载生效 整数 0 1073741823
17 0 s s 重载生效 整数 0 1073741823
18 0 s s 重载生效 整数 0 1073741823
19 0 s s 重载生效 整数 0 1073741823
20 沿用 0 s s 重载生效 整数 0 1073741823

参考资料

同类参数

参数 类型 上下文 默认值 版本变动 最近变更
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 文件前的最长等待时间。 现存