EnterpriseDB/Barman 地理冗余配置指南:构建级联备份架构
地理冗余概述
在现代数据库运维中,确保数据的高可用性和灾难恢复能力至关重要。EnterpriseDB/Barman 提供的地理冗余功能允许管理员构建级联备份架构,将备份数据透明地分布在不同地理位置,为关键业务数据提供额外保护层。
核心概念解析
级联备份架构
Barman 的级联备份架构允许一个 Barman 服务器(称为被动节点)从另一个 Barman 安装(称为主节点)获取备份数据,而不是直接从 PostgreSQL 服务器获取。这种设计模式特别适合以下场景:
- 需要将备份数据复制到远程数据中心
- 需要在不同区域维护备份副本
- 需要减少对生产数据库的直接访问压力
主节点与被动节点
- 主节点:直接连接 PostgreSQL 服务器并执行备份操作的 Barman 服务器
- 被动节点:通过 SSH 从主节点获取备份数据的 Barman 服务器,不直接连接生产数据库
配置被动节点
配置被动节点非常简单,只需在目标 Barman 服务器的配置文件中添加以下关键参数:
[main]
primary_ssh_command = ssh barman@primary_barman
这个参数定义了如何通过 SSH 连接到主节点。如果需要传递相同的配置文件路径,可以添加:
forward_config_path = true
同步机制详解
自动同步流程
当配置为被动节点后,Barman 会通过 barman cron
自动管理同步过程,包括三个关键步骤:
- 数据收集:使用
barman sync-info --primary
从主节点获取同步信息 - 备份同步:使用
barman sync-backup
复制主节点上的所有可用备份 - WAL 同步:使用
barman sync-wals
复制主节点上的所有 WAL 文件
同步信息命令
barman sync-info
命令返回的 JSON 对象包含以下关键信息:
- 所有状态为
DONE
的备份 - 所有已归档的 WAL 文件列表
- 服务器配置信息
- 最后读取的 WAL 位置
- 最后读取的 WAL 文件名
手动同步操作
虽然自动同步已经足够应对大多数场景,但管理员也可以手动触发同步操作:
手动同步备份
barman sync-backup <server_name> <backup_id>
此命令会:
- 通过
primary_ssh_command
连接到主节点 - 检查指定备份是否存在于主节点
- 使用 rsync 开始复制所有相关文件
- 同一时间只允许一个同步进程操作单个备份
手动同步 WAL 文件
barman sync-wals <server_name>
被动节点的特殊行为
配置为被动节点后,Barman 会对其采取特殊处理方式:
- 排除标准维护操作:被动节点不参与常规维护任务
- 禁止直接操作 PostgreSQL:包括禁止直接执行
barman backup
命令 - 依赖主节点数据:所有备份数据必须来自主节点同步
最佳实践建议
- 网络优化:确保主节点和被动节点之间有足够带宽,特别是对于大型数据库
- SSH 安全配置:使用密钥认证并限制 SSH 访问权限
- 监控同步延迟:定期检查同步状态,确保数据及时复制
- 测试恢复流程:定期验证从被动节点恢复数据的能力
- 考虑带宽限制:对于跨地域同步,可能需要配置带宽限制避免影响生产网络
通过合理配置 Barman 的地理冗余功能,企业可以构建健壮的灾难恢复方案,确保在最坏情况下也能快速恢复关键业务数据。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考