postgresql增量備份系列二 pg_probackup

已經很久沒有發文章了,主要是最近工作上的內容都不適合發文章公開。可能往后文章發表也不這么頻繁了,不過大家有問題我們可以交流。之前有寫過PG增量備份的其他工具使用方法,pg_probackup也是應用比較多的PG備份工具。

一. pg_probackup


pg_probackup 是一個用于管理 PostgreSQL 數據庫集群備份與恢復的實用工具,截止2.5.15版本,支持 PostgreSQL 11-16 及以上版本。它能夠執行定期備份,并在故障發生時幫助恢復服務器。

pg_probackup實用程序基于pg_arman,它最初由NTT編寫,然后由Michael Paquier開發和維護。

作為 PostgreSQL 官方擴展工具之一,pg_probackup 相比其他備份方案具備以下優勢:


?? 多樣化增量備份模式

支持三種增量備份方式:

  • DELTA 模式:讀取整個數據目錄,僅復制變更頁,減少寫入量。
  • PAGE 模式:基于 WAL 分析提取變更頁,節省空間,但依賴完整歸檔。
  • PTRACK 模式:通過 PostgreSQL 內建的 page tracking 位圖追蹤變更,速度最快,對系統性能影響最小。

?? 快速恢復

  • 增量恢復(Incremental Restore):跳過未變更的頁,提高恢復效率。
  • 部分恢復(Partial Restore):可選擇僅恢復某個數據庫,而非整個集群。
  • Catchup 功能:用于讓落后的 Standby 節點快速追上主節點。

? 驗證與一致性檢查

  • 自動校驗(Validation):備份過程中進行數據一致性檢查,支持離線驗證。
  • 實例驗證(Verification):通過 checkdb 命令對 PostgreSQL 實例進行完整性驗證。

?? 高效的存儲與空間管理

  • 壓縮(Compression):備份數據支持壓縮,節省磁盤空間。
  • 去重(Deduplication):自動排除未變化的非數據頁(如 _vm_fsm)。
  • 備份保留策略(Retention Policy)
    • 支持基于時間點(recovery window)或保留備份數量。
    • 可配置 TTL(生命周期)來控制備份過期。
    • 過期備份支持自動合并或刪除。

?? 高性能執行與并發支持

  • 所有核心操作(如備份、恢復、校驗、刪除等)均支持多線程并行處理,大幅提升性能。

?? 遠程與靈活備份源支持

  • 支持遠程 PostgreSQL 實例的備份與恢復,無需在本地操作。
  • 可從 Standby 節點 執行備份,減輕主節點負載。
  • 可備份 PGDATA 之外的目錄(如配置文件、腳本、日志、SQL 文件等)。

?? 集中備份目錄與元數據管理

  • 使用統一的 Backup Catalog 管理多個 PostgreSQL 實例的備份與 WAL。
  • 提供 JSON 或純文本格式 的備份/歸檔信息,便于腳本調用和可視化集成。

??? 強一致性保障

所有備份均為 物理在線備份,確保數據一致性。支持兩種 WAL 捕獲方式:

  • ARCHIVE 模式:依賴持續 WAL 歸檔進行恢復(默認模式)。
  • STREAM 模式:通過復制協議實時抓取 WAL,形成自治型(standalone)備份,適用于未啟用歸檔的環境。

pg_probackup 使用的前置要求

限制描述
支持的 PostgreSQL 版本pg_probackup 僅支持 PostgreSQL 9.5 及更高版本。
Windows 系統的限制Windows 系統不支持遠程模式。
PostgreSQL 11 的備份要求在 Unix 系統上,對于 PostgreSQL 11,備份只能由啟動 PostgreSQL 服務器的同一個操作系統用戶執行。例如,如果 PostgreSQL 由用戶 postgres 啟動,則備份命令也必須由用戶 postgres 執行。在使用 SSH 遠程模式時,必須設置 --remote-user 選項為 postgres
PostgreSQL 9.5 的備份要求對于 PostgreSQL 9.5,函數 pg_create_restore_point(text)pg_switch_xlog() 只有當備份角色是超級用戶時才能執行。因此,使用非超級用戶角色備份流量較少的集群時,備份可能會比使用超級用戶角色時更慢。
備份與恢復服務器的兼容性從 PostgreSQL 服務器中獲取的備份與被恢復的服務器必須在 block_sizewal_block_size 參數上兼容,并且必須具有相同的主版本號。根據集群配置,PostgreSQL 本身可能會施加額外的限制,如 CPU 架構或 libc/icu 版本等。

安裝部署

通過github下載其pg_probackup源碼包
執行源碼編譯安裝。需要可讀取pg_config指令。

su - postgres  ## 使用postgres用戶 避免其他用戶安裝破環目錄權限問題tar -zxvf pg_probackup-2.5.15.tar.gz 
cd pg_probackup-2.5.15/
make USE_PGXS=1 PG_CONFIG=/home/postgres/pg/bin/pg_config  top_srcdir=/home/postgres/postgresql-16.3
make USE_PGXS=1 PG_CONFIG=/home/postgres/pg/bin/pg_config  top_srcdir=/home/postgres/postgresql-16.3  install ## top_srcdir 參數指定得是YODB的源碼包位置
## USE_PGXS=1 使用 PGXS 外部擴展構建模式

創建初始化目錄適用獨立得目錄為其備份

#創建備份目錄
mkdir -p   /home/postgres/backup
##初始化備份目錄(pg_probackup會自動創建對應得backups、wal的分類

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/86869.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/86869.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/86869.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

云手機主要是指什么?

云手機是指一種可以運行在云服務器中的手機,主要是將云計算技術運用于網絡終端服務,通過云服務器來實現云服務的手機,也是一款深度結合了網絡服務的手機,通過自帶的系統和網絡終端可以通過網絡實現眾多功能。 那么,下面…

CAU數據挖掘 支持向量機

SVM大致思想 線性分類問題 在一群點中用線性函數分類: 但也有線性不可分問題: 線性不可分問題: 最大間隔法 兩個平行超平面間隔距離最大 軟間隔 部分難以區分的點忽略 升維 通過升維將非線性變為線性 計算統計理論基礎 學習過…

探索理解 Spring AI Advisors:構建可擴展的 AI 應用

Spring AI Advisors API 提供了一種靈活且強大的方式來攔截、修改和增強 Spring 應用程序中的 AI 驅動交互。其核心思想類似于 Spring AOP(面向切面編程)中的“通知”(Advice),允許開發者在不修改核心業務邏輯的情況下…

Linux SSH服務全面配置指南:從基礎到安全加固

Linux SSH服務全面配置指南:從基礎到安全加固 概述 作為網絡安全工程師,SSH(Secure Shell)服務的安全配置是我們日常工作中不可忽視的重要環節。本文將從基礎配置到高級安全加固,全面解析SSH服務的各項參數&#xff…

.NET測試工具Parasoft dotTEST內置安全標準,編碼合規更高效

在追求開發速度的時代,確保代碼安全并滿足嚴苛的行業合規標準如OWASP、CWE、PCI DSS、ISO 26262等已成為開發者的核心挑戰,但開發人員常因復雜的編碼標準和漏洞排查而效率低下。.NET測試工具Parasoft dotTEST內置安全標準,實現即插即用&#…

對象的finalization機制Test

Java語言提供了對象終止(finalization)機制來允許開發人員自定義對象被銷毀之前的處理邏輯。當垃圾回收器發現沒有引用指向一個對象時,通常接下來要做的就是垃圾回收,即清除該對象,而finalization機制使得在清除此對象之前,總會先…

AI初學者如何對大模型進行微調?——零基礎保姆級實戰指南

僅需8GB顯存,三步完成個人專屬大模型訓練 四步實戰:從環境配置到模型發布 步驟1:云端環境搭建(10分鐘) 推薦使用阿里魔塔ModelScope免費GPU資源: # 注冊后執行環境初始化 pip3 install --upgrade pip pi…

“單一職責”模式之裝飾器模式

目錄 “單一職責”模式裝飾器模式 Decorator引例動機 Motivation模式定義結構 Structure要點總結 “單一職責”模式 在軟件組件的設計中,如果責任劃分的不清晰,使用繼承得到的結果往往是隨著需求的變化,子類急劇膨脹,同時充斥著重…

idea, CreateProcess error=206, 文件名或擴展名太長

idea, CreateProcess error206, 文件名或擴展名太長 解決 “CreateProcess error206, 文件名或擴展名太長” 錯誤 CreateProcess error206 是 Windows 系統特有的錯誤,表示命令行參數超出了 Windows 的 32767 字符限制。這個問題在 Java 開發中尤其常見&#xff0c…

一鍵高效率圖片MD5修改工具PHP版

文章目錄 圖片MD5修改工具項目簡介功能特點技術原理系統需求安裝方法使用方法Web界面模式命令行模式文件結構常見問題注意事項開發者信息效果演示更多干貨??1.如果我的博客對你有幫助、如果你喜歡我的博客內容,請 “??點贊” “??評論” “??收藏” 一鍵三連哦!2.??…

跨主機用 Docker Compose 部署 PostgreSQL + PostGIS 主從

q下面是跨主機用 Docker Compose 部署 PostgreSQL PostGIS 主從復制的完整詳細步驟(主庫 從庫),主從都用官方 PostGIS 鏡像 postgis/postgis:15-3.3,并注意網絡與持久化。復制即可。 🚩 跨主機 PostgreSQL PostGIS …

會議動態|千眼狼高速攝像機、DIC測量系統等科學儀器亮相第十五屆全國爆炸力學學術會議

第十五屆全國爆炸力學學術會議于6月28日在紹興盛大召開,會議匯聚來自全國爆炸力學與沖擊領域專家學者2000余人,聚焦“爆炸與沖擊動力學工程應用”、“材料動態力學行為與損傷斷裂“、“工程爆破與毀傷評估”、“含能材料與水中爆炸”、“結構動態響應與安…

vscode一個文件夾有殘余的git倉庫文件,已經失效了,怎樣進行清空倉庫殘余文件并重新初始化git--ubuntu

vscode一個文件夾有殘余的git倉庫文件,已經失效了,怎樣進行清空倉庫殘余文件并重新初始化git–ubuntu 首先要把工作區里重要的文件備份好,防止操作時數據丟失。刪除.git文件夾 rm -rf .git初始化 (base) zd4090zd4090-System-Product-Name:…

6月30日作業

思維導圖 一、讀取文件&#xff0c;效果類似 cat 的功能 代碼 #include <25041head.h>int main(int argc, const char *argv[]) {//打開文件printf("請輸入你要讀取的文件路徑&#xff1a;");char str[128]"";scanf("%s",str);FILE *fpf…

ubuntu源碼安裝python3.13遇到Could not build the ssl module!解決方法

我在Ubuntu 24.04.2 LTS下載源碼安裝Python 3.13.5時&#xff1a; #./configure --enable-loadable-sqlite-extensions --enable-optimizations #make 顯示錯誤信息&#xff1a; Could not build the ssl module! Python requires a OpenSSL 1.1.1 or newer 查詢我的openssl版…

Ai工具分享(2):Vscode+Cline無限免費的使用教程

大家好,我是程序員寒山。 今天給大家分享一個最新的免費使用的Ai插件Cline的方法,之前也給大家分享過一些免費的方案,但是這些都是隨時在變化,之前推薦的很多都不能使用了。 Ai工具分享(2):Vscode+Cline無限免費的使用教 今天再給大家推薦一個,可以免費使用,且沒有token…

Docker 目錄遷移腳本【Windows Junction 類型鏈接】

Docker 目錄遷移腳本完整教程&#xff1a;從誕生到自動化使用 一、腳本誕生背景與開發歷程 1. 為什么需要遷移 Docker 目錄&#xff1f; 系統盤空間壓力&#xff1a;Docker 鏡像和容器數據通常存儲在C:\Users\用戶名目錄下&#xff0c;隨著使用時間增長會占用大量系統盤空間…

spring-ai 工作流

目錄 工作流概念工作流程圖spring-boot 編碼定義節點 (Node)定義節點圖StateGraphcontroller測試瀏覽器測試用戶輸入 工作流概念 工作流是以相對固化的模式來人為地拆解任務&#xff0c;將一個大任務拆解為包含多個分支的固化流程。工作流的優勢是確定性強&#xff0c;模型作為…

重頭開始學ROS(6)---Eigen庫安裝與使用

Eigen庫 矩陣運算是一種非常重要的運算方式&#xff0c;在Matlab中&#xff0c;矩陣運算可以輕松的實現&#xff0c;但在C這種偏底層的語言中&#xff0c;若不借助第三方庫&#xff0c;矩陣運算需要我們進行較為復雜的代碼設計。Eigen庫是一個用于線性運算的C模板庫&#xff0…

【STM32】外部中斷

STM32 外部中斷&#xff08;EXTI&#xff09;概述 這篇文章結合示例代碼&#xff0c;系統性地講述 STM32 外部中斷&#xff08;EXTI&#xff09;實驗的原理、以及配置流程。目的在于輔助讀者掌握STM32F1 外部中斷機制。 STM32F1xx官方資料&#xff1a;《STM32中文參考手冊V10》…