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