PostgreSQL 什么时候执行 archive_command 来归档 wal 文件?

fra*_*ncs 7 postgresql

我使用archive_command下面的文件来归档 WAL 文件。假设我已经接触过该文件archive_active。PostgreSQL 什么时候执行提供archive_command的归档 WAL 文件?

我知道我们可以使用该函数pg_switch_xlog()按需归档WAL,还有其他触发条件吗?

PostgreSQL 版本:9.3.0。

--postgresql.conf

archive_command = 'test ! -f /archive/pg93/archive_active || cp %p /archive/pg93/%f'
wal_level = hot_standby
archive_mode = on
Run Code Online (Sandbox Code Playgroud)

--归档目录

[pg93@redhatB pg93]$ pwd
/archive/pg93

[pg93@redhatB pg93]$ ll
total 32M
-rw-------. 1 pg93 pg93 16M Oct 16 11:05 00000001000000000000007A
-rw-------. 1 pg93 pg93 16M Oct 16 11:07 00000001000000000000007B
-rw-rw-r--. 1 pg93 pg93   0 Oct 16 11:05 archive_active
Run Code Online (Sandbox Code Playgroud)

Jim*_*nke 11

每次将存档日志切换到新日志时,都会执行存档命令。正如您所说,可以通过调用该pg_switch_xlog()函数来手动触发。

除此之外,归档日志在满时需要更改为新的,默认情况下是达到 16MB 时,但可以在编译时更改。

您还可以使用参数指定超时值,该参数archive_timeout将在设置的秒数后执行命令,这对于活动较少的数据库很有用。

更新:

版本 10 引入了一项更改,将引用“xlog”的所有内容重命名为“wal”,因此pg_switch_xlog()现在称为pg_switch_wal()