pgBackRest 是 PostgreSQL 的可靠備份和復原解決方案,可無縫擴展到最大的資料庫和工作負載。
pgBackRest v2.54.0 是目前的穩定版本。發行說明位於發行頁面。
如果您喜歡 pgBackRest,請在 GitHub 上找到我們並給我們一顆星!
壓縮通常是備份作業期間的瓶頸,因此 pgBackRest 透過平行處理和更有效率的壓縮演算法(例如 lz4 和 zstd)解決了這個問題。
自訂協定允許 pgBackRest 以最少的配置透過 TLS/SSH 在本地或遠端備份、還原和存檔。還透過協定層提供了查詢 PostgreSQL 的接口,因此不需要遠端存取 PostgreSQL,從而增強了安全性。
例如,多個儲存庫允許本機儲存庫具有最小的保留時間以實現快速恢復,而遠端儲存庫則具有較長的保留時間以實現整個企業的冗餘和存取。
支援完整備份、差異備份和增量備份。 pgBackRest 不易受到 rsync 時間解析度問題的影響,從而使差異備份和增量備份安全,無需對每個檔案進行校驗和。區塊級備份透過僅複製檔案中已變更的部分來節省空間。
可以為完整備份和差異備份設定保留策略,以建立任何時間範圍的覆蓋範圍。可以為所有備份或嚴格為最近的備份維護 WAL 存檔。在後一種情況下,使舊備份保持一致所需的 WAL 將保留在存檔中。
為備份中的每個檔案計算校驗和,並在復原或驗證期間重新檢查。備份完成檔案複製後,它會等待,直到備份一致所需的每個 WAL 段都到達儲存庫。
儲存庫中的備份可以採用與標準 PostgreSQL 叢集(包括表空間)相同的格式儲存。如果停用壓縮並啟用硬鏈接,則可以在儲存庫中對備份進行快照,並直接在快照上啟動 PostgreSQL 叢集。這對於以傳統方式恢復非常耗時的 TB 級資料庫來說是有利的。
所有操作都利用檔案和目錄層級的 fsync 來確保持久性。
如果啟用頁面校驗和,pgBackRest 將驗證備份期間複製的每個檔案的校驗和。在完整備份期間驗證所有頁校驗和,在差異備份和增量備份期間驗證已變更檔案中的校驗和。
驗證失敗不會停止備份過程,但會向控制台和文件日誌輸出警告,其中詳細說明哪些頁面驗證失敗。
此功能可在包含有效資料副本的備份過期之前及早偵測到頁級損壞。
中斷的備份可以從停止點恢復。已複製的文件將與清單中的校驗和進行比較,以確保完整性。由於此操作可以完全在儲存庫主機上進行,因此可以減少 PostgreSQL 主機上的負載並節省時間,因為校驗和運算比壓縮和重新傳輸資料更快。
當檔案被複製到儲存庫時,壓縮和校驗和計算都會在流程中執行,無論儲存庫位於本機還是遠端。
如果儲存庫位於儲存庫主機上,則在 PostgreSQL 主機上執行壓縮,檔案以壓縮格式傳輸並簡單儲存在儲存庫主機上。停用壓縮時,會使用較低等級的壓縮來有效利用可用頻寬,同時將 CPU 成本保持在最低水準。
清單包含備份中每個檔案的校驗和,以便在復原過程中可以使用這些校驗和來大幅加快處理速度。在增量復原中,首先刪除備份中不存在的任何文件,然後為剩餘文件產生校驗和。與備份相符的檔案將保留在原處,其餘檔案將照常還原。並行處理可以顯著減少恢復時間。
其中包含用於將 WAL 推送到存檔以及從存檔中獲取 WAL 的專用命令。這兩個命令都支援並行性以加速處理並非同步運行以向 PostgreSQL 提供最快的回應時間。
WAL 推送會自動偵測多次推送的 WAL 段,並在段相同時重複刪除,否則會引發錯誤。非同步 WAL 推送允許將傳輸卸載到另一個進程,該進程並行壓縮 WAL 段以獲得最大吞吐量。對於具有極高寫入量的資料庫來說,這可能是一個關鍵功能。
非同步 WAL get 維護已解壓縮並準備重播的 WAL 區段的本機佇列。這減少了向 PostgreSQL 提供 WAL 所需的時間,從而最大限度地提高了重播速度。較高延遲的連線和儲存(例如 S3)受益最多。
Push 和 get 命令都透過比較 PostgreSQL 版本和系統識別碼來確保資料庫和儲存庫匹配。這實際上消除了錯誤配置 WAL 歸檔位置的可能性。
完全支援表空間,並且在復原時可以將表空間重新對應到任何位置。還可以使用單一命令將所有表空間重新映射到一個位置,這對於開發復原非常有用。
PostgreSQL 叢集中的任何檔案或目錄都支援檔案和目錄連結。恢復時,可以將所有鏈接恢復到其原始位置,重新映射部分或所有鏈接,或將部分或所有鏈接恢復為集群目錄中的正常文件或目錄。
pgBackRest 儲存庫可以位於 S3、Azure 和 GCS 相容的物件儲存中,以實現幾乎無限的容量和保留。
pgBackRest 可以加密儲存庫以保護備份(無論備份儲存在何處)。
pgBackRest 包括對 PostgreSQL 十個版本、五個支援版本和最後五個 EOL 版本的支援。這允許有充足的時間升級到受支援的版本。
pgBackRest 力求簡單設定與操作:
各種作業系統和 PostgreSQL 版本的使用者指南。
命令列操作的命令參考。
建立 pgBackRest 配置的配置參考。
v1 的文檔可以在這裡找到。 v1 沒有計劃進一步發布,因為 v2 與 v1 選項和儲存庫向後相容。
隨時歡迎為 pgBackRest 做出貢獻!請參閱我們的貢獻指南,以了解有關如何貢獻功能、改進或問題的詳細資訊。
pgBackRest 在 MIT 許可下完全免費且開源。您可以將其用於個人或商業目的,不受任何限制。錯誤報告將得到非常嚴肅的對待,並將盡快解決。
透過適當的複製和備份策略來建立強大的災難復原策略可能是一項非常複雜且艱鉅的任務。您可能會發現您在架構階段需要幫助和持續的支持,以確保您的企業繼續平穩運行。
Crunchy Data 為主要作業系統提供 pgBackRest 的打包版本,並為 pgBackRest 和 PostgreSQL 的所有內容提供專業的全生命週期商業支援。 Crunchy Data 致力於提供沒有供應商鎖定的開源解決方案,確保始終嚴格維護與 pgBackRest 社群版本的交叉相容性。
請造訪 Crunchy Data 以了解更多資訊。
主要感謝 Stephen Frost 在 pgBackRest 開發過程中提供的所有寶貴建議和批評。
Crunchy Data 為 pgBackRest 貢獻了大量時間和資源,並繼續積極支持開發。 Resonate 也為 pgBackRest 的開發做出了貢獻,並允許安裝早期(但經過良好測試)版本作為其主要 PostgreSQL 備份解決方案。
扶手椅圖形由 Sandor Szabo 設計。