PostgreSQL 14 冷备份指南
1. 停止 PostgreSQL 服务
# 停止 PostgreSQL 服务
sudo systemctl stop postgresql
# 确认服务已停止
sudo systemctl status postgresql
2. 查找 PostgreSQL 数据目录
# 通常 Ubuntu 22.04 默认路径:
# /var/lib/postgresql/14/main/
# 验证目录是否存在
sudo ls -la /var/lib/postgresql/14/main/
3. 完整冷备份步骤
创建备份目录
# 创建备份目录(示例路径)
BACKUP_ROOT="/opt/postgres_backups"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="$BACKUP_ROOT/cold_backup_$DATE"
sudo mkdir -p "$BACKUP_DIR"
sudo chmod 755 "$BACKUP_ROOT"
sudo chmod 755 "$BACKUP_DIR"
备份整个数据目录
# 备份 PostgreSQL 数据目录
sudo cp -rp /var/lib/postgresql/14/main "$BACKUP_DIR/data_directory"
# 备份 PostgreSQL 配置文件
sudo cp -rp /etc/postgresql/14/main "$BACKUP_DIR/etc_postgresql"
# 备份 PostgreSQL 日志目录(可选)
sudo cp -rp /var/log/postgresql "$BACKUP_DIR/logs"
# 备份 PostgreSQL 配置文件备份
sudo cp -rp /etc/postgresql "$BACKUP_DIR/etc_postgresql_full"
验证备份完整性
# 查看备份的文件大小
sudo du -sh "$BACKUP_DIR"
# 列出备份的文件结构
sudo ls -la "$BACKUP_DIR/"
sudo ls -la "$BACKUP_DIR/data_directory/"
4. 恢复冷备份的方法
如果需要从冷备份恢复:
# 停止 PostgreSQL
sudo systemctl stop postgresql
# 备份当前数据(以防万一)
sudo mv /var/lib/postgresql/14/main /var/lib/postgresql/14/main.bak
# 恢复冷备份
sudo cp -rp /opt/postgres_backups/cold_backup_YYYYMMDD_HHMMSS/data_directory /var/lib/postgresql/14/main
# 恢复配置文件(如果需要)
sudo cp -rp /opt/postgres_backups/cold_backup_YYYYMMDD_HHMMSS/etc_postgresql/* /etc/postgresql/14/main/
# 设置正确的权限
sudo chown -R postgres:postgres /var/lib/postgresql/14/main
sudo chmod 700 /var/lib/postgresql/14/main
# 启动 PostgreSQL
sudo systemctl start postgresql
7. 验证备份完整性
# 检查备份目录结构
sudo ls -la /opt/postgres_backups/cold_backup_YYYYMMDD_HHMMSS/
# 检查备份大小
sudo du -sh /opt/postgres_backups/cold_backup_YYYYMMDD_HHMMSS/
# 查看备份信息
cat /opt/postgres_backups/cold_backup_YYYYMMDD_HHMMSS/backup_info.txt
注意事项
- 停机时间:冷备份需要停止数据库服务,确保业务允许停机
- 备份大小:确保备份目标位置有足够空间(通常是数据目录大小的1.5倍)
- 权限:备份文件默认属于root,恢复时需要改为postgres用户
- 定时任务:不要将冷备份设为定时任务,除非业务允许定期停机
- 验证恢复:定期测试备份恢复流程
- 监控:备份后验证数据库是否正常启动