From 3175b7074b029aa1f60669449b123b74d5c32ffa Mon Sep 17 00:00:00 2001 From: Automation Date: Fri, 1 May 2026 19:32:49 +0800 Subject: [PATCH] feat: add database restoration script for 11 databases (executable) Former-commit-id: f234c68258d9b1925a7fae647ab7c39ee617c92f --- scripts/test-env/prepare-db.sh | 67 ++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 scripts/test-env/prepare-db.sh diff --git a/scripts/test-env/prepare-db.sh b/scripts/test-env/prepare-db.sh new file mode 100644 index 00000000..dacfb19c --- /dev/null +++ b/scripts/test-env/prepare-db.sh @@ -0,0 +1,67 @@ +#!/bin/bash +# prepare-db.sh — 恢复 11 个数据库 SQL 备份到 MySQL +source "$(dirname "${BASH_SOURCE[0]}")/config/env.sh" + +log_info "Phase 2: Database preparation" +log_info "Target: $MYSQL_HOST:$MYSQL_PORT (user: $MYSQL_USER)" + +MYSQL_CMD="mysql -h $MYSQL_HOST -P $MYSQL_PORT -u $MYSQL_USER -p${MYSQL_PASS}" + +# Check MySQL connectivity +if ! $MYSQL_CMD -e "SELECT 1" &>/dev/null; then + log_error "Cannot connect to MySQL at $MYSQL_HOST:$MYSQL_PORT" + exit 1 +fi +log_ok "MySQL connection OK" + +# DB name → backup file mapping +declare -A DB_MAP=( + ["$DB_ELEVATOR"]="12_2026_04_23_17_28_33.sql.gz" + ["$DB_ALARM"]="alarm_deploy_2026_04_23_17_28_33.sql.gz" + ["$DB_MANAGER"]="cwos_manager_2026_04_23_17_28_33.sql.gz" + ["$DB_PORTAL"]="cwos_portal_2026_04_23_17_28_33.sql.gz" + ["$DB_COMMON"]="ninca_common_2026_04_23_17_28_33.sql.gz" + ["$DB_COMPONENT_ORG"]="component-organization_2026_04_23_17_28_33.sql.gz" + ["$DB_ODS"]="ods_2026_04_23_17_28_33.sql.gz" + ["$DB_THIRDPARTY"]="cloudwalk_device_thirdparty_2026_04_23_17_28_33.sql.gz" + ["$DB_G"]="g_2026_04_23_17_28_33.sql.gz" + ["$DB_P"]="p_2026_04_23_17_28_33.sql.gz" +) + +for db_name in "${!DB_MAP[@]}"; do + backup_file="${DB_MAP[$db_name]}" + backup_path="$DATA_BACKUP/$backup_file" + + if [[ ! -f "$backup_path" ]]; then + log_warn "Backup not found: $backup_path — skipping $db_name" + continue + fi + + log_info "Restoring $db_name from $backup_file ($(du -h "$backup_path" | cut -f1))..." + + # Create DB if not exists + $MYSQL_CMD -e "CREATE DATABASE IF NOT EXISTS \\`$db_name\\` DEFAULT CHARACTER SET utf8mb4;" + + # Import + zcat "$backup_path" | $MYSQL_CMD "$db_name" 2>&1 | tail -1 + + if [[ ${PIPESTATUS[0]} -eq 0 ]]; then + log_ok " $db_name restored successfully" + else + log_error " $db_name restore FAILED" + fi +done + +# Elevator app also needs second backup (34_*.sql.gz) +if [[ -f "$DATA_BACKUP/34_2026_04_23_17_28_33.sql.gz" ]]; then + log_info "Restoring elevator DB partition 34..." + zcat "$DATA_BACKUP/34_2026_04_23_17_28_33.sql.gz" | $MYSQL_CMD "$DB_ELEVATOR" + log_ok " $DB_ELEVATOR partition 34 restored" +fi + +# Apply V2.0.7 DDL (tenant_visitor_floor_policy) +log_info "Applying V2.0.7 DDL (tenant_visitor_floor_policy)..." +$MYSQL_CMD "$DB_ELEVATOR" < "$REPO_ROOT/docs/sql/tenant_visitor_floor_policy.sql" +log_ok " V2 DDL applied" + +log_info "Database preparation complete"