#!/bin/bash set -e # TG 商户采集系统 v2 升级脚本 # 用法: 在服务器上的项目目录运行 bash deploy/upgrade_v2.sh DEPLOY_DIR="$(cd "$(dirname "$0")" && pwd)" PROJECT_DIR="$(dirname "$DEPLOY_DIR")" MYSQL_CONTAINER="im_mysql" MYSQL_USER="root" MYSQL_PASS="root123" MYSQL_DB="spider" BACKUP_DIR="$PROJECT_DIR/backup" echo "=== TG 商户采集系统 v2 升级 ===" echo "项目目录: $PROJECT_DIR" echo "" # 1. 备份数据库 echo "[1/5] 备份数据库..." mkdir -p "$BACKUP_DIR" BACKUP_FILE="$BACKUP_DIR/spider_pre_v2_$(date +%Y%m%d_%H%M%S).sql" docker exec "$MYSQL_CONTAINER" mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASS" "$MYSQL_DB" > "$BACKUP_FILE" 2>/dev/null echo " 备份完成: $BACKUP_FILE" # 2. 停止旧服务 echo "[2/5] 停止旧服务..." cd "$DEPLOY_DIR" docker compose down 2>/dev/null || docker-compose down 2>/dev/null || true echo " 旧服务已停止" # 3. 执行数据库迁移 echo "[3/5] 执行数据库迁移..." docker exec -i "$MYSQL_CONTAINER" mysql -u"$MYSQL_USER" -p"$MYSQL_PASS" "$MYSQL_DB" < "$DEPLOY_DIR/migrate_v2.sql" 2>/dev/null echo " 迁移完成" # 4. 构建新镜像 echo "[4/5] 构建 Docker 镜像..." cd "$DEPLOY_DIR" docker compose build --no-cache 2>/dev/null || docker-compose build --no-cache 2>/dev/null echo " 镜像构建完成" # 5. 启动新服务 echo "[5/5] 启动新服务..." docker compose up -d 2>/dev/null || docker-compose up -d 2>/dev/null echo " 服务已启动" echo "" echo "=== 升级完成 ===" echo "前端: http://localhost:8300" echo "API: http://localhost:8200/ping" echo "" echo "检查日志: docker compose logs -f" echo "" echo "确认无问题后,可删除旧表:" echo " docker exec -i $MYSQL_CONTAINER mysql -u$MYSQL_USER -p$MYSQL_PASS $MYSQL_DB <<< \\" echo " 'DROP TABLE IF EXISTS merchants_raw_old, merchants_clean_old, channels_old," echo " managed_seeds, managed_keywords, managed_settings, config_revisions, nav_sites, tasks;'"