共计 4370 个字符,预计需要花费 11 分钟才能阅读完成。
Jpom 2.9.0 公布将 H2 版本升级到 2.1 啦
🐣 新增性能
- 【server】SSH 终端新增全屏形式关上
(感激 @jaseeon Gitee issues I5BS52) - 【server】SSH 新增超时工夫配置(感激 @带刺的玫瑰)
- 【server】SFTP 新增超时工夫(感激 @带刺的玫瑰)(特别感谢 @hutool 作者紧急发版反对)
🐞 解决 BUG、优化性能
- 【server】降级 h2 版本,低版本存在破绽(CVE-2021-23463)
- 降级 SpringBoot、Hutool 版本
- 【server】修复监控日志未存储到对应的工作空间(感激 @带刺的玫瑰)
⚠️ 留神
此版本为不兼容降级,须要手动降级操作数据相干迁徙,操作流程如下:
-
导出低版本数据
- 启动程序参数外面增加 –backup-h2
- linux 环境举例:
sh /xxxx/Server.sh restart --backup-h2
-
将导出的低版本数据(sql 文件) 导入到新版本中
- 启动程序参数外面增加
--replace-import-h2-sql=/xxxx.sql --transform-sql
(门路须要替换为第一步控制台输入的 sql 文件保留门路) - linux 环境举例:
sh /xxxx/Server.sh restart --replace-import-h2-sql=/xxxx.sql --transform-sql
- 启动程序参数外面增加
具体的降级阐明
前言
问:降级到 2.9.x 为什么要非凡解决?
答 :因为 H2 在 1.4.198, 2.0.202
版本间存在破绽,破绽编号为:CVE-2021-23463
,所以须要尽快降级到最新版本来防止该破绽。
然而 H2 的 1.4.x 降级到 2.0.x 是不兼容版本升级,不能间接无感降级。必须迁徙旧数据到新版本中
问:该破绽呈现了一段时间,为什么当初才发修复版?
答 :当咱们看到破绽相干音讯就开始筹备计划,咱们刚开始想的计划是如何防止过多的人为操作,尽量自动化实现。
后果咱们尝试发现没有方法很好的防止(筹备出一个界面化的操作),最初采纳命令行形式操作。(此处主动🐶)
降级流程总览
-
须要先降级到 2.8.24+ 安装包下载地址
- 降级办法有:在线降级、手动上传 jar 包等形式降级
-
通过命令行的形式创立数据备份
- 启动程序参数外面增加 –backup-h2
- linux 环境举例:
sh /xxxx/Server.sh restart --backup-h2
- 当控制台输入
Complete the backup database, save the path as /xxx/xxx/db/backup/xxxx.sql
字样示意备份胜利
-
手动替换 jar
- 将 lib 目录上面的
Server-2.8.x.jar
替换为最新的Server-2.9.x.jar
- 留神可能须要批改
Server.sh
脚本外面的RUNJAR
变量值为您上传新 jar 的文件名,如:Server-2.9.x.jar
- 将 lib 目录上面的
-
通过指定 sql 文件形式启动
- 启动程序参数外面增加
--replace-import-h2-sql=/xxxx.sql --transform-sql
(门路须要替换为第二步控制台输入的 sql 文件保留门路) - linux 环境举例:
sh /xxxx/Server.sh restart --replace-import-h2-sql=/xxxx.sql --transform-sql
- 启动程序参数外面增加
-
察看管制输入内容
- 当控制台输入
Import successfully according to sql,/xxx/xxx/db/backup/xxxx.sql
字样示意降级胜利并主动启动程序 - 如果出现异常信息能够先尝试在搜索引擎搜寻看看是否有解决办法
- 分割官网帮助排查
- 当控制台输入
- 欢快的应用 Jpom 2.9.x
相干问题阐明
问:必须先降级到 2.8.24+?
答 :非必须,因为 2.8.24+ 新增了命令行形式备份数据,这样在程序未启动前就将所有数据备份导出为 sql 保障导出的数据是最新并且残缺的。
如果您不想降级到 2.8.24+ 再降级到 2.9.x 那么能够先用治理身份登录进入零碎进入:【系统管理 -> 数据库备份】页面外面去创立一个全量备份记住备份文件实现门路
留神 : 不通过命令行备份不能保障导出的备份数据肯定是最新的奥,因为程序在运行中随时会产生新数据或者数据更新状况
问:如何查看备份记录中的备份文件门路?
答:备份列表中状态列前面有一个复制按钮,点击一下就复制到粘贴板啦
问:执行 sh /xxxx/Server.sh restart --backup-h2
不失效该怎么办?
答:如果你是从很早就应用了 Jpom 那么你当初治理服务端当脚本不是最新当,最新的治理脚本外面将执行命令的其余参数也传入了启动程序外面
解决办法有:
- 替换为最新的治理脚本文件 Server.sh
-
手动批改治理脚本,在脚本中
ARGS
变量最初增加一个$@
即可- 残缺示例:
ARGS="--jpom.applicationTag=${Tag} --spring.profiles.active=pro --server.port=2122 --jpom.log=${Path}log $@"
- 残缺示例:
问:官网是不是遗记还用 windows 用户啦?
答:没有的,因为 linux 用户偏多,所以拿 linux 举例。windows 解决方法相似
能够依照 Server.bat 中 if 判断持续扩大
set /p ID=
IF "!ID!"=="1" call:start
IF "!ID!"=="2" call:stop
IF "!ID!"=="3" call:status
IF "!ID!"=="4" call:restart
IF "!ID!"=="5" call:use
IF "!ID!"=="6" call:restart --rest:ip_config
IF "!ID!"=="7" call:restart --rest:load_init_db
IF "!ID!"=="8" call:restart --rest:super_user_pwd
IF "!ID!"=="0" EXIT
思路增加 IF, 比方:
set /p ID=
IF "!ID!"=="1" call:start
IF "!ID!"=="2" call:stop
IF "!ID!"=="3" call:status
IF "!ID!"=="4" call:restart
IF "!ID!"=="5" call:use
IF "!ID!"=="6" call:restart --rest:ip_config
IF "!ID!"=="7" call:restart --rest:load_init_db
IF "!ID!"=="8" call:restart --rest:super_user_pwd
IF "!ID!"=="9" call:restart --backup-h2
IF "!ID!"=="10" call:restart --replace-import-h2-sql=/xxxx.sql --transform-sql
IF "!ID!"=="0" EXIT
留神要批改 sql 门路
问:不想通过治理脚本来操作,还有其余办法吗?
答:有
- 备份数据
java -jar server-2.8.24.jar --spring.profiles.active=pro --backup-h2
- 导入数据
java -jar server-2.9.0.jar --spring.profiles.active=pro --replace-import-h2-sql=/xxxx.sql --transform-sql
- 更新治理脚本中的:
RUNJAR
变量值为:server-2.9.0.jar
留神:
- 通过次形式肯定要在原目录操作
- 操作程序肯定是要先应用旧包备份数据,再通过新包导入数据
问:容器装置的应该如何降级?
答:降级流程和 Linux 流程基本一致,须要留神的就是上传文件的形式须要先上传到宿主机,再通过 docker cp
形式将文件复制到容器中。
上面以从 2.8.24 降级到 2.9.0 为例:
# 留神:从 2.8.24 版本开始新增数据库备份的参数命令,倡议先降级到 2.8.24
# 备份低版本数据库
docker exec -it jpom-server /bin/bash /usr/local/jpom-server/Server.sh restart --backup-h2
# 执行完后看到【Need to log out manually: Ctrl+C/Control+C】用 Ctrl + C 手动退出
# 替换脚本命令中为新版 Jar 包
docker exec -it jpom-server sed -r -e '/^RUNJAR="/s@.*@RUNJAR="Server-2.9.0.jar"@g' /usr/local/jpom-server/Server.sh -i
# docker cp 本地文件门路 容器 ID/ 容器 NAME: 容器内门路
docker cp /root/Server-2.9.0.jar jpom-server:/usr/local/jpom-server/lib/Server-2.9.0.jar
# 进入容器外部
docker exec -it jpom-server /bin/bash
# 将低版本的数据库导入到新版本中
backupFile=`ls -t /usr/local/jpom-server/data/db/backup/ | head -1`
/bin/bash /usr/local/jpom-server/Server.sh restart --replace-import-h2-sql=/usr/local/jpom-server/data/db/backup/$backupFile --transform-sql
# 启动实现后,输出 Ctrl + C 退出。# 退出容器,回到宿主机
exit
问:降级服务端后须要将插件端也降级到 2.9.0+ 吗?
答:咱们倡议服务端和插件端的版本统一,能够同步降级到 2.9.0。
只有您在应用过程中没有发现局部性能异样,无奈应用,接口 404 等状况下,插件端不及时更新也是没有太多问题的。
插件端和服务端版本差别请尽量统一或者放大,避免出现局部性能调整后关联影响。
问:哪里下载 2.8.24+ 安装包?
答:https://gitee.com/dromara/Jpom/attach_files
问:插件端该如何降级到 2.9.0+ ?
答:插件端还是能够应用以前到形式:手动上传 jar,在线降级等。举荐应用在线降级,能够在服务端页面批量降级插件端版本
Jpom 链接
官网:https://jpom.io
Gitee: https://gitee.com/dromara/Jpom
Github: https://github.com/dromara/Jpom
常见问题:https://jpom-docs.keepbx.cn/pages/FQA/
微信群:jpom66 (请备注 Jpom)
此文章版权归属 dromara 开源组织所有(https://dromara.org/)