支援的版本:目前 (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 中產生除錯輸出

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

提交更正

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