You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
RuoYi-Vue/sql/optimization/05_migration.sh

85 lines
2.1 KiB

#!/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"