Apache DolphinScheduler 数据源配置完整指南:从元数据库到 JDBC 驱动一次讲清
【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler
Apache DolphinScheduler 是一款分布式、可视化的工作流调度系统:你在页面上画出的工作流,会被拆解成真正跑在集群里的任务。它的数据源配置其实分两个完全不同的层面:先配"系统自己用的库"(元数据库),再配"业务任务要连的库"(数据源中心)。这两件事混着做,一定会踩坑。
先分清:元数据库与数据源中心干的不是同一件事
第一次接触的人最容易把这两者搞混。先说结论:元数据库是调度系统自己的账本——工作流定义、任务实例、用户权限都存在这里;数据源中心是你业务任务的连接簿——SQL 任务、数据同步任务要读写哪个库,在这里登记。
| 元数据库 | 数据源中心 | |
|---|---|---|
| 用途 | 存工作流定义、任务实例、用户权限等系统元数据 | 存业务库的连接信息,供任务运行时取用 |
| 谁来连 | 只有调度系统自身 | SQL、数据同步等业务任务 |
| 配在哪 | 环境变量 / 集群配置,服务启动前完成 | UI 的"数据源中心"菜单,服务启动后操作 |
| 典型类型 | MySQL、PostgreSQL、H2 | Hive、Spark、ClickHouse、Oracle、SQL Server 等 |
下面按你的实际动作分三个场景讲:单机先跑通、生产落地元数据库、最后在数据源中心接业务库。
场景 A:把 Standalone 从 H2 切到 MySQL,单机快速跑通
Standalone 是 DolphinScheduler 的单机部署形态——所有角色打在一个进程里,开箱即用,但默认元数据库是 H2(一个内嵌文件库,数据写在本机文件里)。你只是想"先跑起来看看",H2 没问题;但H2 只适合试用,不要带进生产。
最小步骤三步走:
- 下载 mysql-connector-java 驱动(建议 8.0.16),放到
standalone-server/libs/standalone-server/目录下。 - 导出下面 5 个环境变量(前 4 个告诉 Spring 用哪套 profile、连哪个库,最后一个是密码)。
export DATABASE=mysql export SPRING_PROFILES_ACTIVE=${DATABASE} export SPRING_DATASOURCE_URL="jdbc:mysql://{address}/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false" export SPRING_DATASOURCE_USERNAME={user} export SPRING_DATASOURCE_PASSWORD={password}
{address}替换为你的 MySQL 地址(如127.0.0.1:3306),{user}/{password}替换为数据库账号和密码;${DATABASE}直接复用上一行的mysql,不用改。
- 启动 standalone-server。此时工作流、用户等数据直接写进 MySQL,重启服务不再丢数据。
场景 B:为生产环境建库授权,初始化元数据库表结构
选型一句话:生产环境用 MySQL 或 PostgreSQL,不要用 H2。
不同数据库的建库授权差异,看这张表就够了(MySQL 两个版本的CREATE DATABASE语句完全相同,差异都在授权环节):
| 对比项 | MySQL 5.6/5.7 | MySQL 8.0+ | PostgreSQL |
|---|---|---|---|
| 授权写法 | 直接GRANT ... IDENTIFIED BY '{password}'一步到位 | 先CREATE USER再GRANT,不再在 GRANT 里带密码 | CREATE USER {user} PASSWORD '{password}'+ALTER DATABASE ... OWNER TO |
| 额外步骤 | 无 | 无 | 向pg_hba.conf追加一行host dolphinscheduler {user} {ip} md5,再执行pg_ctl reload生效 |
以 MySQL 8.0+ 为例,建库 + 授权的完整脚本如下(PostgreSQL 的等价写法是CREATE DATABASE dolphinscheduler;+ 建用户 + 改属主,再按上表处理pg_hba.conf):
CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE USER '{user}'@'%' IDENTIFIED BY '{password}'; GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'%'; CREATE USER '{user}'@'localhost' IDENTIFIED BY '{password}'; GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'localhost'; FLUSH PRIVILEGES;
{user}/{password}替换为你的专用账号和密码;%允许任意来源连接,内网环境可改成具体网段收紧。
库建好后,用环境变量告诉各服务角色去哪找这个库。MySQL 和 PostgreSQL 两套配置只有 URL 和 profile 名不同,对照填即可:
| 环境变量 | MySQL | PostgreSQL |
|---|---|---|
DATABASE | mysql | postgresql |
SPRING_PROFILES_ACTIVE | ${DATABASE} | ${DATABASE} |
SPRING_DATASOURCE_URL | jdbc:mysql://127.0.0.1:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false | jdbc:postgresql://127.0.0.1:5432/dolphinscheduler |
SPRING_DATASOURCE_USERNAME | {user} | {user} |
SPRING_DATASOURCE_PASSWORD | {password} | {password} |
最后一步,初始化(或升级)元数据表结构,只跑一次:
bash tools/bin/upgrade-schema.sh执行后系统会自动把全部元数据表建出来,并对旧版本做结构升级。元数据库里会落下的核心表关系长这样:
场景 C:在数据源中心接入业务数据源的 5 步
支持的数据源类型一行列完:关系型(MySQL、PostgreSQL、Oracle、SQL Server)、大数据(Hive/Impala、Spark)、分析型(ClickHouse),更多类型见 UI 下拉列表。
操作压成 5 步,照做即可:
- 进入左侧菜单"数据源中心"。
- 点击"创建数据源"。
- 选择类型,填写主机、端口、账号、密码(类型不同表单略有差异,如 Spark 要填 JDBC URL 和主键分区列)。
- 点"测试连接",必须看到成功提示。
- 保存。此后任何任务引用这个数据源 ID 即可。
⚠️驱动坑,务必看:部分数据源的 JDBC 驱动(Java 读写数据库用的 jar 包,如 MySQL、Oracle、SQL Server)因与 Apache LICENSE V2 不兼容,没有随系统一起分发。你需要自行下载对应驱动 jar,放进
api-server/libs和worker-server/libs两个目录,然后重启这两个服务才生效——只放一处、或放完不重启,都会表现为"测试连接成功、任务跑的时候才报错"。另外,如果你用 MySQL 做元数据库,驱动版本必须 ≥ 8.0.16。
上线前自查:4 个维度逐条过
- 生产选型:元数据库用的是 MySQL 或 PostgreSQL,生产环境没有残留 H2
- 连接池与性能:连接池大小、超时按实际负载调过;定期对元数据库做索引维护、统计信息更新
- 安全与备份:元数据库用专用最小权限账号;开启 SSL/TLS 连接加密;已纳入定期备份
- 版本兼容:JDBC 驱动版本与当前系统版本核对过,并先在测试环境完整验证一轮
出问题先看这里:踩坑速查
| 现象 | 先查什么 | 常见原因 |
|---|---|---|
| 连接测试失败 | 网络连通性 → 账号权限 | 端口被防火墙拦、账号对目标库无权限、地址/库名写错 |
| 驱动加载异常 | 驱动 jar 位置 → 服务启动日志 | jar 没放全(api-server / worker-server 两处都要)、文件不可读、元数据库用了低版本 MySQL 驱动 |
| 性能不达预期 | 慢查询 → 连接池指标 | 元数据库缺索引、连接池过小、大结果集任务压垮库 |
配完之后:用一个最小任务验证全链路
配置完成后,建议先用一个最小的数据同步任务(一条简单 SQL 任务即可)把"元数据库 → 调度 → 数据源中心 → 业务库"整条链路跑通,确认日志无异常,再逐步接入生产工作流。哪一步卡住,回上面"踩坑速查"表对号入座。
【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考