PostgreSQL 中差異備份的 PgBackRest 策略
我在兩個不同的伺服器中設置了 pgBackRest 和 PostgreSQL 配置。
我使用 crontab 設置了每週一次完整備份和每天一次差異備份。
0 1 * * 0 pgbackrest --type=full --stanza=stanzaname backup 0 1 * * 1-6 pgbackrest --type=diff --stanza=stanzaname backup
我如下設置保留以節省磁碟使用量:
repo1-retention-full=2 repo1-retention-diff=1 repo1-retention-archive-type=full
使用這種保留配置是否可以確保 PITR 最多覆蓋 2 週?
如果是,將差異保留設置為大於 1 是否有好處?
因為保留更多差異備份可能會消耗大量磁碟空間。
可能取決於您的存檔 (WAL) 保留策略。
- 夜間差異:僅依靠您的夜間差異,您的 PITR 恢復視窗只能達到上週日的完整備份。從他們的文件中,“差異備份:pgBackRest 僅複製自上次完整備份以來已更改的那些數據庫集群文件”。
假設今天是 9 月 19 日星期四,您想恢復到上週的星期二(10 日)。您不能使用唯一的差異,即今晚(19 日)凌晨 1 點拍攝的差異,它僅包含自 15 日星期日上次完整備份以來的變化。如果您恢復最早的完整備份,即 8 日星期日進行的備份,則從 9 日星期一到 14 日星期六,您沒有任何差異可應用於它。 2. WAL 存檔:那麼,如果您在恢復 9 月 8 日星期日拍攝的完整備份後應用它們,您可以使用存檔的 WAL 文件嗎?也許 - 這是我認為文件有點不清楚的部分:“pgBackRest 在備份到期時自動刪除存檔的 WAL 段(預設使 WAL 到期基於 repo1-retention-full 選項的完整備份)”。
我不確定它們是否意味著上週的 WALS 保持不變;聽起來可能是的,因為最舊的完整還沒有過期..但是括號中的陳述讓我有些停頓。 3. 不管#2,我的建議是找到一個不僅僅依賴於 WAL 存檔保留的解決方案。您可以為每晚的差異配置更高的保留時間,這樣您就不需要僅僅依賴 WAL 存檔(理想但會佔用大量磁碟),或者每 2 週只進行一次完整備份(我自己不喜歡這個選項,因為我更喜歡每週一飽的安心)
或者你可以做我們所做的,每晚增量:“增量備份不能獨立過期——它們總是與相關的完整備份或差異備份一起過期。”
為了實現相同的 14 天 PITR 視窗,我們正在做:
- 週六凌晨 1 點完整備份,保留 2
- 週日至週五的每晚增量
我們發現以上對我們來說是一個很好的平衡:每晚的增量相對較小,並且比差速器更快,尤其是當我們遠離週六的滿載時。
來源:https : //pgbackrest.org/user-guide.html(2019-09-19訪問)