upgrade_v2.sh 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #!/bin/bash
  2. set -e
  3. # TG 商户采集系统 v2 升级脚本
  4. # 用法: 在服务器上的项目目录运行 bash deploy/upgrade_v2.sh
  5. DEPLOY_DIR="$(cd "$(dirname "$0")" && pwd)"
  6. PROJECT_DIR="$(dirname "$DEPLOY_DIR")"
  7. MYSQL_CONTAINER="im_mysql"
  8. MYSQL_USER="root"
  9. MYSQL_PASS="root123"
  10. MYSQL_DB="spider"
  11. BACKUP_DIR="$PROJECT_DIR/backup"
  12. echo "=== TG 商户采集系统 v2 升级 ==="
  13. echo "项目目录: $PROJECT_DIR"
  14. echo ""
  15. # 1. 备份数据库
  16. echo "[1/5] 备份数据库..."
  17. mkdir -p "$BACKUP_DIR"
  18. BACKUP_FILE="$BACKUP_DIR/spider_pre_v2_$(date +%Y%m%d_%H%M%S).sql"
  19. docker exec "$MYSQL_CONTAINER" mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASS" "$MYSQL_DB" > "$BACKUP_FILE" 2>/dev/null
  20. echo " 备份完成: $BACKUP_FILE"
  21. # 2. 停止旧服务
  22. echo "[2/5] 停止旧服务..."
  23. cd "$DEPLOY_DIR"
  24. docker compose down 2>/dev/null || docker-compose down 2>/dev/null || true
  25. echo " 旧服务已停止"
  26. # 3. 执行数据库迁移
  27. echo "[3/5] 执行数据库迁移..."
  28. docker exec -i "$MYSQL_CONTAINER" mysql -u"$MYSQL_USER" -p"$MYSQL_PASS" "$MYSQL_DB" < "$DEPLOY_DIR/migrate_v2.sql" 2>/dev/null
  29. echo " 迁移完成"
  30. # 4. 构建新镜像
  31. echo "[4/5] 构建 Docker 镜像..."
  32. cd "$DEPLOY_DIR"
  33. docker compose build --no-cache 2>/dev/null || docker-compose build --no-cache 2>/dev/null
  34. echo " 镜像构建完成"
  35. # 5. 启动新服务
  36. echo "[5/5] 启动新服务..."
  37. docker compose up -d 2>/dev/null || docker-compose up -d 2>/dev/null
  38. echo " 服务已启动"
  39. echo ""
  40. echo "=== 升级完成 ==="
  41. echo "前端: http://localhost:8300"
  42. echo "API: http://localhost:8200/ping"
  43. echo ""
  44. echo "检查日志: docker compose logs -f"
  45. echo ""
  46. echo "确认无问题后,可删除旧表:"
  47. echo " docker exec -i $MYSQL_CONTAINER mysql -u$MYSQL_USER -p$MYSQL_PASS $MYSQL_DB <<< \\"
  48. echo " 'DROP TABLE IF EXISTS merchants_raw_old, merchants_clean_old, channels_old,"
  49. echo " managed_seeds, managed_keywords, managed_settings, config_revisions, nav_sites, tasks;'"