MeterSphere测试平台从2020年6月发布1.0版本之后,至今始终保持每月一个版本迭代,在持续使用过程中将少不了对MS进行升级。现介绍下完整的MS升级的6个步骤:
(1) 磁盘空间检测
(2) 数据库备份
(3) MeterSphere 主应用升级
(4) 测试资源池升级
(5) 配置文件更新【可选】
(6) 删除残留镜像【可选】
本文将对MS升级的具体步骤、具体操作以及特别注意事项进行详细说明。
(一)检查服务器磁盘资源状态
说明:
V1.XX 系列安装/升级MeterSphere服务,服务器最低要求4C 8G 200G磁盘及以上。
V2.XX 微服务系列安装/升级MeterSphere服务,服务器最低要求8C 16G 200G磁盘及以上。
1、查看MeterSphere服务已有数据的磁盘占用情况。MS已有数据量越大,数据库备份时需要的存储空间也就越大,需要根据已有的数据来评估主机的磁盘空间是否充足。
cd /opt/metersphere/data/mysql/metersphere #metersphere服务安装路径
ls -lh #查看数据表具体占用大小
**注意:**如果MeterSphere数据库中存在某个数据表空间占用过大,将可能在后续的升级过程中执行数据迁移脚本失败而导致升级失败,因此需要针对部分表做数据清理。如果数据库占用空间不大,此步骤可忽略。
如果使用Metersphere时间较长且使用频繁,目前已知数据量较大的表主要是接口和性能测试模块,测试过程产生的报告数据以及操作日志。主要集中在file_content、api_scenario_report、load_test_report_detail、load_test_report_rusult、operating_log等数据表中,如果这几张表的数据容量较大(比如这几张表容量超过1g),就需要进行清理。
数据表清理步骤:
(1) 按照生产环境实际情况,如果无需保存测试报告数据,可以直接使用“truncate table 表名”清理这几个表(api_scenario_report、load_test_report_detail、load_test_report_rusult、operating_log)的数据。
(2) 如果需要保存近几天的的测试报告数据,V1.17及之后版本可以开启定时清理报告功能。在项目设置-应用管理菜单下,按模块设置保留近期的测试报告数据时间。该任务设置后当前时间凌晨两点生效,等自动清理报告完成再检查数据库确认数据清理完成。
(3)如果当前使用Meterspher版本在V1.17及之前,没有定时清理报告功能;可以在页面上按实际需要保留报告的时间,手动批量删除报告数据。
- 也可以通过操作数据库的方式删除需要保留报告的目标天数。例如只保留 load_test_report 表近三天的数据,使用sql如下。其他表操作方式同理。
DELETE FROM load_test_report WHERE create_time <= UNIX_TIMESTAMP(DATE_ADD(CURRENT_DATE,INTERVAL -1 DAY))*1000;
(4)file_content 表除了存储接口、性能测试报告产生的文件,还存储了接口、性能测试需要使用的文件。因此需要单独清理load_test_file存储性能测试相关文件的数据。
- 如:通过联表查询只保留load_test_file 性能测试需要使用的文件,并将查询的结果保存后另存为file_content.sql文件,其他表的处理方式同理( test_case_file、api_test_file)。此处可以通过navicat 直连metersphere库的方式操作更为方便!
select b.file_id,b.file from load_test_file AS a left join file_content AS b on a.file_id= b.file_id
- 之后执行sql命令清空表数据
truncate table file_content
- 最后通过运行sql的方式还原上一步的查询结果file_content.sql文件,确保file_content 表清理后只保留性能、接口测试需要使用的文件数据。此时再查看file_content数据表的大小可以明显看到存储空间变小!
备注:如果此处还原sql文件较大(超过1g)会导致sql执行失败——可以通过sqldumpsplitter 切割为1g大小在执行。
到此数据库清理完成。
2、 检查服务器磁盘状态,确保磁盘剩余可用空间可以满足后续的数据库备份及升级操作(建议服务器磁盘使用率不超过80%)。
df -h | grep -v "docker"
3、检查安装目录具体的磁盘使用率。
df -h /opt/metersphere #检查安装目录具体的磁盘使用率
(二)数据库备份
1、为了防止升级过程中,因为MeterSphere配置的定时任务执行致数据不一致,建议在升级前关闭系统中所有定时任务。若MeterSphere系统设置的定时任务较少可手动在界面上关闭;若任务较多可直接操作数据库把所有的定时任务都关闭。
- 手动关闭定时任务。各个项目下按测试模块在首页时任务中心,可以批量关闭定时任务。
- 执行sql语句批量关闭定时任务。连接数据库执行如下sql语句,执行后注意检查页面确保定时任务全部关闭。
UPDATE `schedule` set `enable`=0
2、停止MeterSphere服务
msctl stop
3、备份数据库
mysqldump -uroot -h xxxx -pPassword123@mysql metersphere --max_allowed_packet=2G --set-gtid-purged=OFF > backupfile0301.sql
(三)MeterSphere 主应用升级
升级说明:
- 若目前使用1.10-xx.lts、1.20-xx.lts版本,因后台设置规则:只有lts版本之间才可以通过 msctl upgrade 一键升级,所以lst版本需要升级主线版本 (比如v2.6)必须下载离线安装版手动升级。
- 若不是上述情况且服务器可以稳定访问github外网,可以使用msctl upgrade一键升级至最新主线版本。
- 若不能稳定访问外网或者需要修改安装包相关配置文件,建议下载离线安装包升级。
离线升级的详细说明如下:
1、下载离线安装包。下载路径:官方开源社区https://community.fit2cloud.com/#/products/metersphere/downloads,找到需要升级的目标版本下载。
wget https://support.fit2cloud.com/download/241c6be8-83ae-4fdd-bd3d-d6ff15ee131a/metersphere-offline-installer-v2.6.0.tar.gz
2.解压安装包
tar zxvf metersphere-offline-installer-v2.6.0.tar.gz
3.安装MeterSphere (默认安装路径/opt 若修改过安装目录,请在安装包install.conf 修改安装路径)
cd metersphere-offline-installer-v2.6.0/
/bin/bash install.sh #安装脚本执行升级
4、查看服务状态
msctl status
升级过程中如果有容器error报错,可通过”docker logs -f 容器名称“(如: docker logs -f gateway)查看详细报错,之后参考官网说明处理https://metersphere.io/docs/v2.x/faq/installation/或者进入官方社区交流群咨询技术人员https://www.fit2cloud.com/metersphere/index.html#contact。
(四)测试资源池升级
如果额外部署了Node测试资源池也需要同步升级资源池,确保资源池节点安装包和主服务安装包版本一致,防止后续测试出现莫名异常。如果没有额外部署资源池则可忽略该步骤。
测试资源池升级步骤如下:
1、在Node测试资源池服务器上,下载与主服务同版本的安装包。
wget https://support.fit2cloud.com/download/241c6be8-83ae-4fdd-bd3d-d6ff15ee131a/metersphere-offline-installer-v2.6.0.tar.gz
2.解压安装包
tar zxvf metersphere-offline-installer-v2.6.0.tar.gz
3.升级资源池节点
cd metersphere-offline-installer-v2.6.0
vi install.conf #将安装模式改为node-controller
/bin/bash install.sh #修改完成之后执行安装命令
msctl status #安装完成后检查容器状态应全部为healthy
4、升级完成后,在「系统设置」-「系统」-「测试资源池」页面校验资源池可用性。通过关闭再开启资源池开关校验,状态提示修改成功则升级成功!
(五)配置文件更新【可选】
升级后安装目录下,会将历史的docker-compose-xx.yml文件做备份,并同步最新版本的配置文件。若历史版本修改了相关配置参数,可对比历史文件在最新的文件中修改配置参数,修改后执行命令msctl reload确保配置生效。
(六)删除残留镜像【可选】
升级后若磁盘空间紧张,为了节约磁盘空间可以删除历史版本MeterSphere残余镜像。执行命令后在使用中的镜像不会被删除,历史残留镜像则会被清理掉。
docker rmi `docker images -q`
docker images # 检查剩余镜像