archive_timeout

确定WAL文件存档前最大时间间隔的配置参数

archive_timeout 是一个配置参数,用于确定在将WAL文件归档之前可以经过的最长时间,无论该文件是否已满。

archive_timeoutPostgreSQL 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

更改历史

示例

演示将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
$

分类

GUC配置项复制

另请参阅

archive_command

反馈

提交任何关于"archive_timeout"的评论、建议或更正 在此处