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的分类

你可能感兴趣的:(postgresql,postgresql,数据库)