JeecgBoot 升级 XXL-JOB 3.x 后如何重建数据库并切换登录认证?
【免费下载链接】jeecg-boot【低代码v2.0,一句话即可生成整个系统】企业级AI低代码平台,一键生成前后端代码甚至整个系统。 AI Skills 一句话画流程、设计表单、生成报表、大屏。内置 AI应用平台涵盖:AI聊天、知识库、流程编排、MCP插件等,兼容主流大模型。引领AI低代码「Skills 生成 → 在线配置 → 代码生成 → 手工合并->AI修改」开发模式,解决 Java 项目 90% 重复工作,提高效率又不失灵活。项目地址: https://gitcode.com/GitHub_Trending/je/jeecg-boot
JeecgBoot 3.9.3 把 XXL-JOB 从 2.4.1 升级到了 3.4.2(见 UPGRADE-3.9.3.md)。这是一次大版本升级,带来两个必须处理的变化:
- 数据库不兼容:XXL-JOB 3.x 不会自动建表,表结构有变化,需要用新库重新导入 tables_xxl_job.sql;
- 登录认证变更:2.x 使用
xxl_job_user表的 MD5 密码登录,3.x 改用xxl-sso单点登录框架(新增xxl-sso-core2.4.0 依赖),SHA-256 密码,默认账号admin/123456。
本文的任务就是:升级后重建 XXL-JOB 数据库,把老库里的任务等配置迁移过去,然后启动新的管理端并完成登录验证。适用环境为 JeecgBoot 3.9.3(Spring Boot 4.1.0)+ MySQL,要求 Java 17+。
升级前的唯一硬性前提:备份老库
UPGRADE-3.9.3.md 在“不兼容升级提醒”中明确要求:Nacos 2.x → 3.x、XXL-JOB 2.x → 3.x 均为大版本升级,表结构不兼容,需重新初始化数据库,升级前请备份老库。
因为建表脚本 tables_xxl_job.sql 中对每张表都带有DROP TABLE IF EXISTS,直接在老库上执行会先删掉旧表再重建。所以备份不是建议项,而是必须先做的动作:把老xxl_job库完整备份(例如用mysqldump导出),后续的老任务、执行器等配置都靠这份备份迁移。
重建数据库:导入建表脚本
3.9.3 的数据库名仍为xxl_job。脚本开头即建库并切换到该库:
CREATE database if NOT EXISTS `xxl_job` default character set utf8mb4 collate utf8mb4_unicode_ci; use `xxl_job`;执行方式:将 tables_xxl_job.sql 导入到新的xxl_job库(建议在新库上执行,而不是直接在老库上覆盖)。脚本会创建以下表:
| 表 | 用途(按脚本注释) |
|---|---|
xxl_job_group | 执行器,含 AppName、执行器名称、地址类型等 |
xxl_job_info | 任务信息,含调度类型、Cron、JobHandler、阻塞策略等 |
xxl_job_lock | 调度锁,默认含schedule_lock记录 |
xxl_job_log/xxl_job_log_report/xxl_job_logglue | 执行日志、日志报表、GLUE 代码版本 |
xxl_job_registry | 执行器注册信息 |
xxl_job_user | 登录账号,3.x 下密码为 SHA-256 加密 |
注意脚本中INSERT的数据属于脚本自带示例数据:包括xxl-job-executor-sample、jeecg-demo、jeecg-system等执行器,若干示例任务(demoJobHandler、ollamaJobHandler等),以及默认账号admin(xxl_job_user表中一条管理员记录)。这些数据用于快速演示,生产环境请按实际情况清理或保留,脚本没有给出自动清理说明。
手工迁移老库配置
UPGRADE-3.9.3.md 给出的迁移方式只有一个:将老库中的配置(XXL-JOB 任务等)手工迁移到新库。脚本本身不会合并任何老数据,你在新库的xxl_job_info、xxl_job_group等表里看到的只是上面列出的示例数据。
操作时以备份出的老库为准,把线上实际使用的任务(xxl_job_info中的业务记录)和执行器(xxl_job_group)复制到新库对应的表中。文档没有提供自动迁移工具或字段映射说明,3.x 表结构与 2.x 不完全一致时(例如schedule_type由枚举值变为CRON/NONE字符串列),需要按新表结构逐条核对。
核对管理端配置:application.properties
3.9.3 中该模块的配置文件由application.yml改成了 application.properties。UPGRADE-3.9.3.md 说明改用 properties 的原因:解决xxl-sso.token.key等带点号/横线的 key 在 YAML 中的解析问题。
启动前需要确认这几项(文件中的原值如下,按你的环境替换数据源三项):
### web server.port=9080 server.servlet.context-path=/ ### xxl-job, datasource spring.datasource.url=jdbc:mysql://jeecg-boot-mysql:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai spring.datasource.username=${MYSQL-USER:root} spring.datasource.password=${MYSQL-PWD:root} spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ### xxl-sso xxl-sso.token.key=xxl_job_login_token xxl-sso.token.timeout=604800000 xxl-sso.client.excluded.paths= xxl-sso.client.login.path=/auth/login要点:
- 数据源 URL 必须指向新库
xxl_job;jeecg-boot-mysql是仓库 Docker 部署里的 MySQL 服务名,本地非容器环境要换成实际主机。 - 3.x 登录认证由
xxl-sso.*这组配置接管,其中xxl-sso.client.login.path=/auth/login是登录路径;xxl-sso.token.timeout=604800000是 token 有效期配置,文档未解释具体计算规则,保持默认即可。 - 老版本的
xxl-job, access token(xxl.job.accessToken)与xxl.job.i18n等配置在新文件中仍然保留。
关于访问地址有一个文档间差异需要说明:模块自带的 README.md 写的是http://127.0.0.1:9080/xxl-job-admin/toLogin,这是 2.x 时代的描述;UPGRADE-3.9.3.md 明确 3.9.3 中“XXL-JOB 去掉了/xxl-job-admin项目后缀”,新地址为http://localhost:9080/。以升级日志为准。
执行器侧:统一使用 xxl-job-core 3.4.2
管理端之外,业务服务里的执行器也要同步升级。UPGRADE-3.9.3.md 的“升级注意事项”第 2 条:确保jeecg-boot-starter-job模块排除旧版xxl-job-core,统一使用 3.4.2。
管理端模块自身的依赖(见 jeecg-cloud-xxljob/pom.xml)已经引入xxl-job-core3.4.2、xxl-sso-core2.4.0 和xxl-tool2.5.0,这部分无需改动,只需要按上述要求处理业务侧的jeecg-boot-starter-job。
另外,3.x 引入了新的执行器注册和发现机制,JeecgXxlJobSpringExecutor已做适配以支持@Bean方法上的@XxlJob注解扫描,升级后原有基于@XxlJob的任务定义方式保持不变。
启动并验证登录
- 启动管理端:运行 XxlJobAdminApplication。Docker 部署时对应 Dockerfile 会构建
jeecg-cloud-xxljob-3.9.3.jar并监听 9080 端口。 - 浏览器访问新地址
http://localhost:9080/。 - 使用 UPGRADE-3.9.3.md 给出的默认账号
admin/123456登录。
登录成功即说明两件事都完成了:新库结构可用(xxl_job_user表按 3.x 结构建好并含有 SHA-256 密码的管理员记录),xxl-sso认证框架接管了登录流程。登录页与登录后界面中应能看到建表脚本插入的示例执行器与示例任务,可据此确认数据导入无误。
限制与边界
- 老库必须先行备份,脚本不会自动迁移数据,任务、执行器等配置全部靠手工迁移。
- 建表脚本含
DROP TABLE IF EXISTS,对旧库直接执行会先删表;脚本插入的执行器、任务、用户记录是示例数据。 - 老地址
http://localhost:9080/xxl-job-admin在 3.9.3 中已不存在,脚本或文档里如有引用需改为http://localhost:9080/。 - XXL-JOB 3.x 与 Nacos 3.x 一样不自动建表,如果同时升级了 Nacos,其建表脚本
db/tables_nacos.sql同样需要手动导入。
【免费下载链接】jeecg-boot【低代码v2.0,一句话即可生成整个系统】企业级AI低代码平台,一键生成前后端代码甚至整个系统。 AI Skills 一句话画流程、设计表单、生成报表、大屏。内置 AI应用平台涵盖:AI聊天、知识库、流程编排、MCP插件等,兼容主流大模型。引领AI低代码「Skills 生成 → 在线配置 → 代码生成 → 手工合并->AI修改」开发模式,解决 Java 项目 90% 重复工作,提高效率又不失灵活。项目地址: https://gitcode.com/GitHub_Trending/je/jeecg-boot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考