#!/bin/bash # ============================================ # RuoYi-Vue 数据库迁移脚本 # 使用方式: ./05_migration.sh # ============================================ DB_HOST="localhost" DB_PORT="3306" DB_USER="root" DB_PASS="password" DB_NAME="ry-vue" BACKUP_DIR="./backup" TIMESTAMP=$(date +%Y%m%d_%H%M%S) echo "========================================" echo "RuoYi-Vue 数据库迁移" echo "开始时间: $(date)" echo "========================================" # 1. 创建备份目录 mkdir -p $BACKUP_DIR # 2. 备份现有数据库 echo "[1/5] 备份现有数据库..." mysqldump -h$DB_HOST -P$DB_PORT -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/backup_$TIMESTAMP.sql if [ $? -eq 0 ]; then echo "✓ 备份成功: $BACKUP_DIR/backup_$TIMESTAMP.sql" else echo "✗ 备份失败,终止迁移" exit 1 fi # 3. 执行索引优化 echo "[2/5] 执行索引优化..." mysql -h$DB_HOST -P$DB_PORT -u$DB_USER -p$DB_PASS $DB_NAME < 01_add_indexes.sql if [ $? -eq 0 ]; then echo "✓ 索引优化成功" else echo "✗ 索引优化失败" fi # 4. 添加审计字段 echo "[3/5] 添加审计字段..." mysql -h$DB_HOST -P$DB_PORT -u$DB_USER -p$DB_PASS $DB_NAME < 03_add_audit_fields.sql if [ $? -eq 0 ]; then echo "✓ 审计字段添加成功" else echo "✗ 审计字段添加失败" fi # 5. 修复拼写错误 echo "[4/5] 修复拼写错误..." mysql -h$DB_HOST -P$DB_PORT -u$DB_USER -p$DB_PASS $DB_NAME < 04_fix_typos.sql if [ $? -eq 0 ]; then echo "✓ 拼写错误修复成功" else echo "✗ 拼写错误修复失败" fi # 6. 验证迁移 echo "[5/5] 验证迁移..." mysql -h$DB_HOST -P$DB_PORT -u$DB_USER -p$DB_PASS $DB_NAME -e " SELECT TABLE_NAME, TABLE_ROWS, DATA_LENGTH, INDEX_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA = '$DB_NAME' ORDER BY TABLE_NAME; " echo "========================================" echo "迁移完成" echo "结束时间: $(date)" echo "========================================" echo "" echo "如需回滚,执行以下命令:" echo "mysql -h$DB_HOST -P$DB_PORT -u$DB_USER -p$DB_PASS $DB_NAME < $BACKUP_DIR/backup_$TIMESTAMP.sql"