共计 3895 个字符,预计需要花费 10 分钟才能阅读完成。
DolphinScheduler 是一个开源的分布式任务调度零碎,领有分布式架构、多任务类型、可视化操作、散布式调度和高可用等个性,实用于大规模分布式任务调度的场景。目前 DolphinScheduler 反对的元数据库有 Mysql、PostgreSQL、H2,如果在业务中须要更好的性能和扩展性,能够在 DolphinScheduler 中应用 OceanBase 数据库作为元数据库进行替换。节点数量和规模能够自在调整,实现无缝扩大和缩减。
一. OceanBase 数据库
OceanBase 数据库是阿里巴巴自主研发的分布式关系型数据库,具备以下特点:
- 分布式架构:OceanBase 采纳分布式架构,可程度扩大,反对 PB 级别的数据存储和解决。
- 高可用性:OceanBase 采纳分布式正本机制,实现数据的冗余备份,保障在节点故障时仍能提供可用的服务。
- 高性能:OceanBase 采纳多维度优化技术,包含数据存储、查问优化、分布式事务等方面,可大幅晋升数据库的性能。
- 强一致性:OceanBase 采纳基于 Paxos 协定的多正本一致性算法,实现强一致性的分布式事务处理。
- 兼容 SQL:OceanBase 反对规范的 SQL 语言,包含 DDL、DML 和 DQL 等命令。
- 可扩展性:OceanBase 反对在线扩容和缩容,可依据业务需要自在调整节点数量和规模。
- 安全性:OceanBase 采纳多层安全策略,包含明码加密、数据加密、访问控制等,保障数据库的安全性。
总之,OceanBase 数据库具备高可用、高性能、强一致性等个性,实用于大规模、高并发的业务场景。
二. DolphinScheduler 反对 OceanBase 数据源
在 DolphinScheduler 中应用 OceanBase 做数据源在调度业务上的劣势:
- 高性能:OceanBase 能够解决大规模数据,而且在数据存储和解决方面都采纳了多维度优化技术,所以绝对于其余数据库,其有更高的性能体现,能够疾速地解决数据。
- 高可靠性:OceanBase 是一个分布式数据库,通过多节点的数据冗余备份,当某个节点产生故障时可能主动切换,保障服务的高可靠性。
- 事务处理:如果业务须要原子性的操作,OceanBase 能够提供强一致性的分布式事务处理,从而保证数据不会呈现不统一的状况。
- 散布式调度:DolphinScheduler 本身是分布式任务调度零碎,和 OceanBase 分布式架构互相匹配,能够充分利用 Oceanbase 的分布式个性,提供更高效率的调度服务。
- 可扩展性:DolphinScheduler 和 OceanBase 都反对在线扩容和缩容,能够依据业务需要自在调整节点数量和规模,实现无缝扩大和缩减。
应用 OceanBase 作为数据源能够带来高性能、高可靠性、高安全性和弱小的扩展性,和 DolphinScheduler 联合应用,将会为调度业务的稳定性、可靠性、可扩展性带来更优良的体现。
三. OceanBase 具体兼容 Mysql 的哪些个性
- 数据类型:OceanBase 反对 MySQL 的常见数据类型,如整数、浮点数、日期和工夫、字符串等。
- SQL 语法:OceanBase 反对 MySQL 的常见 SQL 语句,如 SELECT、INSERT、UPDATE、DELETE 等命令。
- 存储引擎:OceanBase 反对 InnoDB 存储引擎,从而能够兼容 MySQL 的事务和锁定个性。
- 存储过程:OceanBase 反对 MySQL 的存储过程个性,包含存储过程、存储函数和存储触发器等。
- 工具和驱动:OceanBase 反对 MySQL 的常见工具和驱动,如 MySQL Workbench、Navicat 和 JDBC 等。
四. DolphinScheduler 更换为 OceanBase 元数据库的步骤
- 创立 OceanBase 数据源,包含主机地址、端口号、用户名、明码等信息;
阿里私有云:在阿里云官网申请私有云的 OceanBase 实例,申请胜利后可在控制台 - 云数据库 OceanBase 版 - 实例列表页面看到状态为运行中的实例:
进入实例能够看到数据库实例和下方的代理私网、公网地址;右上角能够新建数据库和新建账号,非超级账号须要在账号治理页面批改权限才可拜访数据库,此账号和明码会作为服务内连贯 OceanBase 数据库的数据库账号密码:
创立胜利后在面板登陆数据库或应用其余数据源连贯工具或应用命令行登陆数据库并执行 SQL 验证是否可用:
- 进入 OceanBase 后创立 DolphinScheduler 数据库,执行表初始化 SQL 文件:
dolphinscheduler/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_mysql.sql;
- 批改 DolphinScheduler 的配置文件,将原有的 MySQL 数据源替换成新的 OceanBase 数据源;
本地启动 Api 服务:批改 dolphinscheduler-api
模块配置文件中的数据库地址
本地启动 Standalone 服务:批改 dolphinscheduler-standalone-server
模块配置文件中的数据库地址
同上
服务器部署:批改 /apache-dolphinscheduler-3.1.2-bin/bin/env/dolphinscheduler_env.sh
中的数据库地址
- 启动 DolphinScheduler,失常拜访登陆并其余模块都可失常操作即可验证 OceanBase 元数据库连贯胜利且失常应用:
五. 切换过程中须要留神哪些事项
1. 外键束缚
在应用 DolphinSchedulerSQL 文件 dolphinscheduler_mysql.sql
初始化数据库时,SQL 的开始会设置 SET FOREIGN_KEY_CHECKS=0
不查看外键束缚,须要留神的是 OceanBase 社区版 4.0 之前是不反对 DDL 语句的外键束缚的。例官网版本 V3.1.1,
所以在这里咱们要留神下 OceanBase 的版本兼容性。
2. 数据迁徙后插入报错
报错信息如下:
报错信息
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
at com.mysql.cj.protocol.a.NativePacketPayload.readInteger(NativePacketPayload.java:398)
at com.mysql.cj.protocol.a.NativePacketPayload.readString(NativePacketPayload.java:605)
at com.mysql.cj.protocol.a.NativeServerSessionStateController$NativeServerSessionStateChanges.init(NativeServerSessionStateController.java:112)
at com.mysql.cj.protocol.a.result.OkPacket.parse(OkPacket.java:66)
at com.mysql.cj.protocol.a.NativeProtocol.readServerStatusForResultSets(NativeProtocol.java:1691)
at com.mysql.cj.protocol.a.TextResultsetReader.read(TextResultsetReader.java:116)
at com.mysql.cj.protocol.a.TextResultsetReader.read(TextResultsetReader.java:48)
at com.mysql.cj.protocol.a.NativeProtocol.read(NativeProtocol.java:1600)
at com.mysql.cj.protocol.a.NativeProtocol.readAllResults(NativeProtocol.java:1654)
at com.mysql.cj.protocol.a.NativeProtocol.sendQueryPacket(NativeProtocol.java:1000)
at com.mysql.cj.NativeSession.execSQL(NativeSession.java:666)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:930)
... 157 common frames omitted
这种状况在切换为 OceanBase 数据库之后在数据插入时可能会产生。初始化数据时局部数据会带着 ID 将数据插入表中,之后再次插入数据此时默认主键自增从 0 开始,这时会呈现默认自增步长从 10001 开始的状况如下:
六. 总结
DolphinScheduler 自身是一个十分弱小的散布式调度零碎,它能够帮忙您轻松治理和调度大规模的数据工作。而当它与 OceanBase 联合应用时,它能够为您提供更具弹性、更平安、更牢靠的数据存储形式。这种组合能够帮忙您更好地解决大规模数据工作治理和调度的问题,同时进步您的工作效率和工作利用的可靠性。因而,如果您正在应用 DolphinScheduler 来治理和调度数据工作,强烈建议您尝试应用 OceanBase 作为其元数据库,让您的工作利用变得更加高效和牢靠。
本文由 白鲸开源科技 提供公布反对!