前瞻
前面分别部署了SeaTunnel、DolphinScheduler、APISIX、JimuReport、Sqlrest、OpenMetadata、正好覆盖了数据治理的集成、调度、安全、展现、服务、治理六个核心环节。下面我按照数据治理的生命周期逻辑,为你串联一套可操作的使用教程。
使用
阶段一:元数据治理(OpenMetadata 为核心)
目标:建立统一的数据资产目录,让所有数据"可查、可懂、可信"。
1.1 接入数据源(元数据采集)
在 OpenMetadata中,你需要将核心数据源(MySQL)的元数据接入:
登录
OpenMetadataWeb UI(http://192.168.177.24:8585)进入 Settings(设置) → Services(服务) → Databases(数据库)
点击 Add New Service,选择 MySQL
-
配置连接信息:
-
Service Name: dolphinscheduler数据 -
Host and Port:192.168.177.21:3306 -
Database:dolphinscheduler(以及你所有业务库) -
Username/Password: 使用之前创建的专用账号
-
点击 Test Connection(测试连接)按钮,验证配置是否正确。通过后,点击 Save 保存服务
-
配置 Metadata Ingestion 管道,设置调度频率(如每天凌晨2点)
服务创建完成后,会进入服务详情页,我们在这里配置真正执行采集任务的 Agent。
(1) 进入代理配置:在服务详情页,点击Agents(代理)选项卡,然后点击Add Agent->Add Metadata Agent(添加元数据代理)。
(2) 配置采集范围与选项:你可以通过正则表达式来精准控制采集的范围,避免全量扫描带来的性能压力:-
Database / Schema / Table Filter Pattern:通过“包含”(Include)和“排除”(Exclude)规则,决定要采集哪些数据库、模式或表。 -
配置开关:还可以通过开关控制是否采集视图(
Include Views)、标签(Include Tags),是否开启调试日志(Enable Debug Log) 等。
(3)设定调度计划并部署:最后一步是设置采集任务何时运行。你可以选择预设的每小时、每天、每周,或创建自定义的Cron表达式,然后点击Add & Deploy。
部署成功后,这个采集任务就会按照你的调度计划自动运行了。你可以在Agents标签页查看它的运行状态和历史记录,也可以随时手动触发一次立即运行(Run)。
-
运行一次
Ingestion,OpenMetadata会自动扫描并导入所有表、列、索引等元数据
如果账号权限不够可能采集失败,比如mysql需要访问
mysql.general_log、mysql.slow_log,需要单开权限
-- 创建用户(如果已存在,请先删除或跳过此步)
CREATE USER IF NOT EXISTS 'openmetadata_user'@'%' IDENTIFIED BY 'your_strong_password';
-- 授予 OpenMetadata 对元数据库的完整权限
GRANT ALL PRIVILEGES ON openmetadata_db.* TO 'openmetadata_user'@'%';
-- ⭐ 关键步骤:授予查询 general_log 和 slow_log 的权限(用于数据血缘)
GRANT SELECT ON mysql.general_log TO 'openmetadata_user'@'%';
GRANT SELECT ON mysql.slow_log TO 'openmetadata_user'@'%';
-- 刷新权限使其生效
FLUSH PRIVILEGES;
1.2 建立业务术语表(Glossary)
进入 Governance(治理) → Glossaries(术语库)
-
创建核心术语,例如:
订单金额:定义"用户下单的实际支付金额,含税"-
活跃用户:定义"近30天有登录行为的用户"
-
将术语与具体的表和字段关联起来
可以在添加表结构是,在术语列关联术语
1.3 定义数据角色与权限
- 角色
角色主要使用管理菜单权限的。
路径:设置 → 用户角色 →添加角色
- 权限策略
OpenMetadata提供了细粒度的权限控制,你可以创建以下角色
| 角色 | 权限范围 | 适用人员 |
|---|---|---|
| Data Steward(数据管家) | 可创建术语表、添加标签、编辑所有数据资产的描述 | 数据治理负责人 |
| Data Analyst(数据分析师) | 可查看表和列、查看数据概要、查询历史,但不接触原始数据 | 业务分析师 |
| Data Engineer(数据工程师) | 可创建数据源连接、管理Ingestion管道、编辑数据血缘 | 数据开发人员 |
| Data Consumer(数据消费者) | 仅可浏览和搜索数据资产 | 业务人员、管理层 |
创建策略的路径:Settings(设置) → Roles(团队) →选择策略tab → Create Policy
1.4 建立数据血缘(Data Lineage)
OpenMetadata 支持自动捕获表、管道、仪表盘之间的数据流转关系。你可以:
- 在
OpenMetadata中查看任意一张表的Lineage(血缘关系)选项卡 - 可以看到该表从哪个源表来,经过哪些转换,又被哪些下游表或报表使用
- 这对于影响分析(某张表要改结构,会影响哪些下游)非常有用
#需要开启general_log :
mysql> SHOW VARIABLES LIKE 'general_log%';
+------------------+------------------------------------+
| Variable_name | Value |
+------------------+------------------------------------+
| general_log | OFF |
| general_log_file | /mnt/data/mysql/192-168-177-21.log |
+------------------+------------------------------------+
阶段二:数据集成与调度(SeaTunnel + DolphinScheduler)
目标:构建可编排、可监控的自动化数据管道。
2.1 在 DolphinScheduler 中使用 SeaTunnel
根据你的部署方式(Docker Compose),需要确保 DolphinScheduler Worker 容器能访问 SeaTunnel
进入UI界面
http://192.168.177.23:12345/dolphinscheduler/ui/security/environment-manage在安全中心 →环境管理添加环境,并在环境配置中添加如下:
export SEATUNNEL_HOME=/opt/seatunnel
export PATH=$SEATUNNEL_HOME/bin:$PATH

2.2 创建 SeaTunnel 数据同步任务
在 DolphinScheduler Web UI 中:
-
进入 项目管理 → 工作流定义 → 创建工作流
-
拖拽一个 SeaTunnel 任务节点到画布
配置任务参数:
-
环境选择刚才配置的
- 启动脚本选择
setunnel.sh - 部署方式选择
cluster - 自定义配置参考如下:
env {
parallelism = 4 // 并行度,提高读取写入效率
job.mode = "BATCH" // 指定为批处理模式
}
source {
Jdbc {
url = "jdbc:mysql://192.168.177.58:3306/low_code"
driver = "com.mysql.cj.jdbc.Driver"
username = "root"
password = "密码"
# 方式1: 使用 query 指定全量读取的SQL
query = "SELECT * FROM share_car_apply"
# 方式2: 使用 table_path 并配合分片以提升大表性能
# table_path = "public.源表名"
# partition_column = "id" // 分片字段,建议用主键
# split.size = 5000 // 每分片读取行数
}
}
sink {
Jdbc {
url = "jdbc:mysql://192.168.177.21:3306/data_warehouse"
driver = "com.mysql.cj.jdbc.Driver"
username = "root"
password = "密码"
#query = "INSERT INTO share_car_apply (字段1, 字段2) VALUES (?, ?)"
# 或者使用以下自动模式,让SeaTunnel生成SQL
generate_sink_sql = true
database = "data_warehouse"
table = "share_car_apply"
}
}
- 保存并上线工作流
- 设置定时调度(如每天凌晨3点全量同步)
2.3 关键集成经验
根据实际部署经验,以下几个点需要特别注意:
环境变量必须在所有 Worker 节点配置:
DolphinScheduler的任务可能分配到任意Worker,因此每个Worker都需要能访问SeaTunnel测试先行:先用
seatunnel.sh --config job.conf -m local在本地验证作业正确性,再通过DolphinScheduler调度日志查看:任务执行后,在
DolphinScheduler任务实例中点击"查看日志",会显示SeaTunnel的详细执行信息
阶段三:数据安全与流量治理(APISIX)
APISIX 的核心工作模式很简单:通过 Route(路由) 匹配请求,然后转发给 Upstream(上游服务)
目标:为所有数据服务提供统一的认证、限流、审计能力。
-
Route(路由):定义了匹配请求的规则,比如路径是/ip。
Upstream(上游):定义了实际的业务服务地址,比如httpbin.org:80。
3.1 将数据服务接入 APISIX
Sqlrest和 JimuReport都可以通过 APISIX 作为统一流量入口,提供集中式的安全管控:
在
APISIX Dashboard或通过Admin API创建路由,将/api/*转发到sqlrest服务(http://192.168.177.24:8091)将
/report/*转发到 JimuReport(http://192.168.177.24:8085)
3.2 启用关键安全插件
APISIX 提供了丰富的安全插件,可以按需启用:
| 插件 | 功能 | 配置路径 |
|---|---|---|
| key-auth | 为 API 接口增加 API Key 认证 | 路由级别启用 |
| limit-req | 限流,防止恶意刷接口 | 全局或路由级别 |
| ip-restriction | IP 黑白名单 | 限制仅内网或特定 IP 访问 |
| prometheus | 监控指标采集 | 导出请求量、延迟等指标 |
| kafka-logger | 将请求日志发送到 Kafka,用于审计分析 | 集中日志存储 |
3.3 数据脱敏与审计
参考新氧科技的实践,APISIX 可以实现敏感数据的动态脱敏:
- 通过自定义插件,对 API 响应中的手机号、身份证号等字段进行脱敏(如
138****1234) - 记录每次 API 调用的完整上下文(谁、何时、调用了什么接口、返回了什么数据),满足合规审计需求
阶段四:数据服务与报表展现(DBApi + JimuReport)
目标:将治理好的数据通过 API 和报表的形式对外提供服务。
4.1 使用 DBApi 暴露数据 API
DBApi是一个低代码的 API 生成工具,可以让业务人员直接通过 SQL暴露数据接口:
登录
DBApi(http://192.168.177.24:8520)配置数据源:连接你的
MySQL(192.168.177.22)-
创建一个
API接口:编写
SQL(如SELECT * FROM orders WHERE create_date >= #{startDate})系统自动生成
RESTful API接口地址发布后,业务系统即可通过
HTTP调用获取数据
将
DBApi的接口地址通过APISIX统一对外暴露
4.2 使用 JimuReport制作财务报表
JimuReport适合制作复杂的中国式报表:
- 登录
JimuReport(http://192.168.177.24:8085/jmreport/list),默认账号admin/123456 - 创建数据集:通过
SQL从MySQL查询数据 - 使用类
Excel设计器制作报表模板(支持复杂表头、交叉表、汇总计算) - 发布报表,通过
APISIX对外提供访问








