Postgresql

如何為增量備份和熱備配置 Postgres 9.4?

  • January 10, 2016

我想設置 Postgres 進行增量備份。我在 Windows 上使用 PostgreSQL 9.4,數據庫重約 1GB,每天有 10000 條記錄在增長。

我了解配置備份所需的步驟是:

  1. 在“archives/hot_standby”中將“write_ahead_logs”配置為“on”和“wal_level”
  2. 製作“start_basebackup”並複制數據文件夾
  3. 複製文件後執行“stop_basebackup”
  4. 最後將生成的 WAL 文件複製到另一個位置

但我對 Postgres 文件有疑問:

  1. 建議或建議多久創建一次新的 base_backup,如果有必要?
  2. 是否可以讓從伺服器配置 hot_standby 並同時進行增量備份?

另外我想知道是否有適用於 Windows 的 PITR 管理器,如適用於 linux 的 Barman。

謝謝

為了解決您的第一個問題,如果您對數據庫進行單個基本備份並繼續歸檔 WAL 段,那麼隨著 WAL 段數量的增加,恢復該數據庫的時間將越來越長。如果您有停機時間並且需要備份工作數據庫,那麼這並不是一個理想的情況。

大多數人會弄清楚他們可以花費多少時間進行恢復,以及他們需要滿足哪些恢復要求,並在他們的儲存預算和恢復要求允許的情況下保留多個基本備份和額外的 WAL 段。

此外,對於非常、非常、非常、非常大的 WAL 存檔,有時個別段可能會發生問題(這是始終測試備份的另一個重要原因!),如果 WAL 段無法恢復,則後面的其他段都不會失敗段將恢復。到那時,你就不走運了。

我遵循的一個一般規則是每週進行一次基本備份,並保留 3 週的 WAL 段和 2 個基本備份,這讓我可以放心地知道我有一個已知良好的備份和一組已知良好的 WAL 段,和合理的恢復時間。

對於第二個問題,如果您以這種方式進行設置,您可以擁有一個熱備用伺服器和增量備份。您的熱備用伺服器只需要來自主伺服器的初始基本備份,以及 WAL 段或 WAL 記錄流(在 Streaming Replication 的情況下,9.4 支持並且比簡單的 WAL 傳送要好得多)。

我建議使用 Streaming Replication 進行熱備份,然後使用pg_basebackup從熱備份伺服器獲取基本備份,這將大大減少主伺服器上的資源負載。

對於增量(PITR)備份,您只需要讓您的主伺服器使用archive_commandpg_receivexlog將它生成的 WAL 段發送到其他地方(當然最好是不同的硬體) 。

推送您在pg_basebackup那裡創建的每週基本備份將使跟踪增量恢復所需的所有必要組件變得更加容易。此外,將所有內容放在一起使測試這些備份變得微不足道。

至於第三個問題,我不知道在 Windows 上執行的 PITR 管理器。理論上,由於它只是 Python,它可以在 Windows 上執行,但正如常見問題解答所說,它尚未經過測試。

Magnus Hagander 對 PgCon 2013 上的備份進行了精彩的演講,您可能會覺得很有幫助:PostgreSQL Backup Strategies

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