PostgreSQL参数archive_cleanup_command

archive_cleanup_command 参数指定了一个 shell 命令在每个 restartpoint 时执行。这个参数的目的就是提供了一种机制来清理备库不再需要的老的归档的 WAL 日志。任何 %r 都将替换为包含最后一个有效 restartpoint 的文件名,这个文件是最早的一个 wal 文件,它能够保证 restore 能够被重新执行。对于任何早于 %r 的文件都可以安全的删除。

%r 所表示的信息可用于将 WAL 归档文件截断为支持从当前恢复重新启动所需的最小值。pg_archivecleanup 模块通常用于 archive_cleanup_command 中的单个备机的配置,例如:

archive_cleanup_command = 'pg_archivecleanup /mnt/server/archivedir %r'

如果有多个备机从同一个归档目录中恢复,必须确保删除的 WAL 日志不能被任何一个备机需要。

  • 可以设置在 postgresql.conf 文件中或者在数据库程序启动的命令行中设置
  • 命令执行时机:在每个 restart point 点执行,即对应内核函数 CreateRestartPoint()
  • 如果命令返回非 0 值,则将会写入一条 Warning 日志。如果发生异常,比如命令被信号中断执行,或者 shell 发生错误(命令未找到),将会写入一条 fatal 日志。

文章评论

0条评论