TDengine 3.3.6.6 版本详解:Docker 初始化脚本、协变量预测与虚拟表/STMT 稳定性加固
2026/9/14 8:49:05 网站建设 项目流程

TDengine 3.3.6.6 版本详解:Docker 初始化脚本、协变量预测与虚拟表/STMT 稳定性加固

【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine

TDengine 3.3.6.6 于 2025-05-15 发布,是一个兼顾“新功能”与“稳定性收敛”的版本:taosAdapter 监控指标扩展、Docker 镜像初始化脚本、JDBC 订阅增强、TDgpt 协变量预测等 5 项新特性落地,同时修复了 45 个缺陷,其中虚拟表(VTABLE)、STMT 绑定写入、TMQ 订阅三条主线问题集中清理。读完本文,你可以快速判断该版本对你部署与升级路径的影响,并依据仓库中的入口脚本与配置解析源码理解每项变更的落地机制。

版本概览

本版本说明以发布记录 3.3.6.6.md 为主体,结构分为三部分:

  • 特性(5 项):taosAdapter 监控新增指标、Docker 初始化脚本、JDBC 订阅库和超级表、TDgpt 协变量预测、MQTT 接收字节数指标;
  • 优化(11 项):覆盖连接器特殊字符密码、增量备份间隔、WebSocket 行为一致性、集群授权、taosX 备份性能、参数热更新等;
  • 修复(45 项):集中在虚拟表查询/流计算、STMT/STMT2 内存安全、订阅链路、WebSocket 与 taos shell 体验、安全漏洞等方向。

特性:逐项解读与仓库佐证

1. taosAdapter 监控新增进程、连接池等指标

taosAdapter 是 TDengine 的 REST/WebSocket/多协议适配组件,默认监听 6041 端口。本版本为其 Prometheus 风格的/metrics端点补充了进程级与连接池级指标,便于在 Grafana/告警体系中观测 taosAdapter 自身的资源水位,而不仅是 taosd 的服务端指标。

从仓库的容器入口脚本 entrypoint.sh 可以看到,taosAdapter 就绪探测正是通过轮询http://localhost:6041/metrics完成的(脚本第 104~111 行:若未设置TAOS_DISABLE_ADAPTER,后台启动 taosadapter 并以/metrics接口作为存活信号)。新增的进程与连接池指标使得该探测之外的深度观测(线程、句柄、连接池复用率)成为可能。若你通过 Docker 部署文档 将 taosAdapter 拆分为独立容器甚至多副本 + Nginx 反代架构,这些新指标是判断单个 adapter 实例是否过载的关键依据。

2. Docker 镜像支持初始化脚本

本版本沿用了类 MySQL 的docker-entrypoint-initdb.d约定:镜像内预建/docker-entrypoint-initdb.d/目录(见 Dockerfile 第 80~81 行的RUN mkdir /docker-entrypoint-initdb.d),用户可将.sql文件挂载到该目录,容器首启时自动执行完成建库建表等初始化。

entrypoint.sh 中的实现细节值得注意:

  • 仅首节点执行:初始化脚本只在本容器是集群 first EP 节点时生效(FQDN == FIRST_EP_HOST),并通过数据目录下的.docker-entrypoint-inited标记文件保证幂等,重启容器不会重复执行;
  • 失败重试:每个.sql文件通过taos -f执行,若输出中出现DB error则等待 2 秒后重试,最多 5 次(脚本第 136~154 行);
  • root 密码联动:若设置了非默认的TAOS_ROOT_PASSWORD环境变量,首启时会先执行ALTER USER root PASS并写入.docker-entrypoint-root-password-changed标记,初始化 SQL 即以新密码执行;
  • 初始化后自动创建 snode:脚本最后执行create snode on dnode 1,保证订阅/消息队列能力开箱即用。

典型用法:docker run -d -v /path/init.sql:/docker-entrypoint-initdb.d/init.sql -e TAOS_ROOT_PASSWORD=yourpass -p 6041:6041 tdengine/tdengine,容器起来后初始化脚本已执行完毕。

3. JDBC 连接器支持订阅库和超级表

JDBC 连接器在本版本支持直接对“库”和“超级表”建立订阅(TMQ Consumer),此前订阅对象粒度更受限。对 Java 生态(含 Flink 等流式集成)而言,这意味着可以在不指定具体子表的情况下,按超级表维度批量消费其下所有子表的数据变更,简化了大规模子表场景下的消费者配置。该能力与 JDBC 连接器参考文档 及订阅相关文档(06-data-subscription)配合使用;本版本同时还修复了“权限更新后重启导致客户端订阅偶发失败”(修复项 23)等订阅链路问题,订阅路径整体更稳。

4. TDgpt 支持协变量分析预测

TDgpt 的 TimeSeries Foundation Model(TSFM)服务在本版本支持带协变量(exogenous/covariate)的预测:预测目标序列时可将历史及未来的关联变量作为输入,对受外部因素驱动较强的工业指标(如负荷受温度、电价影响)预测精度更友好。

从源码结构可以印证该能力的落点:TSFM 服务入口 moirai-server.py 实现了handle_covariate_forecasthandle_future_covariate_forecast两类请求处理(第 64~68 行根据请求类型分发,函数定义见第 122、173 行),分别对应“仅含历史协变量”与“含未来协变量”两种预测模式。与此同时,gpt.py、timemoe.py、timesfm.py 中的部分模型对协变量输入暂以covariate forecast is not supported yet显式报错,说明该特性以 moirai 等模型为首批支持,具体模型可用性以调用返回为准。使用方式可参考 TDgpt 教程 与 forecast 算子文档。

5. MQTT 新增接收字节数指标

MQTT 接入通道(tmqtt 库,见 source/libs/tmqtt)新增“接收字节数”指标,配合既有消息数指标,可以在监控中还原单位时间的数据流量画像,对容量规划和异常流量(设备风暴)识别有价值。

优化:11 项改进分组解读

连接器与客户端体验

  1. 所有连接器支持密码包含特殊字符——此前特殊字符密码在部分协议链路上会被误解析,影响含@/等字符的强密码使用;
  2. C WebSocket 连接报错与原生连接保持一致——WebSocket 客户端(libtaosws)错误码语义对齐原生libtaos,跨连接方式排障更一致;
  3. DBeaver 升级 JDBC 连接器——配套更新 IDE/数据库管理工具中的驱动版本;
  4. ODBC 连接器对用户名密码在 WebSocket 连接的处理、Explorer 特殊密码连通性检查(修复项 12、25 亦关联此主题)。

备份与恢复(taosX)

  1. 支持增量备份interval小于 60s,备份粒度更细;
  2. taosX 备份数据 timeout 逻辑优化;
  3. taosX 数据备份恢复性能优化。

集群与参数

  1. 两节点双副本场景的授权策略优化——小型集群授权行为更合理;
  2. 参数minReservedMemorySize支持热更新。该参数在服务端配置中注册为CFG_DYN_SERVER动态项(见 tglobal.c 第 1091 行cfgAddInt32Ex(pCfg, "minReservedMemorySize", 0, 1024, 1000000000, CFG_SCOPE_SERVER, CFG_DYN_SERVER, ...)),取值范围 0~1000000000,单位 KB,默认 0。热更新意味着调整内存预留水位时无需重启 taosd;
  3. taosX 2.x/3.x 同步任务重命名为 Query/Data Subscription,概念命名与订阅链路统一;
  4. taosBenchmark 初始化性能优化(压测工具冷启动更快)。

此外还有两项查询侧行为调整:

  • 调整超级表KEEP属性的修改逻辑(ALTER STABLE ... KEEP的约束与生效方式);
  • 超级表/数据库保留期相关变更需结合业务数据量评估,升级后建议用show databases/show stables核对。

修复:45 项按主题归纳

虚拟表(VTABLE)系列

本版本对虚拟表做了密集的问题清理,涉及查询正确性与流计算:

  • 查询虚拟表时,查询列与实体表列顺序不一致会误报 “Table Schema is old”(修复 17);源表列名相同前缀时的同类误报(修复 32);
  • 虚拟表查询不能识别数据表结构修改(修复 33);
  • 使用虚拟表时测点数量计算错误(修复 28);
  • 虚拟表上的流计算未正确触发(修复 29);
  • 数据库包含虚拟表且订阅参数snapshot=true导致 taosd crash(修复 26);
  • DROP VTABLE IF EXISTS删除不存在的虚拟表报错(修复 43);
  • SHOW CREATE TABLEDESC TABLE对复合主键错误显示为PRIMARY KEY而非COMPOSITE KEY(修复 27)。

从问题分布可以推断,虚拟表作为“逻辑视图”层的 schema 一致性(列序、前缀、结构变更传播)是本版本重点收敛的边界场景,重度使用 VTABLE 的用户应优先升级。

STMT / STMT2 绑定写入系列

预编译绑定写入(STMT/STMT2)是高频写入路径,本版本修复了多个内存安全问题:

  • STMT 写入模式下 SQL 解析失败导致内存泄漏(修复 4);
  • STMT2 多线程写入时的内存泄漏(修复 5);
  • STMT 语句多次 Prepare 导致崩溃(修复 8)及报错异常(修复 9);
  • websocket 使用 stmt2 写入数据时的死锁(修复 3);
  • taosBenchmark 自动建表 Tag 数据写入 coredump(修复 13)。

对使用 C 连接器预编译接口 的高并发写入服务,这些修复直接关系到长期运行下的内存稳定性与线程安全。

订阅(TMQ)与数据同步系列

  • 数据包含 null、none 与 value 混合项时,TMQ 同步可能导致 taosAdapter 崩溃(修复 1);
  • 订阅过程中消费者持有的 WAL 版本被 WAL 文件滚动删除导致订阅失败(修复 38);
  • 多副本间同步数据快照时,网络故障造成的重复数据传输引发查询错误(修复 22);
  • 用户权限更新后重启 taosd 导致客户端订阅偶发失败(修复 23);
  • Sparse 模式同步时 taosAdapter 中断导致数据丢失(修复 21);
  • 2.x 数据源连接断开后手动停止任务卡住(修复 20);
  • taosX 同步表重命名时表结构不一致报错(修复 45)。

这些修复覆盖了订阅链路的“断点恢复—WAL 生命周期—副本同步”关键环节,对跨版本数据迁移(2.x → 3.x)与高可用订阅部署尤为关键。

WebSocket 与 taos shell 体验

  • taos shell WebSocket 连接输入中文和中文符号乱码/异常(修复 6);
  • taosc WebSocket 连接解析taos.cfgtimezone无效(修复 7);
  • Explorer 日志中粘贴 SQL 包含不识别空白(修复 31);
  • taos shell 允许\G与分号之间有空格(修复 10)。

时序语义与查询正确性

  • timetruncate时间单位为y时导致 taosd crash(修复 14);
  • 纳秒数据库中 Interval 查询窗口个数计算错误(修复 40);
  • 含 decimal 字段的表做 tag 条件过滤可能 crash(修复 41);
  • forecast函数输入完全相同数据时部分算法报错(修复 42);
  • 在虚拟子表上创建带NOTIFY语句的流导致超级表无数据生成(修复 2);
  • Transformer 时间生成器纳秒时间戳重复(修复 34);流计算结果表未创建完整(修复 35)。

安全与升级路径

  • 引用 zlib 仓库存在 CVE-2023-45853 漏洞,已替换修复(修复 15);
  • JDBC 示例代码 CVE-2024-56337 漏洞修复(修复 16);
  • 3.3.6.2 升级到 3.3.6.3 后 taosd 无法启动的问题(修复 36)——处于该升级路径的用户务必升级到本版本或更高版本;
  • 修改时区配置参数后 taosd 无法启动(修复 37);
  • Mac 平台原生连接报 “Driver was not loaded”(修复 39);mac 下 taosBenchmark-s参数报错(修复 11)。

升级建议

  • 常规部署:3.3.6.6 为稳定性版本,从 3.3.6.x 系列升级收益明确,尤其是使用虚拟表、STMT 高并发写入、TMQ 订阅的集群;
  • 3.3.6.2 → 3.3.6.3 遗留问题:若曾出现升级后 taosd 无法启动,直接升级到 3.3.6.6 可一并解决;
  • 容器化部署:可借机启用本版本 Docker 初始化脚本能力,将建库建表、初始账号准备等步骤移入/docker-entrypoint-initdb.d/,减少运维脚本;
  • 监控体系:升级后建议同步更新 Grafana 面板,纳入 taosAdapter 新增的进程/连接池指标与 MQTT 接收字节数指标;
  • 升级验证:升级前建议完成一次全量备份(taosX/taosdump),升级后重点回归:虚拟表查询与流任务触发、订阅消费者位点恢复、含特殊字符密码的连接器连通性。

完整发布记录以 docs/zh/17-release-history/03-notes/3.3.6.6.md 为准;本文中的实现佐证涉及 容器入口脚本、Docker 构建文件、服务端配置解析 与 TDgpt TSFM 服务 等仓库文件,可继续深入查阅。

【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询