ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

TDengine 3.4.0.9 版本详解:订阅 TOKEN、虚拟表导入导出与 40 项修复全景

TDengine 3.4.0.9 版本详解:订阅 TOKEN、虚拟表导入导出与 40 项修复全景 TDengine 3.4.0.9 版本详解订阅 TOKEN、虚拟表导入导出与 40 项修复全景【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine本文基于官方 3.4.0.9 版本说明发布时间 2026-03-02全面解读该版本的两大新特性、七项性能与易用性优化以及 40 项问题修复并结合仓库源码与配套文档深入剖析这些变更背后的实现细节与实战影响帮助你在升级前快速评估风险、升级后准确验证效果。版本概览3.4.0.9 是 TDengine 3.4.x 系列的一个维护版本聚焦于三大方向新特性taosAdapter 订阅支持 TOKEN 认证、taosdump 支持虚拟表VTable导出导入打通了云上数据订阅与跨库元数据迁移的最后一公里性能与易用性优化海量子表场景下写入优化、虚拟表查询含tbname列性能提升、日志默认保存数量下调、supportVnodes上限调整等稳定性修复围绕流计算、权限体系、审计、taosX/Explorer 数据管道、STMT 写入等多个模块共修复 40 个问题。下文将按特性 → 优化 → 修复的脉络逐一展开并对每一项变更给出源码或文档层面的佐证方便读者按图索骥。新特性一taosAdapter 订阅支持 TOKEN变更内容在 3.4.0.9 之前通过 taosAdapter 进行数据订阅Subscription时认证方式主要依赖账号密码或传统鉴权流程3.4.0.9 起taosAdapter 订阅链路正式支持TOKEN 认证用户可以直接使用云端/平台下发的 TOKEN 建立订阅消费而无需在数据管道中暴露数据库账号口令。这一能力与 TDengine 云部署模式TSDB Cloud的接入方式保持一致。仓库中与订阅相关的功能测试工具 taossubscribe 已经同时支持本地模式与云模式两种接入# 本地部署模式账号认证 usage: taossubscribe local [-h] [--config CONFIG] [--backend] --ip IP [--show-data] [--log-level {debug,info}] [--port PORT] # 云部署模式TOKEN 认证 usage: taossubscribe cloud [-h] [--config CONFIG] [--backend] --ip IP [--show-data] [--log-level {debug,info}] --token TOKEN在云模式下--token TOKEN为必填参数对应命令示例./taossubscribe cloud -i 192.168.0.1 -t [token_character] -s其中-s/--show-data表示在控制台打印订阅消息内容并写入日志-i/--ip指向 taosAdapter 服务所在地址默认端口 6041。实战价值对于使用 taosX、Explorer 或自研管道将 TDengine 数据订阅到 Kafka、MQTT 等下游的团队TOKEN 订阅意味着认证凭据与数据库账号解耦便于在云环境或跨组织数据共享场景下做最小权限管控连接串中不再需要携带用户名/密码降低凭据泄露风险。需要说明的是TOKEN 订阅需要服务端taosAdapter 及配套组件正确配置并下发 TOKEN本地自建集群若未开启相应认证仍使用传统账号方式订阅。新特性二taosdump 支持虚拟表导出导入背景什么是虚拟表在理解本特性前先明确虚拟表VTable的概念。根据官方文档 虚拟表 的说明虚拟表是一类逻辑表不直接存储数据。查询虚拟表时TDengine 会根据虚拟表定义从一个或多个真实表或已有虚拟表中读取列数据并按时间戳对齐后生成结果。虚拟表包括三类虚拟普通表独立存在的虚拟表可直接定义列与数据源的对应关系虚拟超级表作为模板定义一组虚拟子表的公共列和标签本身不直接保存数据虚拟子表以虚拟超级表为模板创建列数据来自其他表标签可以是常量也可以引用其他表的标签。创建虚拟普通表的 SQL 骨架如下详见 虚拟表 DDL 文档CREATE VTABLE [IF NOT EXISTS] [db_name.]vtb_name ( ts_col_name timestamp, create_definition[ ,create_definition] ... ) [TAGS (vtag_def [, vtag_def] ...)] create_definition: vtb_col_name column_definition column_definition: type_name [FROM [db_name.]table_name.col_name] vtag_def: tag_name type_name const_value | tag_name type_name FROM [db_name.]table_name.tag_name跨库引用是虚拟表的核心特征虚拟表的每一列都可以来自任意数据库中的任意表例如db2的虚拟表引用db1的实体表。这直接决定了 taosdump 在备份/恢复虚拟表时必须谨慎处理库的恢复顺序。备份/恢复实现--content与ext-meta3.4.0.9 起taosdump 通过-M, --content参数支持按内容类型选择备份/恢复范围。根据 taosdump 工具文档--content的可选值如下取值说明包含内容basic默认基础数据超级表、子表、普通表及标签和时序数据ext-meta扩展元数据虚拟表、流Stream和订阅Topicallbasicext-meta以上全部ext-meta对应的备份产物包括vtb.sql虚拟表 DDL、vtags/虚拟表标签、stream.sql、topic.sql等。由于虚拟表支持跨库引用恢复时必须分两个阶段进行第一阶段先按库恢复基础数据超级表、子表、普通表及数据第二阶段在所有数据库就绪后统一执行所有库的虚拟表、流、订阅 DDLext-meta。如果含虚拟表的库先于被引用的库恢复CREATE VTABLE会因被引用的库尚不存在而失败。分阶段恢复的价值在于扩展元数据中个别对象导入失败时不会影响已经导入完成的基础数据修正问题后只需单独重跑--contentext-meta无需重新导入全部时序数据。典型命令# 备份 db1、db2 的全部内容基础数据 扩展元数据 taosdump --contentall -D db1,db2 -o /root/backup/ # 只备份基础数据默认行为等同于不写 --content taosdump -D db1,db2 -o /root/backup/ # 恢复分阶段导入 taosdump --contentbasic -i /root/backup/ taosdump --contentext-meta -i /root/backup/其他注意事项源自 taosdump 文档--contentext-meta恢复时若目标数据库不存在会先执行db.sql创建数据库老版本 avro 格式的备份目录不含vtb.sql/stream.sql/topic.sql其虚拟表在第一阶段内部单独处理ext-meta阶段会跳过并给出提示使用-W/--rename重命名数据库时虚拟表、流、订阅中的库名引用按映射表规则统一改写只要引用的库名出现在-W映射表中不论是不是当前正在恢复的库都会被正确改写。源码佐证taosdump 的虚拟表备份实现在 backupMeta.c 中关键流程如下通过查询information_schemadb_name、stable_name、type字段type为VIRTUAL_NORMAL_TABLE或VIRTUAL_CHILD_TABLE枚举库内所有虚拟表名逐个执行SHOW CREATE VTABLE语句取得虚拟表 DDL将 DDL 写入备份目录下的vtb.sql文件文件由BACK_FILE_VTBSQL常量指定并统计虚拟表数量到g_stats.vtbTotal仅保存虚拟表骨架不包含TAGS (...)部分标签另行备份到vtags/为恢复时灵活重建标签留出空间。在恢复侧restoreMeta.h 明确注释了该机制的设计约束恢复数据库扩展元数据虚拟表、流、订阅时要求基础数据库已经存在——因为跨库的流/虚拟表必须在被引用的数据库就绪后才能创建。对应地bckTypes.h 中定义了BCK_CONTENT_EXTMETA 0x2表示虚拟表 流 订阅纯 SQL、无数据文件的内容类型。优化项详解1. Explorer UI 大量优化Explorer 是 TDengine 的图形化管理界面。本版本对 Explorer 进行了大量交互与展示层面的优化配合本版本中 Explorer 侧的一批修复见下文修复章节中订阅任务连通性、备份计划、Grid 区域自适应、批量接口、SQL 转义等条目整体提升了数据管道任务的可视化运维体验。2. 海量子表存在订阅时频繁修改子表标签对数据写入的影响当一张超级表下有海量子表且这些子表同时被订阅Topic消费时频繁修改子表标签会放大对写入路径的干扰。3.4.0.9 对该场景进行了专项优化降低了标签变更对正常写入吞吐的影响。对于存在标签频繁变动 订阅消费双重负载的 IIoT 场景该优化能显著改善写入稳定性。3. 超级表模板名和子表名支持表达式计算超级表模板Stable Template与子表命名现在支持表达式计算意味着在创建子表或使用模板建表时表名可以基于表达式动态生成减少手工命名与拼接的负担。该能力与 STMT 批量写入自动建表 结合使用可进一步简化海量设备表的接入流程。4. 提升虚拟表查询含 tbname 列时的性能虚拟表查询本身不存储数据列数据来自多个源表并按时间戳对齐当查询结果中需要携带tbname列时额外的元数据解析会放大开销。本版本针对该路径做了性能优化含tbname的虚拟表查询响应更快。虚拟表查询的执行原理可参考 虚拟表查询实现解析。5. 减少默认日志保存个数为 3taosd 的日志文件默认位于logDir默认/var/log/taos见 taosd 参考手册。本版本将默认日志保存个数从原先的数值下调为3即默认最多保留 3 份滚动日志其余自动清理从而降低长期运行节点的磁盘占用。对于日志盘空间紧张的生产环境这是一项开箱即得的收益如果业务需要更长的日志留存周期用于排障仍需在升级后按需调整日志滚动策略注意自 v3.4.0.0 起取消了forceReadConfig除首次启动外不再从配置文件加载配置项参数修改需通过ALTER命令以 SQL 方式完成详见 taosd 参考手册。6. 配置参数 supportVnodes 最大值从 4096 调整为 1024supportVnodes是 dnode 上支持的 vnode 数量上限配置。本版本将其合法取值范围的上限从 4096 收紧到 1024。该变更在源码中有直接对应tglobal.c 中注册配置项时即声明取值范围为0 ~ 1024cfgAddInt32(pCfg, supportVnodes, tsNumOfSupportVnodes, 0, 1024, ...)同文件 L1888 与 L3386 分别通过TAOS_CHECK_GET_CFG_ITEM和内部配置表维护该参数。升级注意事项如果现有集群中某 dnode 配置的supportVnodes值大于 1024升级到 3.4.0.9 后该配置将超出合法范围需在升级前将其调整到 ≤1024。同时建议结合 dnode 实际资源mndVgroup.c 中记录了 dnode 的 vnode 数、supportVnodes、内存可用/使用量等状态用于容量判断合理规划单节点承载的 vnode 规模。7. CREATE XNODE TASK 报错信息优化创建 XNODE 任务时如果发生错误本版本优化了报错信息使失败原因如任务卡在 created 状态、数据长度不足等详见下文修复列表更容易被定位。Xnode 相关组件说明可参考 节点管理文档。修复项全景40 项本版本共修复 40 个问题以下按模块归类整理便于评估影响面。权限与安全10 项#修复内容说明2对特定流授予GRANT ALL权限后不生效权限校验路径修复3赋权START/STOP STREAM权限后不生效流启停权限即时生效4拥有DROP STREAM权限时仍无法删除流删除流权限校验修复5查询无权限的视图导致程序崩溃越权查询改为安全报错而非崩溃6授权ALTER VIEW权限后不生效视图修改权限校验修复7审计员查看用户完整信息失败审计角色查询权限修复10权限缺失时报错信息不明确提升错误提示可读性14未设置加密密钥时审计数据库创建操作无返回结果审计操作异常路径修复15普通用户创建普通表后未显式授权则无权限写入建表者自动获得表写入权限16将新增加密函数名改为关键字避免关键字误作内容写入关键字解析兼容修复权限相关修复与源码中的权限定义表一一对应。在 tpriv.c 中可以看到视图与流的对象级权限定义ALTER VIEW、DROP STREAM等均作为对象权限注册parser 侧 sql.y 中ALTER VIEW、DROP STREAM等权限类型被映射为对应的权限码PRIV_CM_ALTER、PRIV_CM_DROP供授权与校验使用。DROP STREAM IF EXISTS的语法支持无库上下文时允许删除由 parAstCreater.c 处理。流计算7 项#修复内容说明8流计算读取含 varchar 复合主键的表时获取时间戳触发崩溃复合主键场景稳定性修复12流计算子查询 JOIN 以_twstart等时间占位符为第一列时误报无时间戳主键时间占位符识别修复13流计算子查询含 interval 窗口时结果时间戳列设置错误窗口时间戳修复35流计算处理带主键触发表的乱序数据时合并逻辑错误乱序合并修复37滑动触发场景下sliding小于interval时扫描区间判定错误滑动窗口区间修复38max_delay触发会重置等待时间导致计算长时间未触发触发调度修复流计算是 TDengine 3.x 的重要能力相关语法与约束见 流计算语法 与 流计算使用说明。流的状态管理与启停逻辑在 mndStream.c 中实现其中流功能受许可证Grant控制grantCheck(TSDB_GRANT_STREAMS)/grantCheckExpire(TSDB_GRANT_STREAMS)在流的创建、启停、心跳等路径上均有调用对应错误码TSDB_CODE_GRANT_STREAM_EXPIRED、TSDB_CODE_GRANT_STREAM_LIMITED定义于 terror.c。taosX / Explorer / 数据管道15 项#修复内容说明1Kafka 连通性检查添加日志打印便于排障19taosX 任务 Parser 长度扩展为 48k支持更长解析内容20Explorer 订阅任务连通性检查没有返回检查超时修复21长度计算错误导致创建任务报错数据长度不足长度计算修复22使用 Agent 的数据源创建时报错Agent 数据源修复23Explorer 切换共享主题时报语法错误主题切换修复24创建 XNODE 任务卡在 created 状态任务状态机修复25Explorer Grid 区域自适应UI 适配修复26MySQL 不支持 tinyint(1)/boolean 类型数据源类型映射修复28Explorer 创建备份计划报错备份计划修复29OPCPLC 数据源查看点位列表报错点位列表修复30DataIn 任务创建成功后列表返回空任务列表刷新修复31Explorer 批量接口报错误批量接口修复32Explorer 修改任务时 SQL 未正确转义SQL 转义修复33fast-xml-parser CVE-2026-25896依赖安全漏洞升级39taosX 兼容 3.4.x information_schema 查询结果变更元数据兼容修复40被禁用用户创建新连接导致内存持续增长连接生命周期内存泄漏修复taosX数据接入/分发组件与 Explorer 共同构成 TDengine 的数据管道可视化运维体系。上述修复覆盖了任务创建、连通性检查、主题切换、数据源点位、备份计划、批量接口、SQL 转义等全链路。客户端 / STMT / 数据类型5 项#修复内容说明11macOS 下原生连接taos_query端口占用持续增加原生连接资源释放修复27STMT 写入自动建表请求未释放导致内存泄漏STMT 内存泄漏修复34xnoded 未正确判断时区导致进程意外退出时区处理修复36使用 STMT 查询 decimal 类型时触发崩溃decimal 类型修复18create xnode 时意外的错误信息报错信息修复函数与杂项3 项#修复内容说明9使用IF EXISTS语法删除角色时报错角色删除修复17timetruncate函数偶发不返回结果时间截断函数修复25Explorer Grid 区域自适应见数据管道类timetruncate是内置时间处理函数其函数节点注册位于 builtins.c函数管理测试见 functionMgtTest.cpp测试用例明确要求单位参数必须是 duration 值节点如timetruncate(ts, 1d)本版本修复了其偶发不返回结果的边界问题。升级建议与验证清单升级前检查supportVnodes参数确认集群中所有 dnode 的supportVnodes配置 ≤ 1024否则需先调整权限模型变更本版本修复了流START/STOP/DROP STREAM、视图ALTER VIEW等权限不生效问题升级后请重新验证业务账号的权限授予是否符合预期若此前因缺陷而裸奔的权限升级后可能开始真正生效日志策略默认日志保存个数已调整为 3确认日志留存需求并同步调整滚动策略依赖安全已修复 fast-xml-parser 的 CVE-2026-25896涉及 XML 解析的数据源如 OPC UA/XML 类接入建议优先升级。升级后验证虚拟表迁移执行taosdump --contentext-meta -D db1,db2 -o /root/backup/备份虚拟表/流/订阅再分阶段恢复确认vtb.sql生成与跨库引用重建正常TOKEN 订阅使用taossubscribe cloud -i ip -t token -s验证云端订阅消费权限回归以普通用户身份验证建表写入、流启停、视图修改、角色DROP ROLE IF EXISTS等操作流计算重点回归_twstart时间占位符、interval/sliding组合、带主键触发表乱序写入等场景稳定性观察 STMT 批量写入场景下的内存曲线对应 #27 内存泄漏修复以及被禁用用户连接建立后的内存占用对应 #40。总结TDengine 3.4.0.9 是一个典型的稳中求进维护版本TOKEN 订阅打通了云上数据订阅认证taosdump 虚拟表导出导入补齐了跨库元数据迁移能力40 项修复则集中在流计算、权限模型、数据管道与 STMT 写入这几条 TDengine 3.x 最核心的使用路径上。建议所有 3.4.x 用户结合上文的升级建议与验证清单规划升级窗口。【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表