ToB企服应用市场:ToB评测及商务社交产业平台

标题: Apache DolphinScheduler 支持使用 OceanBase 作为元数据库啦! [打印本页]

作者: 飞不高    时间: 2023-8-30 20:43
标题: Apache DolphinScheduler 支持使用 OceanBase 作为元数据库啦!

DolphinScheduler是一个开源的分布式任务调度系统,拥有分布式架构、多任务类型、可视化操作、分布式调度和高可用等特性,适用于大规模分布式任务调度的场景。目前DolphinScheduler支持的元数据库有Mysql、PostgreSQL、H2,如果在业务中需要更好的性能和扩展性,可以在DolphinScheduler中使用OceanBase数据库作为元数据库进行替换。节点数量和规模可以自由调整,实现无缝扩展和缩减。
一. OceanBase数据库

OceanBase数据库是阿里巴巴自主研发的分布式关系型数据库,具有以下特点:
总之,OceanBase数据库具有高可用、高性能、强一致性等特性,适用于大规模、高并发的业务场景。
二. DolphinScheduler支持OceanBase数据源

在DolphinScheduler中使用OceanBase做数据源在调度业务上的优势:
使用OceanBase作为数据源可以带来高性能、高可靠性、高安全性和强大的扩展性,和DolphinScheduler结合使用,将会为调度业务的稳定性、可靠性、可扩展性带来更优秀的表现。
三. OceanBase具体兼容Mysql的哪些特性

四. DolphinScheduler更换为OceanBase元数据库的步骤

阿里公有云:在阿里云官网申请公有云的OceanBase实例,申请成功后可在控制台-云数据库OceanBase版-实例列表页面看到状态为运行中的实例:

进入实例可以看到数据库实例和下方的代理私网、公网地址;右上角可以新建数据库和新建账号,非超级账号需要在账号管理页面修改权限才可访问数据库,此账号和密码会作为服务内连接OceanBase数据库的数据库账号密码:

创建成功后在面板登陆数据库或使用其他数据源连接工具或使用命令行登陆数据库并执行SQL验证是否可用:



本地启动Api服务:修改dolphinscheduler-api模块配置文件中的数据库地址

本地启动Standalone服务:修改dolphinscheduler-standalone-server模块配置文件中的数据库地址
同上
服务器部署:修改 /apache-dolphinscheduler-3.1.2-bin/bin/env/dolphinscheduler_env.sh中的数据库地址


五. 切换过程中需要注意哪些事项

1.外键约束

在使用DolphinSchedulerSQL文件dolphinscheduler_mysql.sql初始化数据库时,SQL的开始会设置 SET FOREIGN_KEY_CHECKS=0 不检查外键约束,需要注意的是OceanBase社区版4.0之前是不支持DDL语句的外键约束的。例官方版本V3.1.1,
所以在这里我们要注意下OceanBase的版本兼容性。

2. 数据迁移后插入报错

报错信息如下:
报错信息
  1. Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
  2.     at com.mysql.cj.protocol.a.NativePacketPayload.readInteger(NativePacketPayload.java:398)
  3.     at com.mysql.cj.protocol.a.NativePacketPayload.readString(NativePacketPayload.java:605)
  4.     at com.mysql.cj.protocol.a.NativeServerSessionStateController$NativeServerSessionStateChanges.init(NativeServerSessionStateController.java:112)
  5.     at com.mysql.cj.protocol.a.result.OkPacket.parse(OkPacket.java:66)
  6.     at com.mysql.cj.protocol.a.NativeProtocol.readServerStatusForResultSets(NativeProtocol.java:1691)
  7.     at com.mysql.cj.protocol.a.TextResultsetReader.read(TextResultsetReader.java:116)
  8.     at com.mysql.cj.protocol.a.TextResultsetReader.read(TextResultsetReader.java:48)
  9.     at com.mysql.cj.protocol.a.NativeProtocol.read(NativeProtocol.java:1600)
  10.     at com.mysql.cj.protocol.a.NativeProtocol.readAllResults(NativeProtocol.java:1654)
  11.     at com.mysql.cj.protocol.a.NativeProtocol.sendQueryPacket(NativeProtocol.java:1000)
  12.     at com.mysql.cj.NativeSession.execSQL(NativeSession.java:666)
  13.     at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:930)
  14.     ... 157 common frames omitted
复制代码
这种情况在切换为OceanBase数据库之后在数据插入时可能会发生。初始化数据时部分数据会带着ID将数据插入表中,之后再次插入数据此时默认主键自增从0开始,这时会出现默认自增步长从10001开始的情况如下:

六. 总结

DolphinScheduler本身是一个非常强大的分布式调度系统,它可以帮助您轻松管理和调度大规模的数据任务。而当它与OceanBase结合使用时,它可以为您提供更具弹性、更安全、更可靠的数据存储方式。这种组合可以帮助您更好地解决大规模数据任务管理和调度的问题,同时提高您的工作效率和任务应用的可靠性。因此,如果您正在使用DolphinScheduler来管理和调度数据任务,强烈建议您尝试使用OceanBase作为其元数据库,让您的任务应用变得更加高效和可靠。
本文由 白鲸开源 提供发布支持!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4