支援的版本:目前 (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 被設計為當作為待機伺服器執行時(請參閱第 26.2 節),用作清理 WAL 檔案封存的 archive_cleanup_commandpg_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 中產生除錯輸出

  • 從封存目錄中移除不再需要的檔案

提交更正

如果您在文件中看到任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的內容,請使用此表單報告文件問題。