1. pg_rman简介与核心价值
pg_rman是PostgreSQL生态中一款专注于物理备份与恢复的开源工具,由日本NTT公司OSS中心团队开发维护。作为DBA工具箱中的重要成员,它通过直接操作数据库文件实现高效备份,特别适合中大型PostgreSQL实例的灾难恢复场景。
我在生产环境使用pg_rman已有三年时间,处理过多次TB级数据库的紧急恢复。相比逻辑备份工具如pg_dump,它的核心优势在于:
- 备份速度快:直接复制数据文件,无需SQL转换
- 恢复时间短:通过WAL日志实现任意时间点恢复(PITR)
- 资源占用低:备份期间对生产系统影响极小
典型应用场景包括:
- 核心业务数据库的每日全量备份
- 误删数据后的精确时间点回滚
- 数据库服务器的完整迁移
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与配置要点
2.1 PostgreSQL基础配置
在开始使用pg_rman前,必须确保PostgreSQL已正确配置WAL归档。以下是关键配置项及其作用:
bash复制# 创建专用数据目录
mkdir -p /var/lib/postgresql/14/main_rman
chown postgres:postgres /var/lib/postgresql/14/main_rman
# 初始化数据库集群
sudo -u postgres initdb -D /var/lib/postgresql/14/main_rman --locale=en_US.UTF-8
# 配置postgresql.conf关键参数
cat <<EOF >> /var/lib/postgresql/14/main_rman/postgresql.conf
archive_mode = on
archive_command = 'test ! -f /mnt/backup/wal/%f && cp %p /mnt/backup/wal/%f'
wal_level = replica
max_wal_senders = 3
EOF
重要提示:archive_command中的路径需提前创建并赋予postgres用户写权限。生产环境中建议使用NFS或对象存储作为归档目标。
2.2 存储规划建议
根据我的实战经验,备份存储规划应遵循以下原则:
- WAL归档空间:至少保留最近7天的WAL日志
- 计算公式:
日均WAL量 = (wal_segment_size * 16MB) * 预估每日事务量
- 计算公式:
- 备份存储空间:全量备份大小的2-3倍
- 包含:基础备份 + 增量备份 + 临时文件
示例存储配置:
code复制/mnt/backup/
├── base/ # 基础备份
├── wal/ # WAL归档
└── rman_log/ # pg_rman操作日志
3. pg_rman安装与编译优化
3.1 源码编译安装
官方推荐从GitHub获取最新稳定版源码:
bash复制# 安装编译依赖
sudo apt-get install -y git build-esse
