2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0

pg_archivecleanup

pg_archivecleanup — 清理 PostgreSQL WAL 歸檔檔案

概要

pg_archivecleanup [選項...] archivelocation oldestkeptwalfile

描述

pg_archivecleanup 設計用於作為 archive_cleanup_command 來清理 WAL 檔案歸檔,特別是在作為備用伺服器執行時(參見 第 26.2 節)。pg_archivecleanup 也可以作為獨立程式來清理 WAL 檔案歸檔。

要配置備用伺服器使用 pg_archivecleanup,請將其新增到其 postgresql.conf 配置檔案中:

archive_cleanup_command = 'pg_archivecleanup archivelocation %r'

其中 archivelocation 是應從中刪除 WAL 段檔案的目錄。

當在 archive_cleanup_command 中使用時,所有邏輯上先於 %r 引數值的 WAL 檔案都將從 archivelocation 中刪除。這最小化了需要保留的檔案數量,同時保持了崩潰恢復能力。如果 archivelocation 是此特定備用伺服器的臨時暫存區域,則使用此引數是合適的,但如果 archivelocation 被用作長期 WAL 歸檔區域,或者多個備用伺服器從同一歸檔位置恢復,則不應使用。

當作為獨立程式使用時,所有邏輯上先於 oldestkeptwalfile 的 WAL 檔案都將從 archivelocation 中刪除。在此模式下,如果您指定了 .partial.backup 檔名,則只有檔案字首將用作 oldestkeptwalfile。對 .backup 檔名的這種處理允許您在沒有錯誤的情況下刪除在特定基礎備份之前歸檔的所有 WAL 檔案。例如,以下示例將刪除所有比 WAL 檔名 000000010000003700000010 舊的檔案:

pg_archivecleanup -d archive 000000010000003700000010.00000020.backup

pg_archivecleanup:  keep WAL file "archive/000000010000003700000010" and later
pg_archivecleanup:  removing file "archive/00000001000000370000000F"
pg_archivecleanup:  removing file "archive/00000001000000370000000E"

pg_archivecleanup 假定 archivelocation 是伺服器擁有使用者可讀寫目錄。

選項

pg_archivecleanup 接受以下命令列引數:

-b
--clean-backup-history

同時刪除備份歷史檔案。有關備份歷史檔案的詳細資訊,請參見 第 25.3.2 節

-d
--debug

stderr 上列印大量除錯日誌輸出。

-n
--dry-run

stdout 上列印將要刪除的檔名(執行模擬執行)。

-V
--version

列印 pg_archivecleanup 版本並退出。

-x extension
--strip-extension=extension

提供一個副檔名,它將在決定是否刪除檔案之前從所有檔名中剝離。這對於清理在儲存過程中被壓縮的歸檔檔案通常很有用,因為壓縮程式會新增副檔名。例如:-x .gz

-?
--help

顯示關於 pg_archivecleanup 命令列引數的幫助,然後退出。

環境變數

環境變數 PG_COLOR 指定是否在診斷訊息中使用顏色。可能的值為 alwaysautonever

註釋

pg_archivecleanup 設計用於與 PostgreSQL 8.0 及更高版本(作為獨立實用程式使用時),或與 PostgreSQL 9.0 及更高版本(作為歸檔清理命令使用時)配合使用。

pg_archivecleanup 是用 C 編寫的,原始碼易於修改,並專門指定了需要修改的部分以滿足您的特定需求。

示例

在 Linux 或 Unix 系統上,您可能會使用:

archive_cleanup_command = 'pg_archivecleanup -d /mnt/standby/archive %r 2>>cleanup.log'

其中歸檔目錄物理上位於備用伺服器上,以便 archive_command 透過 NFS 訪問它,但檔案位於備用伺服器本地。這將:

  • cleanup.log 中產生除錯輸出

  • 從歸檔目錄中刪除不再需要的檔案

提交更正

如果您在文件中發現任何不正確、與您對特定功能的實際體驗不符或需要進一步說明的內容,請使用 此表單 報告文件問題。