一、备份恢复概述
数据备份与恢复是数据库管理的核心环节。
二、环境准备
sudo apt update
sudo apt install postgresql -y
三、全量备份
3.1 使用pg_dump
# 备份单个数据库
pg_dump -U postgres -Fc mydb -f mydb_backup.dump
# 备份所有数据库
pg_dumpall -U postgres -f all_databases.sql
3.2 自动化脚本
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/var/backups/postgres"
mkdir -p $BACKUP_DIR
pg_dumpall -U postgres > $BACKUP_DIR/backup_$DATE.sql
echo "Backup completed: $BACKUP_DIR/backup_$DATE.sql"
四、增量备份
4.1 WAL归档配置
sudo nano /etc/postgresql/15/main/postgresql.conf
wal_level = replica
max_wal_senders = 3
archive_mode = on
archive_command = 'cp %p /var/backups/wal/%f'
4.2 备份调度
crontab -e
# 每天凌晨2点全量备份
0 2 * * * /opt/scripts/backup.sh
五、数据恢复
5.1 全量恢复
# 恢复SQL文件
psql -U postgres -f backup_20260101.sql
# 恢复压缩格式
pg_restore -U postgres -d mydb mydb_backup.dump
5.2 Point-in-Time恢复
# 编辑恢复配置
sudo nano /var/lib/postgresql/15/main/postgresql.conf
restore_command = 'cp /var/backups/wal/%f %p'
recovery_target_time = '2026-01-01 00:00:00'
六、云存储备份
6.1 S3备份
# 安装AWS CLI
pip install awscli
# 上传到S3
aws s3 cp backup.sql s3://my-bucket/postgres/
七、验证测试
# 验证备份完整性
file backup_20260101.sql
# 测试恢复
pg_restore --list mydb_backup.dump | head -20
八、常见问题
Q1:备份文件过大?
使用压缩格式:pg_dump -Fc
Q2:恢复失败?
检查权限和磁盘空间。
九、总结
完善的备份恢复策略保障数据安全。
注:本文基于2026年Ubuntu 22.04编写