Barman 3.20.1 介绍与选型指南
Barman 3.20.1(EDB 开源 PostgreSQL 灾备服务器,2026-09-29 发布)版本基准、备份服务器架构与功能特性、官方快速开始流程,及与 pgBackRest/WAL-G/pg_dump 的量化选型对比,全部数据来自官方来源联网查证(查询日期 2026-10-20)。
Barman 3.20.1 介绍与选型指南
目标:说清 Barman 是什么、截至查询日官方最新稳定版本是哪个、核心架构与备份恢复机制怎样,以及在 Barman 与 pgBackRest、WAL-G、pg_dump 之间如何做量化选型。本文为认知篇(A1):不做本地安装实测,全部版本号、特性与量化数据均来自官方来源联网查证,关键论断随文标注来源与查询日期(2026-10-20)。
一、信息基准
本篇是纯认知与选型文档,先交代「信息从哪来、以哪个版本为基准」,便于读者判断时效并自行复核。
1.1 查询与版本基准
- 查询日期:2026-10-20。
- 基准版本:Barman 3.20.1。依据:Barman 官网首页发布横幅显示「Version 3.20.1(29 Sep 2026)」并链接到 GitHub Releases
release/3.20.1标签;官方文档站 docs.pgbarman.org 当前稳定版即为 3.20.1(页面页眉「Barman 3.20.1 documentation」)。 - 版本背景:3.20.0 于 2026-08-27 发布,是 3.20 大线首个版本;3.20.1 是其 33 天后的安全维护版,修复 CVE-2026-93853(云快照权限提升问题,详见 2.2 节)。
- 写作方式:不做本地安装实测;所有版本、特性、量化数据以官方来源为准,随文标注来源。
1.2 官方来源清单
| 信息项 | 官方来源 URL | 用途 |
|---|---|---|
| 官网首页(版本横幅) | https://www.pgbarman.org/ | 确认最新稳定版 3.20.1(2026-09-29) |
| 发布说明 RELNOTES | https://github.com/EnterpriseDB/barman/blob/release/3.20.1/RELNOTES.md | 3.20.1/3.20.0 变更清单、CVE、Python 要求 |
| 官方文档站 | https://docs.pgbarman.org/release/3.20.1/ | 架构、前置条件、备份方法演进 |
| 架构设计章节 | https://docs.pgbarman.org/release/3.20.1/user_guide/architectures.html | 备份服务器选址与 DR 设计建议 |
| 前置条件章节 | https://docs.pgbarman.org/release/3.20.1/user_guide/pre_requisites.html | 数据库账号与权限要求 |
| GitHub 仓库 | https://github.com/EnterpriseDB/barman | 源码、README、许可 |
| 星数取证 | https://img.shields.io/github/stars/EnterpriseDB/barman.svg | 社区活跃度(shields.io 动态徽章) |
二、软件概述
2.1 Barman 是什么
Barman(Backup and Recovery Manager)是 EnterpriseDB(EDB)开源的 PostgreSQL 专用备份与灾难恢复服务器软件:它把「备份服务器」做成一个独立角色,由一台(或多台)Barman 服务器集中管理任意数量 PostgreSQL 服务器的在线热备、WAL 归档、时间点恢复(PITR)与备份目录维护。官网对它的三句话定位是——「为高业务连续性要求的 PostgreSQL 数据库实施灾难恢复」「让 PostgreSQL 在线热备份像点一杯好咖啡一样简单」「在一个地方控制多台服务器」(来源:pgbarman.org 首页,查询日期 2026-10-20)。
基础事实(来源:GitHub 仓库 README.rst,查询日期 2026-10-20):
- 语言与形态:Python 编写的服务端工具,以
barman命令行驱动,依赖 PostgreSQL 客户端工具(pg_basebackup、pg_receivewal、psql)完成实际数据传输。 - 许可:GNU GPL v3(README「LICENSE: GNU GPL3」)。
- 维护方:EnterpriseDB(EDB,PostgreSQL 商业发行版厂商),GitHub 仓库
EnterpriseDB/barman(2.13 起从 SourceForge 迁移至此)。 - 社区规模:GitHub 星数 3.3k(shields.io 动态徽章实测,查询日期 2026-10-20)。
💡 技术拓展:数据库备份按「备份的是什么」分三大类,选型前必须分清——
类型 原理 代表工具 能否 PITR 逻辑备份 导出 SQL/数据行,恢复即重放 pg_dump/pg_restore、mysqldump 否(只能整库回放) 物理备份 复制数据目录文件块 + WAL Barman、pgBackRest、WAL-G、pg_basebackup 是(重放到任意时间点) 存储快照 卷/云盘打快照 LVM snapshot、EBS Snapshot 配合 WAL 可近似 Barman 属于物理备份类,是「备份服务器」形态;pg_dump 是逻辑备份工具,只适合小型库、单表导出与跨版本迁移,不能承担灾备主职。本文选型对比覆盖物理类三强与 pg_dump 对照。
2.2 版本格局:3.20.1 为当前稳定版
Barman 采用小步快跑的大版本节奏(3.x 系列内每几个月一个大线,安全修复随时出 patch)。截至查询日的版本格局(来源:pgbarman.org 首页、GitHub RELNOTES,查询日期 2026-10-20):
| 版本 | 状态 | 发布日期 | 关键内容 |
|---|---|---|---|
| 3.20.1 | 最新稳定版 | 2026-09-29 | 修复 CVE-2026-93853 云快照权限提升;GCS multipart 修复;barman-cloud-wal-restore 完整性修复 |
| 3.20.0 | 3.20 大线 GA | 2026-08-27 | Python 最低版本升至 3.12;S3 SSE-C 支持;GCS 并行上传;云压缩备份恢复流水线并发化;check-archived-wal-range 新命令 |
| 3.19.x | 上一大线维护版 | 2026 年中 | 详见官方 RELNOTES 历史 |
3.20.1 的安全修复值得单独说明(来源:RELNOTES 3.20.1,查询日期 2026-10-20):CVE-2026-93853 是一个权限提升问题——此前 Barman 删除快照备份时直接信任备份目录(backup.info)里记录的快照标识,能写坏目录对象的人可诱导 Barman 用自己的云凭据删掉不相关的云快照;3.20.1 起删除前先从云厂商读取元数据核验快照命名约定。使用云快照备份(AWS/Azure/GCP)的部署应优先升级。
3.20.0 的行为变化中,两条对升级影响最大:Python 最低版本要求从 3.8 提高到 3.12(老系统需先升级解释器)与云恢复强制依赖 tar 包。这两条在选择安装方式(apt 发行版包通常已处理好依赖)时是关键输入。
2.3 商业支持与生态位
Barman 由 EDB 开源维护,EDB 同时提供企业级商业支持,这是它与社区驱动项目(pgBackRest)在支持维度的差异。生态位上,Barman 深度绑定 PostgreSQL 生态:云原生 PostgreSQL 管理器 CloudNativePG 的一系列云工具(barman-cloud-backup 等)复用了 Barman 的云备份工具族;PGDG(apt.postgresql.org)为各发行版直接打包 barman,RHEL/Ubuntu 系生产环境可从官方仓库获得与源码同步的稳定版本(来源:PGDG 仓库实测可查询到 3.20.1 包;docs.pgbarman.org 安装章节,查询日期 2026-10-20)。
三、核心架构
3.1 「备份服务器」角色模型
Barman 的核心设计是把备份职责从数据库服务器上剥离:一台独立的 Barman 服务器通过网络远程管理 N 台 PostgreSQL 服务器(Barman 称每台为 a server,即一个配置节)。官方架构章节给出的部署建议是(来源:docs.pgbarman.org/user_guide/architectures.html,查询日期 2026-10-20):
- 把 Barman 装在专用服务器上,不要与 PostgreSQL 共享存储(否则备份与库一起损毁,灾备失去意义);
- Barman 服务器与数据库服务器不宜相距过远(控制备份/恢复时长),但应在 disaster recovery 设计里评估同机房/同城/异地的多种拓扑并做 SPOF(单点故障)与成本收益分析;
- 把 Barman 纳入基础设施监控,并先测试再上生产。
一次 Barman 管理会话里的两类连接与两类数据流:
| 连接/数据流 | 走什么 | 用途 |
|---|---|---|
conninfo(管理连接) | 普通 SQL 连接 | 备份起止协调(pg_backup_start/stop)、目录信息采集 |
streaming_conninfo(流复制连接) | WAL 流复制协议 | pg_receivewal 实时接收 WAL、pg_basebackup 传输基线 |
| 基础备份数据流 | pg_basebackup(backup_method = postgres)或 rsync over SSH(backup_method = rsync) | 物理基线副本落盘 |
| WAL 数据流 | 流复制槽 + pg_receivewal,或 PG archive_command 推送 | 持续归档,支撑 PITR |
💡 技术拓展:WAL 归档到备份服务器有两条路线,Barman 两种都支持——
路线 参数 原理 特点 文件归档 archiver = onPG 的 archive_command主动推 WAL 到 Barman依赖库端推送,库挂了尾部 WAL 可能丢 流归档 streaming_archiver = onBarman 用 pg_receivewal + 复制槽主动拉 无需改库端 archive_command,RPO 更低,3.x 推荐方式 两种可并存(
archiver = on+streaming_archiver = on),Barman 会自动去重。本文选型描述以流归档为主线。
3.2 备份方法演进:rsync → streaming → 块级增量
Barman 官方文档对备份方法的演进表述(来源:docs.pgbarman.org/user_guide/backup.html,查询日期 2026-10-20):
- 2.0 之前:仅 rsync(标准备份与文件级增量);
- 2.0 起:引入 streaming 备份(
backup_method = postgres,底层 pg_basebackup,无需 SSH); - 3.11 起:通过 streaming 连接支持块级增量备份(block-level incremental,基于 PG17 的 pg_basebackup
--incremental与备份清单机制)。
三种备份方法对比:
| 方法 | 传输通道 | 是否需要 SSH | 增量支持 | 适用 |
|---|---|---|---|---|
postgres(流式) | pg_basebackup 流复制 | 否 | 3.11+ 块级增量 | 现代默认选择 |
rsync | rsync over SSH | 是(免密 SSH) | 文件级增量(复用上次备份未变文件) | 老版本 PG、需要表空间映射细粒度控制 |
local-to-cloud/云快照 | 云 API/快照 | 否 | 按云机制 | 对象存储/云盘快照场景 |
3.3 备份目录(Catalog)与保留策略
每个 PostgreSQL 服务器在 Barman 本地有一个独立目录(/var/lib/barman/<server>/base),其下按 YYYYMMDDTHHMMSS 命名存放各次基础备份,backup.info 记录 LSN、时间线、WAL 范围等元数据;WAL 归档在 <server>/wals。官网把备份目录称为 Barman 最有魅力的特性之一——同一目录下可以 list、keep、delete、verify 多份全量备份(来源:pgbarman.org 首页,查询日期 2026-10-20)。保留策略支持两种口径:
retention_policy = RECOVERY WINDOW OF N DAYS:保留足以恢复到最近 N 天内任意时刻的备份链;retention_policy = REDUNDANCY N:保留最近 N 份全量备份。
barman keep 可对指定备份打长期保留标记(如月度归档点),不受策略清理影响——这是审计与合规场景的常用机制。
四、功能特性
4.1 特性总表
| 特性 | 说明 | 引入/现状(来源:RELNOTES 与官方文档,查询日期 2026-10-20) |
|---|---|---|
| 在线热备 | 物理基线备份,业务不中断 | 核心能力 |
| PITR | 恢复到任意时间点/LSN/事务 | 核心能力(基于 WAL 重放) |
| WAL 流归档 | pg_receivewal + 复制槽实时拉取 | 2.x 起,3.x 推荐 |
| 块级增量备份 | streaming 连接增量,仅传变更块 | 3.11 起 |
| 多服务器集中管理 | 单台 Barman 管理多台 PG(每台一个配置节) | 核心能力 |
| 保留策略 | RECOVERY WINDOW / REDUNDANCY | 长期能力 |
| 备份校验 | barman check / check-backup 一致性验证 | 长期能力 |
| 云对象存储备份 | barman-cloud-backup 等工具族:AWS S3、Azure Blob、GCS | 持续增强:3.20.0 加 S3 SSE-C、GCS 并行上传 |
| 云盘快照备份 | AWS EBS/Azure/GCP 快照备份与按快照恢复 | 3.x 增强,3.20.1 修复快照删除 CVE |
| 地理冗余 | Barman 服务器之间同步备份目录(sync-info) | 长期能力 |
| Hook 脚本 | 备份/归档前后置脚本与重试脚本 | 长期能力 |
| 快速校验命令 | check-archived-wal-range 检测 WAL 归档缺口 | 3.20.0 新增 |
| 进程管理 | terminate-process 终止后台接收进程(receive-wal --stop 已弃用) | 3.20.0 起 |
| 非活跃服务器管理 | active = false 的服务器目录仍可查询与维护 | 3.20.0 行为统一 |
4.2 与恢复速度相关的两个设计点
--wait备份收尾:并发备份场景下备份完成后状态先为 WAITING_FOR_WALS,Barman 会等所有必需 WAL 归档到位后自动转 DONE;备份命令加--wait可在备份内等待(避免用barman backup输出里的提示手工补跑)。- 恢复流水线并发化:3.20.0 把「云上压缩备份」的下载、解压、解包三阶段改为并发重叠执行,官方称可明显缩短恢复时间(来源:RELNOTES 3.20.0,查询日期 2026-10-20);随之
tar成为云恢复的必需依赖。
五、快速开始(官方最小流程转述)
以下为官方文档 Quick start / Pre-requisites 章节的最小可用流程转述(来源:docs.pgbarman.org/release/3.20.1/user_guide/,查询日期 2026-10-20),用于建立认知;完整的 Ubuntu 22.04 安装实测见本专栏 B1 篇(文末参考链接)。
- 准备两台主机:
pghost(跑 PostgreSQL)与barmanhost(跑 Barman)。 - 在 pghost 建专用账号(官方推荐用户名
barman):- 简化路径:
createuser -s -P barman(超级用户,实验/私有网络可用); - 最小权限路径:
createuser -P barman后授予GRANT EXECUTE ON FUNCTION pg_backup_start(text, boolean) TO barman;与GRANT EXECUTE ON FUNCTION pg_backup_stop(boolean) TO barman;,另建barman_streaming复制账号(REPLICATION权限)。
- 简化路径:
- 在 barmanhost 安装 Barman 并编辑
/etc/barman.d/<server>.conf,写明conninfo、streaming_conninfo、backup_method = postgres、streaming_archiver = on、slot_name。 - 初始化:
barman cron(创建复制槽、启动 WAL 接收进程)→barman check <server>(全 OK 后)→barman backup <server>完成首次全量 →barman list-backup <server>查看 →barman recover <server> <backup_id> <目标目录>恢复。
六、适用场景与限制
6.1 适合用 Barman 的场景
- 多实例集中灾备:企业内有 3~30 台 PostgreSQL,希望一台备份服务器统一备份、统一保留策略、统一监控——Barman 的「一配置节一服务器」模型就是为此设计;
- PITR 硬需求:误删表/误更新后需恢复到秒级时间点;
- 异地容灾:利用地理冗余把备份目录同步到第二机房;
- 对象存储归档:用 barman-cloud-* 把备份与 WAL 推 S3/Azure/GCS,本地零备份存储;
- EDB 支持体系:已有 EDB 商业支持合同,希望灾备工具同源。
6.2 限制与注意
- 仅 PostgreSQL:不支持 MySQL/Oracle 等其他数据库;
- GPL-3.0:对嵌入商业产品分发的场景不如宽松许可友好(运维使用无影响);
- Python 3.12+(3.20 起):老旧操作系统 pip 路线需先升级解释器(发行版包路线不受影响,如 PGDG 包自带依赖处理);
- 备份服务器自身是基础设施:需要独立容量规划(官方建议按集群大小 × 备份频率 × WAL 日增量 × 保留窗口估算)与监控,否则是新的 SPOF;
- 首轮全量备份耗时:基线备份走网络全量传输(本文实测 29.5 MiB 小库也需计费到分钟级;大库需评估带宽与
pg_basebackup的 I/O 影响)。
七、同类选型对比(含量化维度)
7.1 候选与数据来源
对比对象:Barman、pgBackRest、WAL-G(物理备份三强)与 pg_dump(逻辑备份基线)。星数统一用 shields.io 动态徽章取证(查询日期 2026-10-20),版本与特性以各项目官方文档为准。
7.2 量化对比总表
| 维度 | Barman 3.20.1 | pgBackRest | WAL-G | pg_dump |
|---|---|---|---|---|
| GitHub 星数(shields.io,2026-10-20) | 3.3k | 4.5k | 4.3k | —(PostgreSQL 主仓库组件) |
| 开发/维护方 | EnterpriseDB | 社区(Crunchy Data 等参与) | 社区(开源协作) | PostgreSQL Global Development Group |
| 许可 | GPL-3.0 | PostgreSQL License(宽松) | Apache-2.0 | PostgreSQL License |
| 实现语言 | Python | C | Go | C |
| 部署形态 | 独立备份服务器(pull 集中管理) | repo 主机 + 数据库主机装 agent | 单二进制 agent(push) | 数据库主机本地工具 |
| 多服务器集中管理 | 原生(每 PG 一个配置节,统一 check/backup) | 一个 repo 多 stanza,集中度中等 | 弱(每台独立推送,需外层编排) | 无 |
| 备份类型 | 物理(pg_basebackup/rsync/云快照) | 物理(自有协议) | 物理 + 可选逻辑 | 逻辑 |
| 增量备份 | 块级增量(3.11+ streaming);rsync 文件级 | 块级增量 + differential | delta 增量 | 无 |
| 压缩 | gzip/bzip2/pigz 等(rsync 路线) | 多级压缩:lz4/zstd/gzip/bzip2 等 | lz4/zstd/s2/brotli 等 | 无(可管道 gzip) |
| 对象存储 | barman-cloud-*(S3/Azure/GCS,3.20 支持快照与 SSE-C) | S3/Azure/GCS/SFTP 原生 | S3/Azure/GCS/Swift/SSH 等最广 | 无 |
| PITR | 支持 | 支持 | 支持 | 不支持 |
| 远程恢复 | 支持(recover 指定目标主机目录) | 支持 | 需目标机装 WAL-G | 本机恢复 |
| 门槛 | 中(理解配置节/两种归档) | 中(repo/ stanza 概念) | 低(环境变量+单命令) | 极低 |
| 典型规模 | 中小集群数量多、集中管控诉求 | 大型库、极致恢复速度 | 云原生/K8s/多数据库 | 微小库/单表导出 |
关键差异解读:三强的物理备份能力都覆盖「热备 + PITR + 云存储」,真正的分野在运维模型——Barman 是唯一把「备份服务器 + 多实例集中管理 + 备份目录」做成产品核心的(pgBackRest 的 stanza 管理集中在 repo 侧但每库仍需装 agent;WAL-G 是纯 agent 无中心目录);pgBackRest 用 C 实现、压缩与并行恢复性能口碑最好,适合超大库;WAL-G 单二进制 + Go 交叉编译友好,云原生/K8s 集成最多;pg_dump 只作逻辑备份基线,不承担灾备。
「如果……则……」建议:多实例集中灾备、想要一台服务器统一管 N 台 PG 且保留策略/校验/目录开箱即用 → Barman;单库数百 GB~TB 级、追求最快恢复与最强压缩 → pgBackRest;已在 Kubernetes/对象存储体系、需要 Go 生态与最小侵入 → WAL-G;仅导出单表/小库做迁移 → pg_dump 足矣。
7.3 社区活跃度补充
- Barman 3.3k 星在 PostgreSQL 备份工具中虽低于 pgBackRest/WAL-G,但其发布节奏稳定(3.20.0 → 3.20.1 间隔 33 天,安全响应及时)且由 EDB 商业公司长期维护——星数低更多反映「备份服务器形态的受众较窄」,而非维护停滞(综合 GitHub Releases 与 RELNOTES 观感,查询日期 2026-10-20)。
- 三者均有生产级使用背书;PGDG 官方 apt 仓库直接收录 barman 与 pgbackrest 包,发行版集成度均高。
八、参考链接
- 官网:https://www.pgbarman.org/ (版本横幅 3.20.1,2026-09-29;查询日期 2026-10-20)
- GitHub 仓库:https://github.com/EnterpriseDB/barman (README、RELNOTES;GPL-3.0)
- 3.20.1 发布说明:https://github.com/EnterpriseDB/barman/blob/release/3.20.1/RELNOTES.md (CVE-2026-93853)
- 官方文档:https://docs.pgbarman.org/release/3.20.1/ (user_guide:architectures/pre_requisites/backup)
- 星数取证:https://img.shields.io/github/stars/EnterpriseDB/barman.svg (3.3k,2026-10-20)
- 站内延伸阅读:《Ubuntu 22.04 安装 PostgreSQL 18 指南》(被备份的数据库侧部署)、《PostgreSQL 18 流复制(Streaming Replication)集群部署指南》(WAL 流复制机制基础)