Dolphinscheduler不重启加载Oracle驱动

转载自刘茫茫看山

问题背景

某天我们的租户反馈数据库连接缺少必要的驱动,我们通过日志查看确实是缺少部分数据库的驱动,因为DolphinScheduler默认只带了Oracle和MySQL的驱动,并且需要将pom文件中的test模式去掉才可以在打包的时候引入。我们的任务量比较大,在3.0存在容错机制的情况下,重启Master和Worker时,任务会重复容错多次,对用户使用很不友好,对Yarn集群的压力也比较大,所以非必要不会重启服务,这就需要在不重启的前提下加载新的驱动包。

遇到的问题

当开始做的时候,想的过于简单,下面是Worker模块下的启动命令,libs目录后面加载的是*,所以我们认为程序肯定会自动加载jar。

file

但是当我们将jar放到对应的目录后,重启测试数据库连接,发现还是报了和之前一样的问题。

Could not load driverClass oracle.jdbc.driver.OracleDriver

我们需要了解java.class.path为什么没有将我们新添加的驱动包加载进去,于是我们找出了worker服务的进程id,并通过jinfo命令查看类路径的加载情况,发现java.calss.path对应的目录从*变成了jar包的绝对路径,我们新添加的jar的绝对路径没有在里面,所以不会读取驱动。

file

file<

DolphinScheduler 中配置 Oracle 数据库连接,需要通过修改 `dolphinscheduler_env.sh` 文件来设置数据库连接参数。该文件位于 DolphinScheduler 的 `bin/env` 目录中,用于定义数据库配置、环境变量、ZooKeeper 配置等关键参数[^1]。 ### 配置 Oracle 数据库连接 在 `dolphinscheduler_env.sh` 文件中,找到与数据库连接相关的配置部分,并修改为 Oracle 数据库的连接信息。以下是一个典型的 Oracle 数据库连接配置示例: ```bash # Database related configuration export DATABASE_TYPE=oracle export SPRING_DATASOURCE_DRIVER_CLASS_NAME=oracle.jdbc.OracleDriver export SPRING_DATASOURCE_URL=jdbc:oracle:thin:@//host:port/service_name export SPRING_DATASOURCE_USERNAME=dolphinscheduler export SPRING_DATASOURCE_PASSWORD=dolphinscheduler_password ``` - `DATABASE_TYPE`:指定数据库类型为 Oracle。 - `SPRING_DATASOURCE_DRIVER_CLASS_NAME`:Oracle JDBC 驱动类名。 - `SPRING_DATASOURCE_URL`:JDBC 连接 URL,格式为 `jdbc:oracle:thin:@//host:port/service_name`,其中 `host` 是数据库服务器地址,`port` 是监听端口,`service_name` 是 Oracle 服务名。 - `SPRING_DATASOURCE_USERNAME` 和 `SPRING_DATASOURCE_PASSWORD`:用于连接 Oracle 数据库的用户名和密码。 ### 驱动依赖配置 确保 Oracle JDBC 驱动(如 `ojdbc8.jar`)已被正确放置在 DolphinScheduler 各个模块的 `libs` 目录中,包括 `api-server/libs`、`master-server/libs`、`worker-server/libs` 和 `tools/libs` 等目录,以确保各组件能够加载数据库驱动并正常连接数据库。 ### 初始化数据库元数据 完成配置后,切换到 DolphinScheduler 的 `tools/bin` 目录,执行以下命令以初始化数据库结构: ```bash sh upgrade-schema.sh ``` 该脚本将根据配置的数据库类型(Oracle)创建所需的表结构和元数据,确保 DolphinScheduler 能够正常运行[^1]。 ### 启动单机模式服务 配置完成后,使用以下命令启动 DolphinScheduler 的 Standalone 模式: ```bash bash ./bin/dolphinscheduler-daemon.sh start standalone-server ``` 启动过程中,系统会将 `bin/env/dolphinscheduler_env.sh` 的配置覆盖到 `standalone-server/conf/dolphinscheduler_env.sh`,确保服务使用最新的配置信息[^3]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DolphinScheduler社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值