Apache IoTDB 新版本发布:V2.0.7 与 V1.3.7 功能解析与升级注意事项
概览
2026 年 3 月 4 日,Apache IoTDB 同时发布了 V2.0.7 和 V1.3.7。两个版本共享了一组相同的安全加固措施,但 V1.3.7 还额外包含了大量 bug 修复和性能优化(48 个提交 vs V2.0.7 的 16 个)。
本文从实际 GitHub Release 和提交记录出发,梳理以下内容:
- 两个版本的核心变更
- RPC 地址变更 — 升级最大的坑
- 其他值得关注的改动
- 版本选择与升级建议
参考来源:Apache IoTDB 公众号发布说明、V2.0.7 Release Notes、V1.3.7 Release Notes
两个版本共享的核心变更
V2.0.7 和 V1.3.7 包含相同的安全加固和配置调整:
| 变更项 | 说明 | 影响 |
|---|---|---|
| RPC 默认地址改为 127.0.0.1 | 客户端 RPC 服务默认只监听本地回环 | 集群部署必须修改配置 |
| 移除高风险 RPC 接口 | 删除存在安全隐患的 RPC 接口 | 提升安全性 |
| 移除 JEXL 函数 | 移除 Tree 模式下的内置 JEXL 函数 | 使用 JEXL 的查询需改写 |
| 内部服务绑定优化 | 内部服务绑定到 dn_internal_address 而非默认地址 | 网络分层更安全 |
| Pipe 命名检查 | 创建 Pipe 时增加命名合法性校验 | 防止非法字符导致运行时错误 |
| 分区表 TTL 删除修复 | 修复仅 DB 级别 TTL 生效且使用最大值的问题 | Tree 模式下的 TTL 行为更准确 |
RPC 地址变更:升级最大的坑
这是本次升级最需要注意的变更。
变更内容
# V2.0.6 / V1.3.6 及之前
dn_rpc_address=0.0.0.0 # 监听所有网络接口
# V2.0.7 / V1.3.7
dn_rpc_address=127.0.0.1 # 仅监听本地回环对应的 PR:#17060 Change default dn rpc address
为什么要改
这是一个 Secure by Default 设计决策。当 rpcAddress=0.0.0.0 时,数据库会监听所有网络接口(包括公网接口),在未配置防火墙的环境下存在安全风险。改为 127.0.0.1 后,用户需要显式配置才能开放外部访问。
对不同部署场景的影响
单机部署 — 无影响,本地 CLI 连接 127.0.0.1:6667 正常工作。
集群部署 — 必须修改配置,否则其他节点和远程客户端无法连接。
# 错误配置(升级后远程无法连接)
dn_rpc_address=127.0.0.1
# 正确配置(绑定实际 IP)
dn_rpc_address=192.168.1.10
dn_internal_address=192.168.1.10Docker 部署 — 容器内需要保持监听所有接口:
services:
iotdb:
image: apache/iotdb:2.0.7
environment:
- IOTDB_DN_RPC_ADDRESS=0.0.0.0常见故障现象
升级后如果出现以下错误,大概率是 RPC 地址配置问题:
Error: Connection refused从其他机器执行 ./sbin/start-cli.sh -h <目标IP> 无法连接。
排查方法:
# 检查实际监听地址
ss -tlnp | grep 6667
# 如果显示 127.0.0.1:6667,说明需要修改配置
# 如果显示 0.0.0.0:6667 或实际IP:6667,说明配置正确内部服务绑定优化
对应 PR:#16717 Bind real config address for Thrift and Raft services
此前内部 Thrift 和 Raft 服务可能绑定到默认地址(如 0.0.0.0),导致内部通信接口暴露在不必要的网络接口上。修改后,这些服务会绑定到 dn_internal_address 指定的地址,实现客户端流量与内部集群通信的网络分层:
dn_rpc_address— 客户端连接入口dn_internal_address— 集群节点间通信
移除 JEXL 函数
对应 PR:#17092 Remove built-in jexl function in tree mode
JEXL(Java Expression Language)曾用于动态执行表达式,但存在代码注入风险且使用率低。移除后,原有的 JEXL 查询需要改写:
| 原 JEXL 用法 | 替代方案 |
|---|---|
JEXL('value * 2') | 内置算术:value * 2 |
JEXL('sin(value)') | 内置函数:sin(value) |
| 复杂业务逻辑 | 自定义 UDF(Java 编译) |
升级前建议检查:
# 扫描查询日志中的 JEXL 使用
grep -i "JEXL" /path/to/query/logs/*.logV1.3.7 额外的改进
V1.3.7 除了上述共享变更外,还包含大量 bug 修复和性能优化:
内存管理改进
- 修复加载大量 TsFile 时的 GC 问题(#16853)— 改为分批加载,避免同时加载所有文件资源
- 修复 IoTConsensus 队列中的内存泄漏(#16966)
- 修复查询排序索引的内存预留问题(#16959)
- 修复 TVList 所有权转移时的内存释放异常(#16943)
查询引擎修复
- 修复 Last 查询排序问题(#16956)
- 修复 MemTable 查询 bug(#16970)
- 修复插入全 null 对齐 Tablet 并 flush 后的查询错误(#17041)
- 修复 overlap unpack 在 endTime 为哨兵值时的错误(#16993)
性能优化
- 优化 MemTable Region Scan 效率(#16891, #16979)
- 优化 DeviceViewIntoOperator 为 Pipeline 风格(#16980)
- 移除 Schema Cache 中无用的 first key(#16881)
Pipe 功能改进
- 支持 Pattern Pruning 和冗余路径移除(#17059)
- 修复批量内存对 Pipe 内存管理不可见的 bug(#16962)
- 优化 Pipe 性能,禁用部分无用逻辑(#16916)
- DataNode 首次启动时清理 Active Load 监听目录(#16854)
V2.0.6 中已修复的 CVE
以下安全漏洞已在 V2.0.6/V1.3.6 中修复(非本次版本):
- CVE-2025-12183 — 安全漏洞修复
- CVE-2025-66566 — 安全漏洞修复
- CVE-2025-11226 — 安全漏洞修复
如果你还在使用 V2.0.5/V1.3.5 或更早版本,建议直接升级到最新版本以同时获得 CVE 修复和本次安全加固。
版本选择建议
| 场景 | 推荐版本 | 理由 |
|---|---|---|
| 新项目 | V2.0.7 | 1.3.x 已停止新功能开发 |
| 1.3.x 生产环境 | V1.3.7(过渡)+ 规划迁移 2.x | 获取安全修复,同时准备迁移 |
| 需要 Table 模型 | V2.0.7 | 仅 2.x 支持 Tree + Table 双模型 |
| 需要 MATCH RECOGNIZE | V2.0.7 | 仅 2.x 支持 |
| 测试/开发环境 | V2.0.7 | 使用最新版本 |
核心建议: 1.3.x 已进入维护模式,仅接收安全和关键 bug 修复。除非有无法克服的限制,否则应该选择 2.x 或规划迁移。
升级检查清单
升级前
# 1. 检查当前 RPC 配置
grep -E "rpc_address|internal_address" conf/iotdb-conf.properties
# 2. 检查 JEXL 使用情况
grep -i "JEXL" /path/to/query/logs/*.log
# 3. 检查集群状态
./sbin/start-cli.sh
> show datanodes;
> show confignodes;
# 4. 备份配置和数据
cp -r conf/ conf.backup.$(date +%Y%m%d)
cp -r data/ data.backup.$(date +%Y%m%d)升级时
# 1. 先修改配置(集群部署必做)
vim conf/iotdb-conf.properties
# dn_rpc_address=<本机实际IP>
# dn_internal_address=<本机实际IP>
# 2. 停止服务
./sbin/stop-datanode.sh
# 3. 替换二进制文件
# 4. 启动服务
./sbin/start-datanode.sh升级后
# 1. 验证连接
./sbin/start-cli.sh -h <实际IP>
# 2. 检查集群节点状态
> show datanodes;
# 3. 检查日志
tail -100 log/iotdb.log | grep -E "ERROR|WARN"延伸阅读
- 深度解析 Apache IoTDB V2.0.7:安全加固与架构优化 — V2.0.7 架构决策深度分析
- Apache IoTDB V1.3.7 版本解析 — 1.3.x 用户的升级指南
- Apache IoTDB 从 1.3.x 迁移到 2.x 完整指南 — 迁移实战步骤