XXLJOB从2.2.0升级到3.0.0原创
2.2.0与3.0.0版本差异:新增字段与常见问题解决方案
在从2.2版本升级到3.0版本时,需要进行一些数据库表的结构更新,并解决升级过程中可能遇到的常见问题。本文将详细介绍如何通过SQL语句更新数据库表结构,新增字段,并解决相关问题。
1. 添加新字段到相关表
1.1 下载最新版本的代码
先到gitbug下载最新版本的代码
https://github.com/xuxueli/xxl-job/releases/tag/3.0.0
1.2 变更3.0.0需要的 表,新版本增加了不少字段,xxl_job_log直接删了重建
ALTER TABLE `xxl_job_info`
ADD COLUMN `schedule_type` varchar(50) NOT NULL DEFAULT 'NONE' COMMENT '调度类型',
ADD COLUMN `schedule_conf` varchar(128) DEFAULT NULL COMMENT '调度配置,值含义取决于调度类型',
ADD COLUMN `misfire_strategy` varchar(50) NOT NULL DEFAULT 'DO_NOTHING' COMMENT '调度过期策略';
-- 添加到 xxl_job_log_report 表
ALTER TABLE `xxl_job_log_report`
ADD COLUMN `update_time` datetime DEFAULT NULL;
-- 添加到 xxl_job_group 表
ALTER TABLE `xxl_job_group`
ADD COLUMN `update_time` datetime DEFAULT NULL;
-- 添加到 xxl_job_registry 表(新字段,而不是修改现有字段)
ALTER TABLE `xxl_job_registry`
ADD COLUMN `address_list` text COMMENT '执行器地址列表,多地址逗号分隔';
ALTER TABLE `xxl_job_log` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `xxl_job_registry` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
drop table xxl_job_log;
CREATE TABLE `xxl_job_log`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`job_group` int(11) NOT NULL COMMENT '执行器主键ID',
`job_id` int(11) NOT NULL COMMENT '任务,主键ID',
`executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,本次执行的地址',
`executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
`executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数',
`executor_sharding_param` varchar(20) DEFAULT NULL COMMENT '执行器任务分片参数,格式如 1/2',
`executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数',
`trigger_time` datetime DEFAULT NULL COMMENT '调度-时间',
`trigger_code` int(11) NOT NULL COMMENT '调度-结果',
`trigger_msg` text COMMENT '调度-日志',
`handle_time` datetime DEFAULT NULL COMMENT '执行-时间',
`handle_code` int(11) NOT NULL COMMENT '执行-状态',
`handle_msg` text COMMENT '执行-日志',
`alarm_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败',
PRIMARY KEY (`id`),
KEY `I_trigger_time` (`trigger_time`),
KEY `I_handle_code` (`handle_code`),
KEY `I_jobid_jobgroup` (`job_id`,`job_group`),
KEY `I_job_id` (`job_id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4;
1.3 启动xxl-job-admin服务
因为3.0.0使用的是jdk17,注意修改环境
如果你对老版本的源码修改过,记得在高版本里也做同样的修改,这里就不赘述了
2. 说一说我遇到了那些问题
2.1 问题1 调度类型和执行时间换字段了,所以需要使用这个sql变更一下
UPDATE xxl_job_info SET schedule_conf = job_cron, schedule_type = 'CRON';
2.1 问题2 回调日志状态有问题即使任务成功执行结果里也没状态
所以干脆直接重建日志表