同一服务器共存 MeterSphere V2 + V3 完整版避坑指南!再也不怕数据丢了

大家好,我是一名长期使用 MeterSphere 的测试老司机。最近公司想从 MeterSphere V2 升级到 V3,结果一问官方:V2 数据不支持直接升级 V3!
 那怎么办?
 
业务不能停、历史数据不能丢,只能在同一台服务器上同时装 V2 和 V3,先迁移验证,再逐步切流量。
 
本以为很简单,结果踩了两个大坑:
  • 直接运行 install.sh,旧版 V2 容器被一键清空
  • 共用 Redis 导致 V3 无法序列化用户、新建用户失败
今天把完整实操方案 + 避坑要点一次性写全,照着做就能双版本共存。

一、先说结论:千万别用 install.sh 安装 V3

 MeterSphere 官方一键脚本 install.sh 会自动检测已安装实例,一旦检测到旧版,你如果手滑选了 “更新 / 覆盖”,旧版所有容器直接被卸载!
我们的历史数据、项目、用例全在 V2 里,这一下直接原地爆炸。
 

正确方案:纯 docker-compose 手动部署

MeterSphere V3 只需要 3 个核心容器:
  1. metersphere(主服务)
  2. task-runner(执行机)
  3. result-hub(结果收集)

二、安装前准备:离线包 & 配置修改

1. 下载并解压 V3 离线包

tar xzfv metersphere-ce-offline-installer-v3.6.7-lts.tar.gz
cd metersphere-ce-offline-installer-v3.6.7-lts

2. 关键:修改 docker-compose 配置

因为我们使用外置 MySQL、Redis、MinIO、Kafka,需要手动替换配置文件中所有 ${变量}
重点修改内容:
  • 镜像名称(确保版本一致)
  • MySQL 连接信息(必须新建库 metersphere_v3,不要共用 V2 库)
  • Redis 连接信息
  • Kafka 连接信息
  • 端口(8081 被 V2 占用,我改成了 9081)

3. 统一环境变量(推荐写到~/.bashrc)

export MS_IMAGE_PREFIX=registry.fit2cloud.com/metersphere
export MS_IMAGE_TAG=v3.6.7-lts
export MS_MEM_LIMIT=4G
export MS_BASE=/opt/metersphereV3

#生效
source ~/.bashrc

三、一步步启动 V3 三个容器

1. 启动服务

#1. 启动主服务 metersphere
docker-compose -f docker-compose-base.yml -f docker-compose-metersphere.yml up -d
#2. 启动 task-runner
docker-compose -f docker-compose-base.yml -f docker-compose-task-runner.yml up -d
#3. 启动 result-hub
docker-compose -f docker-compose-base.yml -f docker-compose-result-hub.yml up -d

到这里,V3 理论上已经启动成功。

但如果你和我一样,V2、V3 共用了 Redis,马上会遇到第二个大坑。

四、巨坑:共用 Redis → V3 无法序列化用户信息

现象:
  • V3 能登录
  • 但无法添加用户
  • 日志报错:用户信息序列化失败
原因:
MeterSphere V2 和 V3 的 Redis Key 结构、序列化方式不兼容,互相污染。

解决办法:给 V3 单独起一个 Redis

直接用官方镜像启动一个独立 Redis 容器:
docker run -tid \
-p 6379:6379 \
--name=redis-ms3 \
--log-opt max-size=200m \
--log-opt max-file=1 \
--restart=always \
--memory 215m \
registry.fit2cloud.com/metersphere/redis:7.2.10-alpine \
redis-server --requirepass "Password123@redis"

重新生成 V3 主服务 + result-hub

docker rm -f metersphere result-hub

docker-compose -f docker-compose-base.yml -f docker-compose-metersphere.yml up -d
docker-compose -f docker-compose-base.yml -f docker-compose-result-hub.yml up -d

五、总结避坑(必看)

  1. V2 不能直接升级 V3,只能双版本共存迁移
  2. 千万不要用 install.sh 装 V3,会覆盖旧版
  3. 必须使用 docker-compose 手动编排
  4. MySQL 必须新建库,不要共用 V2
  5. Redis 必须独立,否则用户模块异常
  6. 端口必须修改,避免 8081 冲突
posted @ 2026-03-27 13:35  不将就的行者  阅读(37)  评论(0)    收藏  举报