Postgresql

存檔文件夾 PostgreSQL 流複製中的 WAL 文件太多

  • August 14, 2020

我在流複製中配置了兩台 Postgresql 9.5 伺服器。日誌文件中沒有錯誤,伺服器似乎是同步的。

大師 postgresl.config

archive_command = 'test ! -f mnt/server/archivedir/%f && cp %p mnt/server/archivedir/%f'
wal_keep_segments = 32

其他一切幾乎都是預設的。然而我在存檔目錄中有 1600 多個文件!由於篇幅限制,我敢於刪除其中的一些。我想弄清楚是什麼原因造成的。我還看到同一目錄的從屬伺服器上只有非常舊的文件。

我唯一能想到的是我最近對數據庫進行了還原。我刪除了數據庫,創建了它並進行了備份還原。我這樣做了好幾次。奴隸似乎已經趕上了變化。但是對於每個備份還原,我在存檔文件夾中都有大量的 WAL 文件。希望對可能發生的事情有所了解。

wal_keep_segments告訴它要在目錄中保留多少文件pg_xlog,而不是存檔目錄。

PostgreSQL 不會為您管理存檔目錄,這取決於您。它甚至不知道存檔位置在哪裡(或什麼),這就是為什麼它要求您提供archive_command,而不僅僅是一個目錄。就 PostgreSQL 而言,您的歸檔命令可以通過 od 傳遞文件,將輸出發送到帶有無酸紙的行式列印機,然後將其放入 3 環活頁夾中並將它們儲存在您的閣樓中。雖然更常見的是加密它們並將它們上傳到亞馬遜的 S3,比如說。

兩者一起使用有點奇怪,至少對於相對簡單的設置來說是wal_keep_segments這樣archive_command。如果您只想要一個流式副本並且不需要進行時間點恢復的能力,您可以完全關閉歸檔。

如果您確實想繼續使用存檔但在不再需要文件時將其清理,您可以使用該archive_cleanup_command設置。但是現在我們有了流複製和複製槽,這幾乎已經過時了。

引用自:https://dba.stackexchange.com/questions/186103