Apache DolphinScheduler 逐步升级指南:1.3.6 至 3.2.2

0 阅读4分钟

升级1.3.6-3.2.2

一、整体步骤

  1. 版本升级路线:v1.3.6 -> v2.0.0 -> v2.0.9 -> v3.0.0 -> v3.1.8 -> v3.2.2;
  2. 下载各版本的二进制安装包:archive.apache.org/dist/dolphi…
  3. 创建各版本的数据库(mysql): dolphinscheduler_2_0_0、dolphinscheduler_2_0_9、dolphinscheduler_3_0_0、dolphinscheduler_3_1_0、dolphinscheduler_3_1_8、dolphinscheduler_3_2_2; 举例:CREATE DATABASE dolphinscheduler_3_2_2 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
  4. 解压各版本的安装包至路径:./upgrade_dolphin,修改数据库配置,执行升级脚本;
  5. 参考文档:
    1. 知乎文档:zhuanlan.zhihu.com/p/654601675
    2. 官网文档:dolphinscheduler.apache.org/zh-cn/docs/…
    3. 官网看各版本文档,本文档也写明了各个步骤的注意事项;

二、升级 v1.3.6 -> v2.0.0

  1. dump 备份数据库:原1.3.6版本的数据是dolphinscheduler:mysqldump -uroot -pmysql dolphinscheduler > .mysql_bak/dolphinscheduler.sql
  2. 导入数据:将v1.3.6备份的数据库,导入到库dolphinscheduler_2_0_0
  3. 解压安装包:tar -zxvf apache-dolphinscheduler-2.0.0-bin.tar.gz -C ./upgrade_dolphin/
  4. 修改v2.0.0源码:
    1. v1.3.6 升级 v2.0.0时,task的定义,从原有t_ds_process_definition表的process_definition_json字段的每个task拆分为新增t_ds_task_definition表的每一行
    2. 需要修改源码的几处位置,避免空指针异常:
      1. 报错举例:

共修改了4处,增加了null值判断,功能是拆分task、dependent依赖。

实际过程中可能还会有其他报错,根据升级脚本执行实际修改代码,再重新打包即可,举例:

  1. 修改后的代码:UpgradeDao.java

将打包后的 dao 文件,放置到 lib 目录下即可,附v2.0.0源代码、打包后的jar:

  • v2.0.0源代码:Apache Download Mirrors
  • 打包后的jar:dolphinscheduler-dao-2.0.0.jar
  1. 升级:
  • 修改数据库配置: 进入apache-dolphinscheduler-2.0.0-bin目录,修改conf/datasource.properties数据库配置为dolphinscheduler_2_0_0
  • 上传mysql-connector-java-8.0.16.jarlib下;
    • 执行升级脚本:sh script/upgrade-dolphinscheduler.sh,注意看过程中的报错;
    • 成功后查看 t_ds_version 表中数据版本变成 2.0.0
    • 完成升级;

三、升级 v2.0.0 -> v2.0.9

  1. dump 备份数据库:

升级后v2.0.0版本的数据dolphinscheduler_2_0_0:

mysqldump -uroot -pmysql dolphinscheduler_2_0_0 > .mysql_bak/dolphinscheduler_2_0_0.sql

  1. 导入数据:

将v2.0.0备份的数据库,导入到库dolphinscheduler_2_0_9;

  1. 解压安装包:

tar -zxvf apache-dolphinscheduler-2.0.9-bin.tar.gz -C ./upgrade_dolphin/

  1. 升级:
  • 修改数据库配置: 进入apache-dolphinscheduler-2.0.9-bin目录,修改conf/config/install_config.conf数据库配置为dolphinscheduler_2_0_9

  • 上传mysql-connector-java-8.0.16.jar到lib下;
    • 执行升级脚本:sh script/upgrade-dolphinscheduler.sh,注意看过程中的报错;
    • 成功后查看 t_ds_version 表中数据版本变成 2.0.9
    • 完成升级;

四、升级 v2.0.9 -> v3.0.0

  1. dump 备份数据库:

升级后v2.0.9版本的数据dolphinscheduler_2_0_9:

mysqldump -uroot -pmysql dolphinscheduler_2_0_9 > .mysql_bak/dolphinscheduler_2_0_9.sql

  1. 导入数据:

将v2.0.9备份的数据库,导入到库dolphinscheduler_3_0_0;

  1. 解压安装包:

tar -zxvf apache-dolphinscheduler-3.0.0-bin.tar.gz -C ./upgrade_dolphin/

  1. 升级:
  • 修改数据库配置: 进入apache-dolphinscheduler-3.0.0-bin目录,修改bin/env/dolphinscheduler_env.sh数据库配置为dolphinscheduler_3_0_0;

  • 上传mysql-connector-java-8.0.16.jar到lib下;
    • 修改数据库脚本,移除添加alert_type字段的语句:tools/sql/sql/upgrade/3.0.0_schema/mysql/dolphinscheduler_ddl.sql
    • 执行升级脚本:sh tools/bin/upgrade-schema.sh,注意看过程中的报错;
    • 成功后查看 t_ds_version 表中数据版本变成 3.0.0
    • 完成升级;

五、升级 v3.0.0 -> v3.1.0

  1. dump 备份数据库:

升级后v3.0.0版本的数据dolphinscheduler_3_0_0:

mysqldump -uroot -pmysql dolphinscheduler_3_0_0 > .mysql_bak/dolphinscheduler_3_0_0.sql

  1. 导入数据:

将v3.0.0备份的数据库,导入到库dolphinscheduler_3_1_0;

  1. 解压安装包:

tar -zxvf apache-dolphinscheduler-3.1.0-bin.tar.gz -C ./upgrade_dolphin/

  1. 升级:
  • 修改数据库配置: 进入apache-dolphinscheduler-3.1.0-bin目录,修改bin/env/dolphinscheduler_env.sh数据库配置为dolphinscheduler_3_1_0

  • 上传mysql-connector-java-8.0.16.jar到lib下;
    • 修改数据库脚本,移除添加other_params_json字段的语句:tools/sql/sql/upgrade/3.1.0_schema/mysql/dolphinscheduler_ddl.sql
    • 执行升级脚本:sh tools/bin/upgrade-schema.sh,注意看过程中的报错;
    • 成功后查看 t_ds_version 表中数据版本变成 3.1.0
    • 完成升级;

六 升级 v3.1.0 -> v3.1.8

  1. dump 备份数据库:

升级后v3.1.0版本的数据dolphinscheduler_3_1_0:

mysqldump -uroot -pmysql dolphinscheduler_3_1_0 > .mysql_bak/dolphinscheduler_3_1_0.sql

  1. 导入数据:

将v3.1.0备份的数据库,导入到库dolphinscheduler_3_1_8

  1. 解压安装包:

tar -zxvf apache-dolphinscheduler-3.1.8-bin.tar.gz -C ./upgrade_dolphin/

  1. 升级:
  • 修改数据库配置:

进入apache-dolphinscheduler-3.1.8-bin目录,修改bin/env/dolphinscheduler_env.sh数据库配置为dolphinscheduler_3_1_8

  • 上传mysql-connector-java-8.0.16.jarlib下;
    • 执行升级脚本:sh tools/bin/upgrade-schema.sh,注意看过程中的报错;
    • 成功后查看 t_ds_version 表中数据版本变成 3.1.8;
    • 完成升级;

七、升级 v3.1.8 -> v3.2.2

  1. dump 备份数据库:

升级后v3.1.8版本的数据dolphinscheduler_3_1_8:

mysqldump -uroot -pmysql dolphinscheduler_3_1_8 > .mysql_bak/dolphinscheduler_3_1_8.sql

  1. 导入数据:

将v3.1.8备份的数据库,导入到库dolphinscheduler_3_2_2

  1. 解压安装包:

tar -zxvf apache-dolphinscheduler-3.2.2-bin.tar.gz -C ./upgrade_dolphin/

  1. 升级:
  • 修改数据库配置: 进入apache-dolphinscheduler-3.2.2-bin目录,修改bin/env/dolphinscheduler_env.sh数据库配置为dolphinscheduler_3_2_2

  • 上传mysql-connector-java-8.0.16.jarlib下;
    • 执行升级脚本:sh tools/bin/upgrade-schema.sh,注意看过程中的报错;
    • 成功后查看 t_ds_version 表中数据版本变成 3.2.2;
    • 完成升级;

八、后续处理

  1. 脚本依赖

修改bin/env/dolphinscheduler_env.sh脚本,datax、python等:

  1. MySQL 类型数据源处理,页面点击数据源修改会报错,原因是t_ds_datasource表中的connection_params字段格式错误,将原有的地址等信息,按照v3.2.2版本的格式调整一下,修改connection_params即可。附v3.2.2版本connection_params格式:
{"user":"root","password":"doris","address":"jdbc:mysql://127.0.0.1:9030","database":"PROD_ODS","jdbcUrl":"jdbc:mysql://127.0.0.1:9030/PROD_ODS","driverClassName":"com.mysql.cj.jdbc.Driver","validationQuery":"select 1"}