关于 YMatrix
部署数据库
使用数据库
管理集群
最佳实践
高级功能
高级查询
联邦查询
Grafana 监控
备份恢复
灾难恢复
图数据库
管理手册
性能调优
故障诊断
工具指南
系统配置参数
SQL 参考
Apache Kafka 是一个开源分布式事件流平台,它可以被当作是一个消息系统,读写流式数据,帮助发布、订阅消息;也可以用于编写可扩展的流处理应用程序,来应付实时响应的场景;还可以与数据库对接,安全的将流式数据存储在一个分布式,有副本备份,可容错的集群中。可以说,它所生产的“事件流”是信息数据传输的“中枢神经”。
如果你正打算用 Kafka 将数据写入 YMatrix 集群,请不要错过这篇文档。YMatrix 数据库支持 Kafka 无缝连接功能,可将 Kafka 数据持续自动导入到 YMatrix 表中,并支持图形化界面操作。 目前接入的数据格式可以是 CSV 和 JSON。我们将以一个最简单的例子,来介绍如何用 YMatrix 管理平台接入 Kafka 数据。
首先你需要搭建一个健康的 Kafka 环境,参照官方指南 Kafka Quickstart 即可。
现在,你已经在服务器上搭建好了 Kafka 环境,你可以通过以下命令或其他方式进入。
$ cd packages/kafka_2.13-3.2.0
然后启动 Kafka 服务并创建一个测试主题(Topic),端口号默认为 9092。
$ bin/kafka-topics.sh --create --topic csv_test --bootstrap-server localhost:9092
然后分条写入几个测试数据,以 ctrl-c 结束:
$ bin/kafka-console-producer.sh --topic csv_test --bootstrap-server localhost:9092
>1,Beijing,123.05,true,1651043583,1651043583123,1651043583123456
>2,Shanghai,112.95,true,1651043583,1651043583123,1651043583123456
>3,Shenzhen,100.0,false,1651043583,1651043583123,1651043583123456
>4,Guangxi,88.5,false,1651043583,1651043583123,1651043583123456
>^C
通过上面命令向新创建的 csv_test 写入了4条数据,分别为 4 条逗号分割的 CSV 行。 准备工作完毕,下面将介绍如何创建 Kafka 数据流来导入数据。
在浏览器里输入 MatrixUI 所在机器的 IP(默认是主节点的 IP)、端口号:
http://<IP>:8240
成功登录之后进入主界面,界面分为进程视图和任务视图,进程视图是指已开启的 MatrixGate 进程,任务视图是指所有导入数据的任务。其中,一个 MatrixGate 进程可以包含多个任务。
点击“从 Kafka 中导入数据”。

选择 Kafka 数据源。首先以 CSV 文件为例说明步骤。

首先,你可以选择已有表或新建表来作为接收 Kafka 数据的目标表。
2.1.1.1 选择已有表
在目标表栏选择已有表与数据导入模式。这里假设选择的表为 postgres 数据库 public 模式下的 test。选择后,下方会列出该表的表结构(字段名、类型、是否允许为 NULL、是否自增),供核对字段。
数据导入模式决定重复数据的处理方式,按目标表的约束情况选择:

2.1.1.2 选择新建表
新建表,这里假设模式为 public,表名为 test1。
新建表时先选择表类型:
新建表不需要在这一步定义表结构,字段名与类型在第 3 步「映射」中通过自动映射或手动编辑确定。导入模式只支持「更新插入」和「直接插入」两种。
选择「分区表」时,下方会出现自动分区设置:

选择「非分区表」时不涉及自动分区:

建表成功,出现红色的新建标识。

为其选择数据导入模式及自动分区策略。此处分区策略默认采用 auto_partitioning。非分区表只选择数据导入模式,不涉及自动分区策略。

目标表选择完成后,第二步设置源数据的连接。你需要完成以下操作,才可以正确地进入下一步:

地址与认证信息可以保存为「Kafka 配置」反复使用:填写完成后点击「保存为配置」,输入配置名称并保存;之后创建数据流时可直接选用已保存的配置,界面会显示「正在使用配置:<配置名称>」,需要临时改动时点「改用手工配置」。删除配置不会影响已经创建的数据流。

认证方式选择 GSSAPI 时,需要上传 keytab 与 Kerberos 文件:

如果 GSSAPI 连接失败,可以检查认证区域里的 DisablePAFXFAST 选项:开启后不使用 GSSAPI 的快速认证(PAFXFAST),部分 Kerberos 环境需要关闭快速认证才能连上。
第三步配置样例数据,并映射已有表或新建表以导入 Kafka 数据。
2.1.3.1 基本配置
选择 CSV 源数据格式,并指定或配置样例数据。你需要指定或手动配置样例数据格式,以保证映射的准确。

在配置样例数据时,你可以从主题中选择也可以直接编辑数据。
直接编辑数据,按照目标表的字段结构给予我们一条样例数据。该样例数据只用于字段结构的解析与映射,不会被导入到目标表中。
注意!
使用图形化界面新创建的表,默认使用 MARS3 存储引擎。更多相关信息请见 MARS3
2.1.3.2 执行映射
简单地映射配置完成后,进行源数据字段与目标表字段的映射。此步骤已有表与新建表的操作有差异。
映射已有表
首先选择一条样例数据,再在映射关系中找到对应的目标字段,设置好之后点击保存,即可建立一条映射关系。

也可以直接一键自动映射,便捷的同时也保持映射的正确性。从 6.8.4 开始,自动映射生成的字段名会去掉多余的下划线,可读性更好。

自动映射完成后,映射关系会逐列显示输出值,可随时「清空」或「编辑」:

映射新建表
新建表除建立映射规则外,还需注意以下设置:
当源字段值为 UNIX 时间戳且目标字段类型选择为 timestamptz 时,输出值右侧会显示复选框存储为 timestamp,勾选此框,输出值结果会自动转换为数据库的 timestamp 格式。

映射规则保存完之后,还需要确认「设备 ID(唯一标识)」与「时间列」两个设置:
timestamptz);非分区表不需要选择时间列。
新建表的映射页比已有表多出「设备 ID(唯一标识)」一列:

最后,确认数据流所有的配置信息,有误返回修改,无误则提交。
2.1.4.1 已有表
页面展示了数据流所有的配置信息,确认信息后点击“提交”按钮。

2.1.4.2 新建表
比已有表更多地显示了唯一标识信息:分区表是「设备 ID + 时间列」的组合;非分区表不显示唯一标识信息。确认信息后点击“提交”按钮。

6.8.4 的提交页还会显示目标表的表类型与导入模式:

不论是已有表还是新建表,提交成功后都会进入到创建成功提示页面,到此 Kafka 数据流已成功创建。

这里主要描述与 CSV 格式接入的差异,集中在映射步骤。
首先,选择 JSON 数据格式并配置样例数据。

其次,JSON 列的索引使用 $["列名"] 的语义来索引,索引规则参照 JSONPath。
最后,JSON 数据支持多层级嵌套,YMatrix 支持选择不同层级的源数据字段创建映射规则。点击样例数据栏中 ⊕ 展开嵌套层级。

当你使用 YMatrix 图形化界面创建 Kafka 数据流后,数据会持续导入 YMatrix。如因服务调试等原因需要临时中断导入,可以在图形化界面中暂停或停止任务,之后恢复或启动。
对于运行中的 Kafka 数据流,可以从进程视图和任务视图两个入口管理导入:进程视图按 MatrixGate 进程管理其下的所有任务,任务视图按单个任务管理。
注意!
启停与暂停操作可能需要 1-10 秒生效,期间不要对该数据流进行其他操作。暂停或停止完成后,Kafka 数据停止导入;恢复或启动后数据流立即恢复导入,页面将在最多 5 秒后恢复显示最新的导入信息。
进程视图按 MatrixGate 进程列出主机名、PID、类型、任务状态、吞吐和创建/退出时间;已退出的进程仍保留在列表中。

操作列的「查看」进入该进程的详情页,包含「性能」「活跃任务」「基本信息」三个标签:

列表行的「···」管理该进程下的所有任务,并可从列表中清除进程记录:

操作菜单下的扩展按钮可以进行启动、重设点位、停止和移除任务操作。
任务列表默认只显示「活跃于:最近 1 小时」的任务,需要查看更早的任务时切换时间筛选。
如果需要从 Kafka 的另一个位置重新消费,例如误删数据后重新导入,或跳过积压的数据,可以对已停止的数据流重设消费点位。从 6.8.4 开始支持,可以在图形化界面的任务视图中操作,也可以使用 mxgate offset-reset 命令。
注意!
重设点位是离线操作。请先停止任务,并确认所有相关 MatrixGate 进程已退出,然后再重设点位。
注意!
重新消费遵循至少一次投递语义。请确保目标表能够处理重复数据,例如使用 UPSERT 或去重模式。
在任务视图中停止目标任务。
点击「重设点位」,在「重设消费点位」页面选择重新消费的位置:
0:100,1:200
选择「指定时刻」时,需要指定日期和时间:

点击「生成计划」查看 Topic、消费组、目标表、保留范围起点、日志末端、已消费到、重置后从、待归档删除记录数等信息,确认无误后点击「确认重设」。

重设完成后,在任务视图中启动该任务,从新的点位继续消费。
mxgate offset-reset 对一条已停止的数据流重设消费点位。命令从 -C 指定的配置文件中读取数据流配置,只用它来定位数据流,不会修改配置文件。
前置条件
指定目标位置(四种方式必须且只能指定一种)
| 参数 | 说明 |
|---|---|
--to-earliest |
重设到 Kafka 仍保留的最早点位 |
--to-latest |
重设到日志末端,跳过积压的数据 |
--to-datetime <时间> |
重设到该时刻及之后的第一条消息,时间使用带时区的 RFC3339 格式,如 2026-08-28T10:00:00+08:00 |
--to-offsets <分区:点位,...> |
按分区指定点位,如 0:100,1:200 |
选择要重设的数据流
--topic、--consumer-group、--job 只用于匹配配置文件中已有的数据流,不会覆盖或临时拼装配置。
--topic、--consumer-group、--job 精确指定其中一条。simple consumer 没有 consumer group,省略 --consumer-group。其他参数
| 参数 | 说明 |
|---|---|
-C, --config |
数据流的配置文件 |
--dry-run |
只展示计划,不修改任何数据 |
-y, --yes |
跳过交互确认,适合自动化场景 |
--output |
输出格式:text 或 json。json 只向 stdout 输出一个对象,需配合 --dry-run 或 -y 使用 |
示例:预览计划
配置文件中只有一条数据流时,不需要给出选择参数:
$ mxgate offset-reset -C mxgate.conf --to-earliest --dry-run
命令会先提示这是离线操作,然后展示计划。以下输出为示例,实际输出与现场环境相关:
offset-reset is an offline command. Before continuing, make sure that
- every mxgate instance running this flow is stopped and its process has exited;
- nothing restarts it (systemd, Kubernetes, ...) until this command has succeeded or you have recovered from its error.
Only the consumer group is checked for live members; a simple consumer that is still running cannot be detected.
Offset reset plan of topic csv_test (job job_csv_to_public.demo_csv -> "public"."demo_csv", consumer group "", mode earliest):
partition kafka-oldest kafka-newest consumed-to consume-from purge-rows
0 0 4 3 0 1
dry-run: nothing has been changed
计划中每行对应一个分区:kafka-oldest 与 kafka-newest 是 Kafka 保留的点位范围,consumed-to 是当前已消费到的位置,consume-from 是重设后开始消费的位置,purge-rows 是本次重设将从消费进度中移除的记录数。
示例:执行重设
配置文件中有多条数据流时,用选择参数指定一条,-y 跳过交互确认:
$ mxgate offset-reset -C mxgate.toml \
--topic orders \
--consumer-group mxgate-orders \
--job j_orders \
--to-offsets '0:100' \
-y
执行与恢复
--to-offsets 恢复参数。此时按提示完成恢复,在确认 Kafka 位点已对齐前不要启动该数据流。影响范围
reset_id 关联查询。