同一服务器共存 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 个核心容器:
metersphere(主服务)task-runner(执行机)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 结构、序列化方式不兼容,互相污染。
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
五、总结避坑(必看)
- V2 不能直接升级 V3,只能双版本共存迁移
- 千万不要用 install.sh 装 V3,会覆盖旧版
- 必须使用 docker-compose 手动编排
- MySQL 必须新建库,不要共用 V2
- Redis 必须独立,否则用户模块异常
- 端口必须修改,避免 8081 冲突
浙公网安备 33010602011771号