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_forecast与handle_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 项改进分组解读
连接器与客户端体验
- 所有连接器支持密码包含特殊字符——此前特殊字符密码在部分协议链路上会被误解析,影响含
@、/等字符的强密码使用; - C WebSocket 连接报错与原生连接保持一致——WebSocket 客户端(
libtaosws)错误码语义对齐原生libtaos,跨连接方式排障更一致; - DBeaver 升级 JDBC 连接器——配套更新 IDE/数据库管理工具中的驱动版本;
- ODBC 连接器对用户名密码在 WebSocket 连接的处理、Explorer 特殊密码连通性检查(修复项 12、25 亦关联此主题)。
备份与恢复(taosX)
- 支持增量备份
interval小于 60s,备份粒度更细; - taosX 备份数据 timeout 逻辑优化;
- taosX 数据备份恢复性能优化。
集群与参数
- 两节点双副本场景的授权策略优化——小型集群授权行为更合理;
- 参数
minReservedMemorySize支持热更新。该参数在服务端配置中注册为CFG_DYN_SERVER动态项(见 tglobal.c 第 1091 行cfgAddInt32Ex(pCfg, "minReservedMemorySize", 0, 1024, 1000000000, CFG_SCOPE_SERVER, CFG_DYN_SERVER, ...)),取值范围 0~1000000000,单位 KB,默认 0。热更新意味着调整内存预留水位时无需重启 taosd; - taosX 2.x/3.x 同步任务重命名为 Query/Data Subscription,概念命名与订阅链路统一;
- 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 TABLE与DESC 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.cfg中timezone无效(修复 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),仅供参考