发布于2026-08-21 阅读(0)
扫一扫,手机访问
PostgreSQL 在 Linux 上的备份策略总览

策略对比与适用场景
常见备份策略范式
范式一 逻辑备份 + 定时清理
使用 pg_dump -F c -b -v | gzip 生成自定义格式并压缩;以 crontab 每日执行;按保留天数删除旧备份;记录日志并定期做恢复演练。适合需要跨版本迁移、按库/表恢复的场景。
范式二:物理备份 + WAL归档实现PITR
配置wal_level=replica / archive_mode=on / archive_command(把WAL段拷贝到安全位置);用pg_basebackup -Fp -Xs -P获取基础备份;恢复时配置restore_command,将WAL回放至目标时间点。此范式适用于生产环境的高可靠恢复。
范式三 第三方工具编排全量/差异/增量
以 pgBackRest 统一管理备份库与存储库,制定“每周全量 + 每日差异/增量”策略,结合 WAL 归档实现快速 PITR 与多副本存储。适合中大型与严格 RTO/RPO 要求。
自动化与运维要点
快速上手示例
逻辑备份脚本(单库,自定义格式 + 压缩 + 保留 30 天)
#!/bin/bash
BACKUP_DIR="/data/pg_backup"
DB_NAME="your_db"
DB_USER="postgres"
BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}_$(date +%Y%m%d_%H%M%S).sql.gz"
RETENTION_DAYS=30
mkdir -p "$BACKUP_DIR"
pg_dump -U "$DB_USER" -d "$DB_NAME" -F c -b -v | gzip > "$BACKUP_FILE"
if [ $? -eq 0 ]; then
echo "$(date +%F_%T) 备份成功:$BACKUP_FILE" >> "$BACKUP_DIR/backup.log"
else
echo "$(date +%F_%T) 备份失败" >> "$BACKUP_DIR/backup.log"
exit 1
fi
find "$BACKUP_DIR" -name "${DB_NAME}_*.sql.gz" -mtime +${RETENTION_DAYS} -delete定时任务(切换到 postgres 用户):0 3 * * * /path/to/pg_backup.sh。
物理备份 + WAL 归档(PITR 基础)
wal_level = replica
archive_mode = on
archive_command = 'cp %p /var/lib/pgsql/archive/%f'pg_basebackup -D /var/lib/pgsql/15/basebackup -Fp -Xs -P# 准备恢复目录
rm -rf /var/lib/pgsql/15/data/*
tar xf /var/lib/pgsql/15/basebackup/base.tar.gz -C /var/lib/pgsql/15/data
mkdir -p /var/lib/pgsql/15/data/pg_wal
tar xf /var/lib/pgsql/15/basebackup/pg_wal.tar.gz -C /var/lib/pgsql/15/data/pg_wal
# 配置回放 WAL
echo "restore_command = 'cp /var/lib/pgsql/15/archive/%f %p'"
>> /var/lib/pgsql/15/data/postgresql.conf
# 启动到恢复模式
touch /var/lib/pgsql/15/data/recovery.signal
systemctl start postgresql-15恢复将自动回放 WAL 至完成点(可按需设置目标时间/事务)。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9