PostgreSQL 14 冷备份指南


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. 停机时间:冷备份需要停止数据库服务,确保业务允许停机
  2. 备份大小:确保备份目标位置有足够空间(通常是数据目录大小的1.5倍)
  3. 权限:备份文件默认属于root,恢复时需要改为postgres用户
  4. 定时任务:不要将冷备份设为定时任务,除非业务允许定期停机
  5. 验证恢复:定期测试备份恢复流程
  6. 监控:备份后验证数据库是否正常启动

文章作者: TerSup
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 TerSup !
  目录