archive_timeout
是一个配置参数,用于确定在将WAL文件归档之前可以经过的最长时间,无论该文件是否已满。
archive_timeout
在PostgreSQL 8.2中添加。
用法
通常,WAL文件在填满后立即归档。但是,如果活动较低,则可能需要一段时间才能归档该文件。通过将archive_timeout
设置为正值,可以保证在指定的时间间隔后,将创建一个新的WAL文件,并将上一个文件归档,但是前提是有任何生成WAL的活动。
请注意,如果使用不当,这会导致生成大量基本上为空的WAL文件,这将占用比必要更多的存档存储空间。
为了确保将WAL近乎实时地传输到另一台服务器,建议使用流式复制。
默认值
archive_timeout
的默认值为:0
(禁用)。
按PostgreSQL版本分列详细信息
archive_timeout (PostgreSQL 17)
设置 | 0 |
单位 | 秒 |
类别 | 预写日志/归档 |
简短描述 | 设置等待强制切换到下一个WAL文件的时间量。 |
额外描述 | |
上下文 | sighup |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1073741823 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 | |
待处理的重启 | 否 |
文档: archive_timeout
archive_timeout (PostgreSQL 16)
设置 | 0 |
单位 | 秒 |
类别 | 预写日志/归档 |
简短描述 | 设置等待强制切换到下一个WAL文件的时间量。 |
额外描述 | |
上下文 | sighup |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1073741823 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 | |
待处理的重启 | 否 |
文档: archive_timeout
archive_timeout (PostgreSQL 15)
设置 | 0 |
单位 | 秒 |
类别 | 预写日志/归档 |
简短描述 | 设置等待强制切换到下一个WAL文件的时间量。 |
额外描述 | |
上下文 | sighup |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1073741823 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 | |
待处理的重启 | 否 |
文档: archive_timeout
archive_timeout (PostgreSQL 14)
设置 | 0 |
单位 | 秒 |
类别 | 预写日志/归档 |
简短描述 | 如果在N秒内未启动新文件,则强制切换到下一个WAL文件。 |
额外描述 | |
上下文 | sighup |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1073741823 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 | |
待处理的重启 | 否 |
文档: archive_timeout
archive_timeout (PostgreSQL 13)
设置 | 0 |
单位 | 秒 |
类别 | 预写日志/归档 |
简短描述 | 如果在N秒内未启动新文件,则强制切换到下一个WAL文件。 |
额外描述 | |
上下文 | sighup |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1073741823 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 | |
待处理的重启 | 否 |
文档: archive_timeout
archive_timeout (PostgreSQL 12)
设置 | 0 |
单位 | 秒 |
类别 | 预写日志/归档 |
简短描述 | 如果在N秒内未启动新文件,则强制切换到下一个WAL文件。 |
额外描述 | |
上下文 | sighup |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1073741823 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 | |
待处理的重启 | 否 |
文档: archive_timeout
archive_timeout (PostgreSQL 11)
设置 | 0 |
单位 | 秒 |
类别 | 预写日志/归档 |
简短描述 | 如果在N秒内未启动新文件,则强制切换到下一个WAL文件。 |
额外描述 | |
上下文 | sighup |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1073741823 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 | |
待处理的重启 | 否 |
文档: archive_timeout
archive_timeout (PostgreSQL 10)
设置 | 0 |
单位 | 秒 |
类别 | 预写日志/归档 |
简短描述 | 如果在N秒内未启动新文件,则强制切换到下一个WAL文件。 |
额外描述 | |
上下文 | sighup |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1073741823 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 | |
待处理的重启 | 否 |
文档: archive_timeout
archive_timeout (PostgreSQL 9.6)
设置 | 0 |
单位 | 秒 |
类别 | 预写日志/归档 |
简短描述 | 如果在N秒内未启动新文件,则强制切换到下一个xlog文件。 |
额外描述 | |
上下文 | sighup |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1073741823 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 | |
待处理的重启 | 否 |
文档: archive_timeout
archive_timeout (PostgreSQL 9.5)
设置 | 0 |
单位 | 秒 |
类别 | 预写日志/归档 |
简短描述 | 如果在N秒内未启动新文件,则强制切换到下一个xlog文件。 |
额外描述 | |
上下文 | sighup |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1073741823 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 | |
待处理的重启 | 否 |
文档: archive_timeout
archive_timeout (PostgreSQL 9.4)
设置 | 0 |
单位 | 秒 |
类别 | 预写日志/归档 |
简短描述 | 如果在N秒内未启动新文件,则强制切换到下一个xlog文件。 |
额外描述 | |
上下文 | sighup |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1073741823 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 |
文档: archive_timeout
archive_timeout (PostgreSQL 9.3)
设置 | 0 |
单位 | 秒 |
类别 | 预写日志/归档 |
简短描述 | 如果在N秒内未启动新文件,则强制切换到下一个xlog文件。 |
额外描述 | |
上下文 | sighup |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1073741823 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 |
文档: archive_timeout
archive_timeout (PostgreSQL 9.2)
设置 | 0 |
单位 | 秒 |
类别 | 预写日志/归档 |
简短描述 | 如果在N秒内未启动新文件,则强制切换到下一个xlog文件。 |
额外描述 | |
上下文 | sighup |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1073741823 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 |
文档: archive_timeout
archive_timeout (PostgreSQL 9.1)
设置 | 0 |
单位 | 秒 |
类别 | 预写日志/归档 |
简短描述 | 如果在N秒内未启动新文件,则强制切换到下一个xlog文件。 |
额外描述 | |
上下文 | sighup |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1073741823 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 |
文档: archive_timeout
archive_timeout (PostgreSQL 9.0)
设置 | 0 |
单位 | 秒 |
类别 | 预写日志/归档 |
简短描述 | 如果在N秒内未启动新文件,则强制切换到下一个xlog文件。 |
额外描述 | |
上下文 | sighup |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1073741823 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 |
文档: archive_timeout
archive_timeout (PostgreSQL 8.4)
设置 | 0 |
单位 | 秒 |
类别 | 预写日志/设置 |
简短描述 | 如果在N秒内未启动新文件,则强制切换到下一个xlog文件。 |
额外描述 | |
上下文 | sighup |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 |
文档: archive_timeout
archive_timeout (PostgreSQL 8.3)
设置 | |
单位 | 秒 |
类别 | 预写日志/设置 |
简短描述 | 如果在N秒内未启动新文件,则强制切换到下一个xlog文件。 |
额外描述 | |
上下文 | sighup |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 2147483647 |
文档: archive_timeout
archive_timeout (PostgreSQL 8.2)
设置 | |
单位 | 秒 |
类别 | 预写日志/设置 |
简短描述 | 如果在N秒内未启动新文件,则强制切换到下一个xlog文件。 |
额外描述 | |
上下文 | sighup |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 2147483647 |
文档: archive_timeout
更改历史
- PostgreSQL 8.2
- 添加 (提交 e8ea9e95)
示例
演示将archive_timeout
设置为10秒的效果(需要将log_min_messages
设置为DEBUG1
或更高)
[2021-04-01 10:22:24 UTC] psql postgres postgres LOG: 00000: statement: INSERT INTO foo VALUES(1); [2021-04-01 10:22:29 UTC] DEBUG: 00000: write-ahead log switch forced (archive_timeout=10) [2021-04-01 10:22:29 UTC] DEBUG: 00000: archived write-ahead log file "000000010000000000000008" [2021-04-01 10:22:43 UTC] DEBUG: 00000: autovacuum: processing database "proddb" [2021-04-01 10:23:55 UTC] psql postgres postgres LOG: 00000: statement: INSERT INTO foo VALUES(1); [2021-04-01 10:23:59 UTC] DEBUG: 00000: write-ahead log switch forced (archive_timeout=10) [2021-04-01 10:23:59 UTC] DEBUG: 00000: archived write-ahead log file "000000010000000000000009"
在上面,可以看到在向表中执行INSERT
操作后不久,WAL文件会在archive_timeout
指定的时间间隔内切换并归档。但是,由于没有生成WAL的活动,因此经过的时间超过了archive_timeout
秒;下一个WAL切换仅在执行另一个INSERT
操作后才会发生。
已归档的WAL文件具有正常的磁盘文件大小
$ ls -l /var/lib/postgres/wal-archive/000000010000000000000008 -rw------- 1 postgres postgres 16777216 Apr 1 10:22 /var/lib/postgres/wal-archive/000000010000000000000008
但大部分为空
$ pg_waldump /var/lib/postgres/wal-archive/000000010000000000000008 rmgr: XLOG len (rec/tot): 49/ 8033, tx: 0, lsn: 0/08000028, prev 0/07000148, desc: FPI_FOR_HINT , blkref #0: rel 1663/14973/1249 blk 17 FPW rmgr: Heap len (rec/tot): 59/ 59, tx: 555, lsn: 0/08001F90, prev 0/08000028, desc: INSERT+INIT off 1 flags 0x00, blkref #0: rel 1663/14973/16470 blk 0 rmgr: Transaction len (rec/tot): 34/ 34, tx: 555, lsn: 0/08001FD0, prev 0/08001F90, desc: COMMIT 2021-04-01 10:22:24.426073 UTC rmgr: Standby len (rec/tot): 54/ 54, tx: 0, lsn: 0/08001FF8, prev 0/08001FD0, desc: RUNNING_XACTS nextXid 556 latestCompletedXid 554 oldestRunningXid 555; 1 xacts: 555 rmgr: XLOG len (rec/tot): 24/ 24, tx: 0, lsn: 0/08002048, prev 0/08001FF8, desc: SWITCH $
参考
- PostgreSQL文档: archive_timeout