ARTICLE DETAIL

资讯详情

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

TDengine 跨集群数据订阅实战:使用 taosExplorer 与 TMQ 实现无代码数据写入

TDengine 跨集群数据订阅实战:使用 taosExplorer 与 TMQ 实现无代码数据写入 TDengine 跨集群数据订阅实战使用 taosExplorer 与 TMQ 实现无代码数据写入【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine本指南介绍如何在 TDengine 中通过 taosExplorerWeb 图形界面与 TMQTDengine Message Queue数据订阅机制将另一个 TDengine 集群的数据实时同步到当前集群全程无需编写任何代码。你将掌握从源集群创建 Topic、复制 DSN到本集群创建TDengine 数据订阅任务、配置订阅参数、监控运行状态以及利用 DSN 多 Topic、自动建 Topic 等高级用法的完整流程。本文以 03-tmq.md 为核心展开并结合仓库中的 Topic 语法文档与 taosX 组件参考进行深入讲解。TDengine 的时序数据订阅能力TMQ允许应用程序像使用消息队列一样消费数据库中的写入数据。除了通过 编程语言 API 直接订阅TDengine 企业版还提供了 taosX 组件它封装了 TMQ 消费逻辑让你可以在 taosExplorer 中以零代码的方式创建数据订阅任务把源集群的数据持续写入本集群。本文聚焦于从另一个 TDengine 集群订阅数据到本集群这一典型场景。前置条件taosX 与 XNODE本文描述的无代码数据写入能力由 TDengine 企业版的taosX组件提供taosX 是 TDengine 企业版的核心组件提供零代码数据接入能力相关操作通过 taosExplorer 图形界面完成。在使用前需要确认以下前提已安装 TDengine 企业版软件包taosX 以服务模式运行Linux 下可通过systemctl start taosx启动Windows 下可通过sc.exe start taosx启动具体可参考 taosX 组件参考。从 3.4.0.0 版本开始taosX 使用 TSDB 作为元数据存储介质不再使用 SQLite 存储元数据且创建任务前需要先创建 XNODE详见 创建 XNODE。源集群与目标集群之间网络可达taosX 能够通过 WebSocket 或原生连接访问源集群。如果 taosX 无法直接连接到数据源所在的网络也可以先安装 taosX-Agent再由 taosX 通过 Agent 间接访问数据源。一、准备工作在源集群创建 Topic跨集群订阅的第一步是在源集群上创建订阅所需的 Topic。Topic 是 TMQ 的订阅入口可以订阅整个数据库Database、超级表Supertable或子表Subtable。本文以订阅一个名为test的数据库为例。1. 进入数据订阅页面打开源集群的 taosExplorer 界面点击左侧导航菜单中的Data Subscription数据订阅进入后点击Add New Topic添加新主题按钮。2. 添加新 Topic在弹出的对话框中输入主题名称Topic Name并选择要订阅的数据库。创建 Topic 时如果选择订阅的类型为数据库或超级表且希望同步表的增/删/改DDL操作需要开启同步 MetaWITH META选项用于数据库/超级表的迁移否则该 Topic 只会进行纯数据同步。3. 复制 Topic 的 DSN点击Create按钮完成创建返回主题列表后复制该 Topic 对应的DSNData Source Name数据源名称备用。这个 DSN 将在下一步创建订阅任务时粘贴到表单中。Topic 背后的 SQL 语法在 taosExplorer 中创建 Topic 只是图形化操作其底层对应的是 TDengine 的 SQL Topic 语法。理解这些语法有助于你判断选择哪种订阅对象以及是否需要 Meta 同步。根据 Topic 语法文档TDengine 从 v3.0.0.0 起支持三类 SQL 创建的 Topic查询类 TopicQuery Topic订阅一段 SQL 查询定义的数据流例如CREATE TOPIC power_topic AS SELECT ts, current, voltage FROM power.meters WHERE voltage 200;。查询 Topic 可包含过滤条件和标量函数但不支持聚合函数、时间窗口聚合以及DISTINCT、GROUP BY、ORDER BY、PARTITION BY、LIMIT/SLIMIT等子句。超级表 TopicSupertable Topic订阅指定超级表的全部数据语法为CREATE TOPIC [IF NOT EXISTS] topic_name [WITH META | ONLY META] AS STABLE stb_name [where_condition]。其中WITH META会额外返回建超级表及子表的语句主要用于 taosX 的超级表迁移ONLY META则只订阅元数据变化而不传输时序数据where_condition只能用标签或tbname过滤子表。数据库 TopicDatabase Topic订阅指定数据库内所有表的数据语法为CREATE TOPIC [IF NOT EXISTS] topic_name [WITH META | ONLY META] AS DATABASE db_name;。WITH META会返回库内所有超级表、子表、普通表的建表/删表/改表语句主要用于 taosX 的数据库迁移。需要注意的是TDengine 实例中 Topic 的最大数量由配置参数tmqMaxTopicNum控制默认 20。如果 Topic 不再需要可以执行DROP TOPIC [IF EXISTS] [FORCE] topic_name;删除若有消费者正在订阅需使用FORCE强制删除。二、创建订阅任务Topic 创建完成后回到目标集群即本集群通过 taosExplorer 创建订阅任务。1. 进入新增数据源页面点击左侧菜单Data Writing数据写入。点击Add Data Source新增数据源按钮。2. 输入数据源信息在表单中完成以下配置任务名称Task Name输入便于识别的任务名。任务类型选择TDengine Data SubscriptionTDengine 数据订阅。目标数据库Target Database选择数据要写入的本地数据库。Topic DSN将准备阶段复制的 DSN 粘贴到Topic DSN一栏。示例格式为tmqws://root:taosdatalocalhost:6041/topic完成上述步骤后点击Connectivity Check连通性检查按钮测试与源集群的连接是否正常。关于 DSN 格式的理解从 taosX 组件参考 可以得知taosX 使用统一的 DSN数据源名称格式描述数据源其 url-like 结构为driver[protocol]://[[username:password]host:port][/object][?p1v1[p2v2]]driver指明数据源驱动tmq表示通过数据订阅从 TDengine 获取数据ws表示通过 WebSocketREST 接口获取数据如果不带ws则表示使用原生连接此时 taosx 必须安装在与源集群同网络可达的服务器上username:password为源集群的账号密码host:port为源集群地址与端口WebSocket 方式通常为 6041/object为具体的数据源对象可以是数据库、超级表、子表或 Topic 名称。因此tmqws://root:taosdatalocalhost:6041/topic的含义是通过 WebSocket 连接本地 6041 端口的 TDengine 实例使用root/taosdata账号订阅名为topic的 Topic。3. 填写订阅设置并提交任务展开订阅选项Subscribe Options按需配置以下参数后点击Submit提交订阅初始位置Start From可配置从**最早数据earliest或最晚数据latest**开始订阅默认为earliest。选择earliest意味着 Topic 中从创建或从头开始的所有数据都会被同步适合全量追平场景选择latest则只订阅任务启动后新写入的数据。超时时间Timeout设置订阅超时支持单位ms毫秒、s秒、m分钟、h小时、d天、M月、y年。订阅组 IDGroup ID用于标识一个订阅组的任意字符串最大长度为 192。同一个订阅组内的订阅者共享消费进度offset不指定时taosX 会使用随机生成的 group ID。客户端 IDClient ID用于标识客户端的任意字符串最大长度为 192。同步已落盘数据TSDB Data如启用可以同步已经落盘到 TSDB 时序数据存储文件中即不在 WAL 中的数据如关闭则只同步尚未落盘即仍保存在 WAL 中的数据。同步删表操作Table Deletions如启用则删表操作会被同步到目标数据库。同步删数据操作Data Deletions如启用则数据删除操作会被同步到目标数据库。压缩Compression启用 WebSocket 压缩支持以降低网络带宽占用适合跨机房或带宽受限的场景。确认无误后点击Submit提交按钮提交任务。配置项背后的原理初始位置与超时TMQ 的消费语义与 Kafka 高度兼容多语言订阅 API 均与 Kafka 订阅 API 保持高度兼容earliest/latest即对应 Kafka 中的auto.offset.reset语义。超时时间则约束了消费端在无新消息时的等待行为。落盘数据同步这一开关对应 TMQ 对 WALWrite-Ahead Log与 TSDB 数据文件的读取能力。TMQ 的消息推送本身基于 WAL开启同步已落盘数据后taosX 才能读取已经写入 TSDB 文件的历史数据从而完成全量增量的一致性同步。Meta 同步开启删表/删数据操作的同步配合源端 Topic 的WITH META或ONLY META选项即可实现表结构DDL与数据删除操作的跨集群复制这正是 Topic 语法文档 中描述的数据库/超级表迁移场景。三、监控任务运行情况提交任务后返回数据源Data Source页面即可查看任务状态。任务会先被加入执行队列稍后开始运行。点击View查看按钮可以监控任务的动态统计信息Current Metrics例如metrics.tmq.records已消费记录数、metrics.tmq.points已消费点数、metrics.records_per_second每秒记录数、metrics.tmq.topics订阅的 Topic 数、metrics.tmq.workers消费工作线程数等。也可以点击左侧的折叠按钮展开任务的活动Activity信息。如果任务运行异常这里会给出详细的错误说明是排查问题如连通性失败、权限不足、DSN 拼写错误的第一入口。可观测性补充taosX 监控指标在 taosX 服务模式下这些任务级指标还会通过 taosKeeper 上报并写入监控数据库。根据 taosX 组件参考TMQTDengine V3 任务相关的指标包括指标含义total_messages/messagesTMQ 累计/本次收到的消息总数total_messages_of_meta/messages_of_meta收到的 Meta 类型消息数表结构变化total_messages_of_data/messages_of_data收到的 Data 与 MetaData 类型消息数数据块total_success_blocks/success_blocks累计/本次成功写入的数据块数topics通过 TMQ 订阅的 Topic 数量consumersTMQ 消费者数量total_write_raw_fails/write_raw_fails原始元数据写入失败次数借助这些指标你可以在任务运行时快速判断消费是否跟上写入以及是否存在写目标失败。四、高级用法taosExplorer 的TDengine 数据订阅数据源还支持以下高级用法适用于多 Topic、免建 Topic、显式指定消费组等场景FROM DSN 支持多个 Topic多个 Topic 名称用逗号分隔例如tmqws://root:taosdatalocalhost:6041/topic1,topic2,topic3一个订阅任务即可同时消费多个 Topic 的数据。在 FROM DSN 中直接使用数据库/超级表/子表名称可以用数据库名称、超级表名称或子表名称代替 Topic 名称例如tmqws://root:taosdatalocalhost:6041/db1,db2,db3这种情况下不需要提前创建 TopictaosX 会自动识别出使用的是数据库名称并自动在源集群创建订阅对应数据库的 Topic。该能力对快速打通两个集群、全库搬迁的场景非常实用。FROM DSN 支持group.id参数可在 DSN 中显式指定订阅所用的 group ID例如tmqws://root:taosdatalocalhost:6041/topic?group.idmy-group不指定时taosX 会使用随机生成的 group ID。显式指定 group ID 的价值在于同一 group ID 的多个消费者或多次运行的任务可以共享消费进度便于实现故障恢复后从上次位置续传。五、从命令行模式理解同源能力虽然本文聚焦于 taosExplorer 图形化操作但理解 taosX 的命令行模式有助于你更深刻地认识 DSN 与订阅参数的本质。taosX 命令行格式为taosx -f from-DSN -t to-DSN other parameters例如通过命令行执行一次 TMQ 订阅迁移可以写作taosx run -f tmqws://root:taosdatalocalhost:6041/db1 -t taos:///db2 -v其中-f指定数据源Source DSN-t指定写入目标Sink DSN-v将日志级别设为 info-vv对应 debug-vvv对应 trace。--jobs number参数可以指定并发任务数仅支持 tmq 任务。在图形界面中创建的任务本质上就是 taosX 服务模式托管执行的同类任务二者共用同一套 DSN 语义与订阅机制。总结跨集群数据订阅是 TDengine 多集群架构下数据汇聚与容灾的常用手段。通过本文你可以看到整个过程完全在 taosExplorer 界面内完成源集群创建 Topic数据库/超级表/子表均可按需开启 Meta 同步→ 复制 DSN本集群新增TDengine 数据订阅数据源 → 粘贴 DSN → 配置初始位置、超时、group ID、client ID、落盘/删表/删数据同步与压缩等选项 → 提交任务监控通过任务列表、Current Metrics 与活动信息持续观测必要时借助 taosKeeper 的 TMQ 指标深挖进阶多 Topic 逗号分隔、直接用库名/表名免建 Topic、DSN 显式指定group.id。如需进一步了解 Topic 的 SQL 语法细节查询/超级表/数据库三类 Topic、WITH META/ONLY META、RELOAD TOPIC、消费者组管理等可继续阅读 Topic 语法文档taosX 服务配置taosx.toml、命令行参数与完整监控指标见 taosX 组件参考多语言订阅 API 的编程方式见 开发者指南·数据订阅。【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表