文档

XXLJOB自建迁移文档

更新时间:
一键部署

本文介绍如何将自建XXLJOB导入阿里云XXLJOB中,重新部署。

方案概览

XXLJOB自建迁移文档大致分为4步,如下:

  1. 云监控创建报警联系人:创建报警联系人,以接收系统健康状态和性能指标的报警信息。

  2. 从自建XXLJOB导出信息:从自建的XXL-JOB系统中导出任务信息和配置。

  3. 导入到阿里云XXLJOB:在阿里云的XXL-JOB环境中导入从自建系统中导出的任务信息。

  4. 重新部署应用:完成任务导入后,进行应用的重新部署,确保应用能够在新的环境下正常运行。

1.云监控创建报警联系人

说明

如果您已经有云监控报警联系人,则可跳过该步骤。

  1. 登录云监控:云监控报警联系人,创建联系人并配置报警(支持手机、邮箱和webhook)。

    image

  2. 创建完成后,需要点击激活才能使用,如下:

    image

2.从自建XXLJOB导出信息

目前支持的版本包括 2.2.x2.3.x2.4.x三个版本。在导出时,请选择相应的版本进行操作。

  1. 下载工具,地址:https://schedulerx3.oss-cn-hangzhou.aliyuncs.com/xxljob/xxljob-export.tar

  2. 解压工具包,在application.properties文件中进行导出配置(xxl-job数据库配置以及应用名配置)。

    image

    ### xxl-job, datasource
    datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
    datasource.username=root
    datasource.password=123456
    datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    
    #导出任务过滤条件配置项
    #过滤指定任务应用组app-name,多个以","分割(可选,不设置的情况下导出所有任务分组)
    #xxl-job.filter.app-name=xxl-job-executor-sample1,xxl-job-executor-sample2
    
    #过滤指定任务描述,包含指定字符串(可选)
    #xxl-job.filter.job-desc=test
    
    #过滤指定任务作者信息,包含指定字符串 (可选)
    #xxl-job.filter.author=test
    
    #过滤指定触发状态的任务配置,不配置时导出所有状态任务(可选)
    #xxl-job.filter.trigger-status=0
    
    #分页读取:按任务id排序,读取任务的启始位置,默认0(可选)
    #xxl-job.filter.page-start=0
    
    #分页读取:按任务id排序,读取任务的启始位置后多少行记录,默认无限大(可选)
    #xxl-job.filter.page-size=10
    
    #导出后任务默认状态值,0:禁用, 1:启用,默认为任务原始状态 (可选)
    #xxl-job.default.job-status=0
    
    #任务报警联系人云监控名字,多个以","分割 (可选)
    #xxl-job.alarm.users=张三,李四
    
    #任务报警联系通道,sms:短信, mail:邮件, phone:电话, webhook:钉钉/飞书/企业微信,多个以","分割(可选)
    #xxl-job.alarm.channel=sms,mail
    说明

    建议把云监控联系人(xxl-job.alarm.users)和报警方式(xxl-job.alarm.channel)在application.properties进行配置。

  3. 执行./start.sh $version命令运行导出操作。若不传入version,默认执行2.2.0版本。

    # sh start.sh 默认执行2.2.0版本
    sh start.sh 2.3.0

    image

  4. 执行完成后,在当前目录下获得 xxljob_version_*******.json的任务配置文件(仅Bean模式的任务配置信息)。

    image

    以2.2.0版本为例,导出格式如下:

    • 最外层结构包括versiontypekindcontent等字段,其中content为导出的具体任务内容。

    • content中,以应用app进行划分,分别导出各应用下的所有任务;其中每一个元素包括appNamejobConfigInfo两个字段。

    • jobConfigInfo是一个数组类型,其中包括在对应应用下的任务信息列表,任务信息字段包括namejobTypetimeConfig等。

    {
      "content":[
        {
          "appName":"app2",
          "description":"应用分组2",
          "jobConfigInfo":[
            {
              "attemptInterval":30,
              "contactInfoList":[
                {
                  "contactType":1,
                  "name":"张三"
                },
                {
                  "contactType":1,
                  "name":"李四"
                }
              ],
              "content":"{\"jobHandler\":\"failJobHandler\"}",
              "description":"test-job04, 负责人:cxy",
              "executeMode":"standalone",
              "jobType":"xxljob",
              "maxAttempt":0,
              "monitorConfigInfo":{
                "alarmType":"CustomContacts",
                "sendChannel":"sms,mail",
                "timeout":10
              },
              "name":"test-job04",
              "parameters":"",
              "routeStrategy":2,
              "status":0,
              "timeConfig":{
                "dataOffset":0,
                "timeExpression":"* * * 1 * ?",
                "timeType":1
              }
            },
            {
              "attemptInterval":30,
              "contactInfoList":[
                {
                  "contactType":1,
                  "name":"张三"
                },
                {
                  "contactType":1,
                  "name":"李四"
                }
              ],
              "content":"{\"jobHandler\":\"shardingJobHandler\"}",
              "description":"test-job03, 负责人:cxy",
              "executeMode":"broadcast",
              "jobType":"xxljob",
              "maxAttempt":0,
              "monitorConfigInfo":{
                "alarmType":"CustomContacts",
                "sendChannel":"sms,mail",
                "timeout":0
              },
              "name":"test-job03",
              "parameters":"",
              "routeStrategy":8,
              "status":1,
              "timeConfig":{
                "dataOffset":0,
                "timeExpression":"* * 18 * * ?",
                "timeType":1
              }
            }
          ]
        }
      ],
      "kind":"SchedulerXJobs",
      "overwrite":true,
      "type":"JSON",
      "version":"2.0"
    }

3.导入到阿里云XXLJOB

将导出后的 JSON 文件直接上传至阿里云 XXL-JOB,即可轻松完成批量任务的导入。

  1. 登录微服务引擎MSE,选择任务调度 > XXL-JOB版,进入指定XXLJOB实例,选择导入任务

    image

    image

    导入任务表单选项描述:

    • 相同任务:默认为覆盖,即当导入的任务在系统中已存在相同任务名时,直接覆盖原有任务的字段信息;若选择跳过,则跳过已存在的任务,不进行操作。

    • 是否自动创建应用:默认是,即当导入任务时,若json文件中的应用在系统中不存在,则自动创建该应用,并将该应用下的所有任务导入;若选择否,若系统中不存在对应的应用,则json文件中该应用下的所有任务都不会导入。

  2. 选择导出的任务配置文件执行导入,即可完成xxl-job任务配置信息至SchedulerX任务配置信息同步。

4.重新部署应用

  1. 进入微服务引擎MSE,选择任务调度 > XXL-JOB版,进入指定XXLJOB实例。在应用管理,单击应用的接入配置

    image

  2. 选择接入方式2,为应用增加-D参数,重启应用。

    image

  3. 接入成功后,控制台可以看到执行器数量。

    image