目錄
目錄X
postgresql數(shù)據(jù)庫備份腳本
? 保存為shell腳本
#!/bin/bash # 加載系統(tǒng)環(huán)境變量(可選) source /etc/profile 2>/dev/null || true # 定義變量 DATE=$(date +%Y%m%d_%H%M%S) BACKUP_DIR="/data/polardb_bak" DB_NAME="數(shù)據(jù)庫名" PG_USER="用戶名" PG_HOST="localhost" # 如果不是本地,請?zhí)鎿Q為實(shí)際IP或域名 PG_PORT="5432" # 替換為你的PostgreSQL/PolarDB端口號 PG_PASSWORD="密碼" # ?? 在這里設(shè)置數(shù)據(jù)庫密碼 # 創(chuàng)建備份目錄(如果不存在) mkdir -p "${BACKUP_DIR}" # 定義備份文件名 SQL_FILE="${DB_NAME}_${DATE}.sql" TAR_FILE="${SQL_FILE}.tar.gz" # 設(shè)置 PGPASSWORD 環(huán)境變量 export PGPASSWORD="${PG_PASSWORD}" # 執(zhí)行備份 echo "[$(date)] 開始導(dǎo)出數(shù)據(jù)庫: ${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)] ? 數(shù)據(jù)庫導(dǎo)出失敗!" exit 1 fi # 進(jìn)行壓縮并刪除原文件 cd "${BACKUP_DIR}" || { echo "無法進(jìn)入目錄:${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)] ? 數(shù)據(jù)庫備份完成。"
用戶登錄
還沒有賬號?
立即注冊