postgresql数据库备份脚本
来源:本站原创
点击数: 次
发布时间:2025年07月02日
✅ 保存为shell脚本
#!/bin/bash # 加载系统环境变量(可选) source /etc/profile 2>/dev/null || true # 定义变量 DATE=$(date +%Y%m%d_%H%M%S) BACKUP_DIR="/data/polardb_bak" DB_NAME="数据库名" PG_USER="用户名" PG_HOST="localhost" # 如果不是本地,请替换为实际IP或域名 PG_PORT="5432" # 替换为你的PostgreSQL/PolarDB端口号 PG_PASSWORD="密码" # 🔐 在这里设置数据库密码 # 创建备份目录(如果不存在) mkdir -p "${BACKUP_DIR}" # 定义备份文件名 SQL_FILE="${DB_NAME}_${DATE}.sql" TAR_FILE="${SQL_FILE}.tar.gz" # 设置 PGPASSWORD 环境变量 export PGPASSWORD="${PG_PASSWORD}" # 执行备份 echo "[$(date)] 开始导出数据库: ${DB_NAME}" pg_dump -h "${PG_HOST}" -p "${PG_PORT}" -U "${PG_USER}" "${DB_NAME}" > "${BACKUP_DIR}/${SQL_FILE}" # 检查 pg_dump 是否成功 if [ $? -ne 0 ]; then echo "[$(date)] ❌ 数据库导出失败!" exit 1 fi # 进行压缩并删除原文件 cd "${BACKUP_DIR}" || { echo "无法进入目录:${BACKUP_DIR}"; exit 1; } echo "[$(date)] 压缩备份文件: ${TAR_FILE}" tar -czf "${TAR_FILE}" "${SQL_FILE}" # 删除原始 SQL 文件 rm -f "${SQL_FILE}" # 可选:清理超过7天的备份文件 echo "[$(date)] 正在清理过期备份..."find "${BACKUP_DIR}" -type f -name '*.tar.gz' -mtime +7 -exec rm {} \; echo "[$(date)] ✅ 数据库备份完成。"