当前位置: 首页 > news >正文

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.dtcms.com/a/263472.html

相关文章:

  • Linux云计算基础篇(2)
  • ADP3120AJRZ-RL 【ADI】 6A高速MOSFET驱动器,让电源效率飙升!
  • Python-Word文档、PPT、PDF以及Pillow处理图像详解
  • Prompt Enginering
  • django 数据表外键 删除时 对应表的数据不删除如何设置
  • 随笔 | 写在六月的最后一天,也写在2025年上半年的最后一天
  • 2025年6月个人工作生活总结
  • 深入 ARM-Linux 的系统调用世界
  • vue常见问题:
  • 手机APP预约心理咨询师指南
  • 服务器上设置了代理之后,服务器可以访问外网,但是不能访问服务器本地。如何解决
  • CentOS 7 8 安装 madam
  • Android 中 使用 ProgressBar 实现进度显示
  • C++ 安装使用教程
  • MongoDB 安装使用教程
  • Nginx入门
  • 如何在 iOS 上线前做好安全防护?IPA 混淆与逆向防护实践详解
  • 【区块链安全】代理合约中的漏洞
  • 车载ECU刷写文件格式汇总详解
  • CppCon 2018 学习:Applied Best Practices
  • APP 内存测试--Android Memory Profiler实操(入门版)
  • ACE之ACE_NonBlocking_Connect_Handler问题分析
  • 【FineDataLink快速入门】01界面介绍-运维中心
  • AI教育全景图:谁在领跑2025?
  • 【Debian】1- 安装Debian到物理主机
  • STM32——DAP下载程序和程序调试
  • 【C++】经典string类问题
  • 【数字人开发】结合nextHuman平台进行数字人网页端开发
  • VMware 在局域网环境将虚拟机内部ip 端口开放
  • 【读代码】TradingAgents:基于多智能体LLM的金融交易框架深度解析