PostgreSQL pg_archivecleanup

2021-09-13 17:21 更新

pg_archivecleanup — 清理PostgreSQL WAL 歸檔文件

大綱

pg_archivecleanup [option...] archivelocation oldestkeptwalfile

簡(jiǎn)介

pg_archivecleanup被設(shè)計(jì)用作 archive_cleanup_command在作為后備服務(wù)器運(yùn)行( 第 26.2 節(jié))時(shí)來(lái)清理 WAL 文件歸檔。 pg_archivecleanup也可以被用作一個(gè)單獨(dú)的程序來(lái)清理 WAL 文件歸檔。

要配置一個(gè)后備服務(wù)器以使用pg_archivecleanup,把下面 的內(nèi)容放在postgresql.conf配置文件中:

archive_cleanup_command = 'pg_archivecleanup archivelocation %r'

其中archivelocation是要從中移除 WAL 段文件的目錄。

當(dāng)被用在archive_cleanup_command中時(shí),所有邏輯上在 %r參數(shù)的值之前的 WAL 文件都將被從 archivelocation移除。這能最小化需要被保留的文件數(shù)量, 同時(shí)能保留崩潰后重啟的能力。如果對(duì)于這臺(tái)特定的后備服務(wù)器, archivelocation 是一個(gè)短暫需要的區(qū)域,使用這個(gè)參數(shù)就是 合適的,但是當(dāng)archivelocation要用作一個(gè)長(zhǎng)期的 WAL 歸檔 區(qū)域或者當(dāng)多個(gè)后備服務(wù)器正在從這個(gè)歸檔位置恢復(fù)時(shí),使用這個(gè)參數(shù)就 合適。

當(dāng)被用作一個(gè)單獨(dú)的程序時(shí),所有邏輯上在oldestkeptwalfile 之前的 WAL 文件將被從archivelocation中移除。在這種模式 中,如果指定了.partial或者.backup文件名,則 只有該文件前綴將被用作 oldestkeptwalfile 。這種對(duì) .backup文件名的處理允許你移除所有在一個(gè)特定基礎(chǔ)備份之前歸 檔的 WAL 文件而不出錯(cuò)。例如,下面的例子將移除所有比 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是一個(gè)可讀的目錄并且對(duì)于服務(wù)器擁有者是可寫的。

選項(xiàng)

pg_archivecleanup接受下列命令行參數(shù):

-d

stderr上打印很多調(diào)試日志輸出。

-n

stdout上打印將被移除的文件的名字(執(zhí)行一次演習(xí))。

-V
--version

打印pg_archivecleanup版本并退出。

-x extension

提供一個(gè)擴(kuò)展名,在決定所有的文件 是否應(yīng)該被刪除之前,將從文件名中剝離這個(gè)擴(kuò)展名。這通常有助于清理已經(jīng) 存儲(chǔ)期間被壓縮過(guò)并且被壓縮程序增加了一個(gè)擴(kuò)展名的歸檔。例如: -x .gz。

-?
--help

顯示pg_archivecleanup命令行參數(shù)的幫助并退出。

環(huán)境

環(huán)境變量 PG_COLOR 指定是否在診斷消息中使用顏色。 可能的值是 always, autonever

注解

在作為一個(gè)單獨(dú)的工具時(shí),pg_archivecleanup 被設(shè)計(jì)為與PostgreSQL 8.0 及其后的版本一起工作。如果 作為一個(gè)歸檔清理命令使用,則需要和PostgreSQL 9.0 及 其后的版本一起工作。

pg_archivecleanup以 C 寫成并且具有很容易修改的 源代碼,其中有特別指定的區(qū)域用于修改以符合你的需要

示例

在 Linux 或者 Unix 系統(tǒng)上,你可能會(huì)用:

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

其中歸檔目錄位于后備服務(wù)器上,這樣archive_command通過(guò) NFS 來(lái)訪問(wèn)它,但是文件對(duì)于后備服務(wù)器來(lái)說(shuō)是本地的。這將會(huì)

  • cleanup.log中產(chǎn)生調(diào)試輸出

  • 從歸檔目錄中移除不再需要的文件


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)