chore: establish V1.1 recovery baseline
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
#!/bin/bash
|
||||
# ============================================
|
||||
# 丹阳公益婚恋服务平台 — PostgreSQL 恢复脚本
|
||||
# ============================================
|
||||
# 用法:
|
||||
# ./scripts/restore.sh <backup-file>
|
||||
# ./scripts/restore.sh backups/danyang_match_20260828_143000.sql.gz
|
||||
# ============================================
|
||||
set -euo pipefail
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
echo "用法: $0 <备份文件路径>"
|
||||
echo "示例: $0 /app/backups/danyang_match_20260828_143000.sql.gz"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BACKUP_FILE="$1"
|
||||
|
||||
if [ ! -f "${BACKUP_FILE}" ]; then
|
||||
echo "错误: 备份文件不存在: ${BACKUP_FILE}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
DB_NAME="${DB_NAME:-danyang_match}"
|
||||
DB_USER="${DB_USER:-danyang}"
|
||||
DB_HOST="${DB_HOST:-postgres}"
|
||||
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 开始恢复: ${BACKUP_FILE} -> ${DB_NAME}"
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ⚠️ 将覆盖现有数据库,请确认!"
|
||||
|
||||
# 恢复数据
|
||||
gunzip -c "${BACKUP_FILE}" | psql \
|
||||
-h "${DB_HOST}" \
|
||||
-U "${DB_USER}" \
|
||||
-d "${DB_NAME}" \
|
||||
--On-error-stop
|
||||
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 恢复完成"
|
||||
|
||||
# 验证
|
||||
TABLE_COUNT=$(psql -h "${DB_HOST}" -U "${DB_USER}" -d "${DB_NAME}" -tAc \
|
||||
"SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='public'")
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 验证: 公共 schema 下 ${TABLE_COUNT} 张表"
|
||||
Reference in New Issue
Block a user