Postgresql

是否可以通過 Postgres WAL 歸檔來防止數據失去?

  • August 16, 2019

正如我從文件中了解到的那樣,當段文件達到一定大小或由於archive_timeout.

因此,如果數據庫崩潰,來自不完整的、目前活動的 WAL 段的所有數據都將失去(假設我們無權訪問 Postgres 目錄中的那個不完整的段)。

我做對了嗎?如果是這樣,有沒有辦法避免這種數據失去?

你是對的。

避免這種情況的方法是使用pg_receivewal,它從數據庫伺服器流式傳輸 WAL 資訊並立即將其保存在 WAL 段副本中。

預設情況下,這是非同步的,因此在發生崩潰時您可能會失去一些分秒。您需要避免這種情況,您必須使用同步複製pg_receivewal,但請注意

  1. 這會使 DML 語句變慢,因為COMMIT在收到pg_receivewal.
  2. 你不應該設置synchronous_commit = remote_apply,因為pg_receivewal從不應用更改,它只是將它們保存到 WAL 文件中。

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