导读:本期聚焦于蚂蚁创作的《pgBackRest怎么安装配置?PostgreSQL备份恢复工具完整部署教程》,敬请观看详情。数据库备份一旦出问题,业务往往要付出惨重代价。pgBackRest作为PostgreSQL社区公认的高性能备份工具,支持全量、差异、增量三种备份类型,还能做并行压缩和异地存储仓库。本文从零开始讲解pgBackRest的安装步骤,涵盖YUM源配置、目录规划、用户权限设置,然后详细演示主配置文件pgbackrest.conf的写法,包括仓库路径、保留策略、压缩算法等核心参数。同时给出专用备份用户与SSH免密通道的搭建方法,最后通过一个完整的全量加增量备份实验验证整套流程,帮助读者在生产环境快速落地一套可靠的备份体系。

pgBackRest是一款专为PostgreSQL设计的企业级备份恢复工具,由Crunchy Data团队开发并开源。相比pg_basebackup这类原生工具,它提供了增量备份、并行处理、压缩加密、备份校验等更完整的特性,被广泛应用于生产环境。这篇文章将从安装、目录规划、配置文件编写一直讲到实际执行备份,把整套流程完整走一遍。

pgBackRest怎么安装配置?PostgreSQL备份恢复工具完整部署教程

一、安装pgBackRest的两种常见方式

在CentOS、RHEL或者Rocky Linux上,最推荐的方式是通过PGDG仓库安装。先确认系统已经配置了PostgreSQL官方的YUM源,然后直接用yum命令安装即可:

# 安装PGDG仓库(如果还没有配置)
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# 安装pgBackRest
sudo yum install -y pgbackrest

# 验证安装结果
pgbackrest version

执行pgbackrest version后能看到版本号输出,说明安装成功。如果系统用的是Debian或Ubuntu,可以直接执行apt install pgbackrest,不过要注意发行版自带的版本可能偏旧,建议从PostgreSQL官方仓库获取最新版。

第二种方式是源码编译,适合有定制需求或者系统不在官方支持列表里的场景。源码在GitHub的pgbackrest项目仓库可以获取,编译依赖gcc、make、libxml2开发包和OpenSSL开发包。源码编译的好处是可以自由选择版本,缺点是后期升级维护要自己管理,一般生产环境如果没有特殊需求,还是优先选择包管理器安装。

二、目录规划与用户权限设置

pgBackRest有一套自己的目录约定,规划清楚能避免很多后续的麻烦。它把数据目录分成两大块:仓库目录(repo)用来存放备份数据和WAL归档,数据目录(data)就是PostgreSQL的数据目录本身。常见的做法是在根目录下建立/var/lib/pgbackrest作为仓库的根路径,内部再按仓库名细分。

# 创建仓库目录结构
sudo mkdir -p /var/lib/pgbackrest/repo1
sudo mkdir -p /var/log/pgbackrest

# 创建专用的系统用户(也可以直接用postgres用户)
sudo useradd -r -s /bin/bash pgbackrest 2>/dev/null || true

# 设置目录属主和权限
sudo chown -R postgres:postgres /var/lib/pgbackrest
sudo chown -R postgres:postgres /var/log/pgbackrest
sudo chmod 750 /var/lib/pgbackrest

权限方面有个容易踩坑的点:pgBackRest要求仓库目录权限不能开放给所有用户,权限过宽会直接报错拒绝运行。另外一个经典报错是日志目录不存在,安装包默认不会自动创建/var/log/pgbackrest,需要手动建立并授权,否则第一次运行就会提示无法写入日志。

如果备份仓库和数据库不在同一台机器上(这也是生产环境推荐的做法),还需要打通SSH免密通道。在数据库服务器上为postgres用户生成密钥对,把公钥复制到仓库服务器,同时仓库服务器上也要有反向的免密配置,因为pgBackRest在远程执行命令时是双向通信的。配置完成后可以用ssh 仓库IP -l pgbackrest 'echo ok'验证连通性。

三、编写pgbackrest.conf配置文件

主配置文件位于/etc/pgbackrest/pgbackrest.conf(老版本也可能是/etc/pgbackrest.conf),配置采用stanza的概念,一个stanza对应一个需要备份的PostgreSQL集群。下面是一份可以直接使用的单机配置示例:

[global]
repo1-path=/var/lib/pgbackrest/repo1
repo1-retention-full=2
repo1-cipher-type=none
process-max=4
compress-type=zst
compress-level=3
log-level-console=info
log-level-file=detail
start-fast=y
delta=y

[demo]
pg1-path=/var/lib/pgsql/16/data
pg1-port=5432
pg1-user=postgres

逐个解释关键参数。repo1-path指定仓库存储路径,从2.x版本开始支持多仓库,最多可以配置四个(repo1到repo4),方便做异地容灾。repo1-retention-full=2表示保留2份全量备份,超出的旧备份会在下次备份完成后自动清理,注意如果全量备份数量不足这个值,增量备份是不会被清理的,这是防止误删有效备份的保护机制。

process-max=4开启4个并行进程,对大数据库的备份和恢复速度提升非常明显。compress-type=zst使用Zstandard压缩算法,这是目前推荐的选项,压缩率和速度都比早期的gzip表现更好,compress-level一般设3到6之间即可。delta=y允许恢复时只对比并恢复有差异的数据块,大幅缩短恢复时间。

配置写好后需要创建stanza,这一步会校验数据库连接并初始化仓库结构:

# 创建并校验stanza
sudo -u postgres pgbackrest --stanza=demo stanza-create

# 检查配置是否正常
sudo -u postgres pgbackrest --stanza=demo check

这里别忘了PostgreSQL那边的配合:pg1-path指向的数据目录必须真实存在,而且postgresql.conf里的archive_mode要设为onarchive_command改成pgbackrest --stanza=demo archive-push %p,改完重启数据库。check命令通过后,说明整条备份链路已经就绪。

四、执行备份与常用维护操作

一切就绪后,先做一次全量备份作为基础:

# 全量备份
sudo -u postgres pgbackrest --stanza=demo --type=full backup

# 增量备份(基于最近一次全量或差异备份)
sudo -u postgres pgbackrest --stanza=demo --type=incr backup

# 差异备份(总是基于最近一次全量备份)
sudo -u postgres pgbackrest --stanza=demo --type=diff backup

# 查看备份集信息
sudo -u postgres pgbackrest --stanza=demo info

三种备份类型的区别要理清楚:全量备份拷贝整个数据库集群,体积大但恢复最简单;增量备份只备份自上次任意备份以来变化的数据,体积最小但恢复时依赖整条备份链;差异备份则备份自上次全量以来的变化,恢复只需要全量加最近一次差异。生产环境通常采用每周一次全量加每日增量或差异的策略,配合repo1-retention-full控制保留周期。

日常运维中还有几个高频命令值得记住。pgbackrest info可以随时查看各备份集的状态、大小和时间线;expire命令可以手动触发过期清理;恢复时使用restore命令,配合--type=time--target参数可以做时间点恢复(PITR),这也是pgBackRest相比简单逻辑备份最大的优势之一。恢复前建议先用--dry-run参数演练一遍,确认恢复目标正确再实际执行,避免覆盖错数据目录。

最后补充一点监控方面的建议:备份做了不代表有效,建议把pgbackrest checkinfo纳入定时巡检脚本,检查最近一次备份时间是否超出预期、WAL归档是否有延迟堆积,必要时接入Prometheus等监控平台做告警,这样整套备份体系才算真正闭环。

pgBackRestPostgreSQL备份备份恢复修改时间:2026-09-05 10:32:42

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/20260905/50851.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。