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
指定是否在診斷訊息中使用顏色。可能的值為 always
、auto
和 never
。
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
中產生除錯輸出
從歸檔目錄中刪除不再需要的檔案
如果您在文件中發現任何不正確、與您對特定功能的實際體驗不符或需要進一步說明的內容,請使用 此表單 報告文件問題。