十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

DolphinScheduler 数据源配置避坑指南:从元数据库到数据源中心的完整实操

DolphinScheduler 数据源配置避坑指南:从元数据库到数据源中心的完整实操 DolphinScheduler 数据源配置避坑指南从元数据库到数据源中心的完整实操【免费下载链接】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你的第一个任务是把 MySQL 业务库接进去。但在接上第一个数据源之前有一个容易忽略的事实数据源配置其实是两层——一层是给调度系统自己用的元数据库工作流定义、任务实例、用户权限都存在里面另一层是你在界面上操作的数据源中心存的是业务任务要连的库。本文按先跑起来、再接业务库、最后上生产的顺序把这两层从零配完并标出每一步最容易踩的坑。1. 先分清元数据库和数据源中心很多排查混乱的根源是把这两层搞混了服务起不来多半是元数据库没配好任务里的 SQL 任务连不上库多半是数据源中心的配置或驱动有问题。对比项元数据库数据源中心存什么工作流定义、任务实例、调度计划、用户与权限业务库的连接信息IP、端口、账号等谁来连DolphinScheduler 各进程api / master / worker你的业务任务SQL、数据同步等怎么配环境变量 JDBC 驱动 初始化表结构界面上建条目并测试连接不配会怎样服务无法正常启动或数据不持久依赖该数据源的任务执行失败元数据库目前支持MySQL和PostgreSQL两种Standalone 模式额外内置了一个 H2只适合试玩。数据源中心支持的类型则多得多见第 3 节。元数据库里长什么样核心表都以t_ds_为前缀数据源的连接信息就落在t_ds_datasource表中2. 按部署模式分两条线配置元数据库两条线的差别只在一点Standalone 默认用 H2需要先搬家到 MySQL分布式部署一开始就要建外部库。2.1 Standalone 线把默认的 H2 换成 MySQLStandalone 模式开箱即用默认数据落在 H2 里——服务一停工作流定义、执行记录全部清零。试玩无所谓正式使用必须换出去。放驱动下载 mysql-connector-java 驱动建议 8.0.16 及以上版本放到standalone-server/libs/standalone-server/目录下。 ✅ 验证ls能看到 jar 文件且文件名带版本号。设环境变量把{address}、{user}、{password}换成真实值export DATABASEmysql export SPRING_PROFILES_ACTIVE${DATABASE} export SPRING_DATASOURCE_URLjdbc:mysql://{address}/dolphinscheduler?useUnicodetruecharacterEncodingUTF-8useSSLfalse export SPRING_DATASOURCE_USERNAME{user} export SPRING_DATASOURCE_PASSWORD{password}✅ 验证echo $SPRING_DATASOURCE_URL输出完整 JDBC 串没有残留花括号占位符。启动并确认数据落库启动 standalone-server建一个测试工作流然后重启服务。 ✅ 验证重启后工作流仍在且 MySQL 中dolphinscheduler库已出现t_ds_开头的表——说明数据已持久化重启不再丢失。⚠️ 警告MySQL 驱动版本有硬性要求——只要把 MySQL 当作元数据库就必须使用8.0.16 及以上版本的驱动旧版连接会直接报错。2.2 分布式线建库、授权、设环境变量、初始化分布式部署没有 H2 兜底顺序是建库并授权 → 配环境变量 → 初始化表结构按这个顺序走就不会回头。2.2.1 创建元数据库并授权MySQL 5.6 / 5.7一条 GRANT 同时完成建用户与授权CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; -- 替换 {user} 和 {password} 为实际值 GRANT ALL PRIVILEGES ON dolphinscheduler.* TO {user}% IDENTIFIED BY {password}; GRANT ALL PRIVILEGES ON dolphinscheduler.* TO {user}localhost IDENTIFIED BY {password}; FLUSH PRIVILEGES;MySQL 8.0GRANT ... IDENTIFIED BY已被移除必须分开建用户CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; -- 替换 {user} 和 {password} 为实际值 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;两者差异一览对比项MySQL 5.6 / 5.7MySQL 8.0建用户语法GRANT ... IDENTIFIED BY {password}一步到位CREATE USER与GRANT分两步直接拿 5.7 脚本跑正常语法报错脚本作废PostgreSQL除了建库还要改pg_hba.conf放开主机访问CREATE DATABASE dolphinscheduler; CREATE USER {user} PASSWORD {password}; ALTER DATABASE dolphinscheduler OWNER TO {user};# 替换 {user} 和 {ip} 为实际账号与 DS 集群服务器 IP 地址段 echo host dolphinscheduler {user} {ip} md5 $PGDATA/pg_hba.conf pg_ctl reload✅ 验证用{user}从计划运行 DolphinScheduler 的那台机器上mysql -u{user} -p/psql -U{user}登录成功——这一步验证的是网络和权限不是密码本身。⚠️ 警告pg_hba.conf里的{ip}要覆盖所有 DS 节点的地址段。漏配某台机器的 IP 时症状是有的节点连得上、有的连不上非常难查。2.2.2 配置元数据库环境变量在每个节点的服务启动脚本生效前设置写进/etc/profile.d或启动脚本均可MySQLexport DATABASE${DATABASE:-mysql} export SPRING_PROFILES_ACTIVE${DATABASE} export SPRING_DATASOURCE_URLjdbc:mysql://127.0.0.1:3306/dolphinscheduler?useUnicodetruecharacterEncodingUTF-8useSSLfalseserverTimezone{your_timezone} export SPRING_DATASOURCE_USERNAME{user} export SPRING_DATASOURCE_PASSWORD{password}PostgreSQLexport DATABASE${DATABASE:-postgresql} export SPRING_PROFILES_ACTIVE${DATABASE} export SPRING_DATASOURCE_URLjdbc:postgresql://127.0.0.1:5432/dolphinscheduler export SPRING_DATASOURCE_USERNAME{user} export SPRING_DATASOURCE_PASSWORD{password}✅ 验证启动任一服务日志中出现对应的数据源初始化信息且无Access denied/connection refused类报错。⚠️ 警告serverTimezone不要用CST这类模糊标识符可能导致调度时间整体偏移。明确写serverTimezoneAsia/Shanghai。 提示DATABASE与SPRING_PROFILES_ACTIVE取值必须一致mysql或postgresql前者选驱动 profile后者选 Spring 配置 profile两者错位会导致连上了错误的库这类怪现象。2.2.3 初始化元数据库表结构库是空的最后一步是让 DolphinScheduler 把表建进去bash tools/bin/upgrade-schema.sh✅ 验证脚本正常跑完后库里出现一批t_ds_前缀的表t_ds_process_definition、t_ds_task_definition、t_ds_user等表数量在百张量级。 提示这个脚本在版本升级时同样适用——升级新版本后重跑一次即可把旧库结构升级到新 schema。3. 配置数据源中心给业务任务接库3.1 支持哪些类型数据源中心按场景大致分三类具体字段以各类型文档为准类别代表类型关系型数据库MySQL、PostgreSQL、Oracle、SQL Server、DB2、达梦、OceanBase、Snowflake、Redshift 等大数据生态Hive / Impala、Spark、Kyuubi、Presto / Trino、DolphinDB分析型 / 湖仓ClickHouse、Doris、StarRocks、Databend、Hana、Vertica、Athena各类型的字段说明可以在官方文档中按库名查例如 数据源文档目录。3.2 标准创建流程进入顶部导航的Datasource数据源中心流程固定四步点Create DataSource创建数据源在下拉里选择数据源类型填写连接信息名称、IP/主机、端口、用户名、密码、库名部分类型还有 JSON 形式的 JDBC 连接参数点Test Connect测试连接——测试不通过保存按钮不会放行测试通过后点Confirm保存列表中出现该数据源条目。以 MySQL 为例的创建界面3.3 给数据源中心补 JDBC 驱动有一类数据源会测试连接必失败原因不是配置错而是驱动缺失MySQL、Oracle、SQL Server 等数据库的 JDBC 驱动与 Apache License V2 不兼容官方分发包里不带。需要手动补从官方 Maven 仓库下载对应版本的 JDBC 驱动 jar同时放入api-server/libs和worker-server/libs两个目录——前者负责测试连接后者负责任务实际执行时的连接缺一不可重启api-server和worker-server两个服务。✅ 验证重启后回到数据源中心测试连接变绿且 worker 日志中可见驱动类加载信息没有ClassNotFoundException/No suitable driver。⚠️ 警告两处要求要分清——只把某库当业务数据源用驱动版本没有强制要求把MySQL 当元数据库则必须 8.0.16 及以上版本驱动第 2.1 节。容器部署时同理把驱动挂载进上述两个服务的对应路径再重启即可。4. 上生产前自检清单 避坑速查4.1 自检清单上生产前逐条打勾缺一条都可能变成线上事故元数据库已换掉 H2MySQL / PostgreSQL 均可通过独立连接验证连通元数据库使用专用账号权限仅限dolphinscheduler库未用 root 挂生产生产链路已启用 SSL/TLSJDBC URL 中useSSL等参数与 DBA 约定一致serverTimezone写的是明确时区全集群节点配置一致连接池参数最大连接数、超时按并发量评估过未用默认值硬扛已建立元数据库的定期备份并演练过一次恢复慢 SQL 与索引有例行维护动作统计信息更新、索引优化不兼容数据源的 JDBC 驱动已放进api-server/libs与worker-server/libs版本与驱动提供方兼容升级流程中保留测试环境先跑upgrade-schema.sh验证再上生产的步骤4.2 避坑速查症状优先排查路径数据源测试连接失败1) 网络连通性telnet 端口→ 2) 账号对该库的权限 → 3) 驱动是否在api-server/libs且版本兼容测试连接通过、任务执行连不上驱动没放worker-server/libs或放完没重启 worker-server驱动放了但不生效文件是否在正确目录不是父级 libs、读权限是否正常、服务是否真的重启、启动日志有无驱动加载记录元数据库连接被拒环境变量DATABASE/SPRING_PROFILES_ACTIVE/SPRING_DATASOURCE_*是否齐全且一致PostgreSQL 再查pg_hba.conf调度时间整体偏移JDBC URL 中serverTimezone是否用了模糊时区如CST高峰期任务变慢先监控数据库指标QPS、慢查询、连接数再决定是优化慢查询还是调大连接池不要反向猜 提示完整的元数据库初始化步骤与变量说明仓库内有官方文档可对照数据源配置各业务数据源的字段与驱动要求见 数据源文档目录各类型插件实现位于 dolphinscheduler-datasource-plugin/。把这两层各自配好后DolphinScheduler 才算真正通电元数据库保它自己不丢状态数据源中心保你的任务够得着业务数据。剩下的事情——建工作流、挂调度——都是在这块地基上盖楼了。【免费下载链接】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),仅供参考
返回列表