物联网时序数据存储方案:Apache IoTDB 集群部署全流程 + TimechoDB 优势解读
文章目录

Apache IoTDB 介绍

Apache IoTDB 专为物联网场景打造的高性能轻量级时序数据库,以 "设备 - 测点" 原生数据模型贴合物理设备与传感器关系,通过高压缩算法、百万级并发写入能力和毫秒级查询响应优化海量时序数据存储成本与处理效率,同时支持边缘轻量部署、云端集群扩展及边缘 - 云端协同,为工业物联网、智能城市、车联网等场景提供全生命周期的数据存储、查询与分析解决方案
✅物联网原生优化:采用 "设备 - 测点" 数据模型,完美映射物理设备与传感器关系,配合标签机制支持多维度分析,贴合物联网实际业务场景
✅极致性能表现:通过特殊编码算法实现 10:1~20:1 的高压缩率,同时支持每秒数百万条数据的并发写入和毫秒级时序查询响应,平衡存储成本与处理效率
✅全场景部署能力:轻量设计可运行于边缘设备,分布式架构支持云端集群扩展,兼容边缘 - 云端协同存储,适配从边缘到云端的全场景物联网部署需求
集群版部署指导

手动部署包括3个ConfigNode和3个DataNode的实例,即通常所说的3C3D集群
1、设置主机名
- 3台机器上分别配置主机名,设置主机名需要在目标服务器上配置
/etc/hosts
,使用如下命令
bashecho "192.168.1.3 iotdb-1" >> /etc/hosts echo "192.168.1.4 iotdb-2" >> /etc/hosts echo "192.168.1.5 iotdb-3" >> /etc/hosts
- 参数配置
bashunzip iotdb-enterprise-{version}-bin.zip cd iotdb-enterprise-{version}-bin
2、环境脚本配置
./conf/confignode-env.sh
配置
配置项 说明 默认值 推荐值 备注 MEMORY_SIZE IoTDB ConfigNode节点可以使用的内存总量 空 可按需填写,填写后系统会根据填写的数值来分配内存 修改后保存即可,无需执行;重启服务后生效
./conf/datanode-env.sh
配置
配置项 说明 默认值 推荐值 备注 MEMORY_SIZE IoTDB DataNode节点可以使用的内存总量 空 可按需填写,填写后系统会根据填写的数值来分配内存 修改后保存即可,无需执行;重启服务后生效
- 通用设置
打开通用配置文件
./conf/iotdb-system.properties
,可根据部署方式设置以下参数:
配置项 说明 192.168.1.3 192.168.1.4 192.168.1.5 cluster_name 集群名称 defaultCluster defaultCluster defaultCluster schema_replication_factor 元数据副本数,DataNode数量不应少于此数目 3 3 3 data_replication_factor 数据副本数,DataNode数量不应少于此数目 2 2 2
- ConfigNode 配置
打开ConfigNode配置文件
./conf/iotdb-system.properties
,设置以下参数
配置项 说明 默认 推荐值 192.168.1.3 192.168.1.4 192.168.1.5 备注 cn_internal_address ConfigNode在集群内部通讯使用的地址 127.0.0.1 所在服务器的IPV4地址或hostname,推荐使用hostname iotdb-1 iotdb-2 iotdb-3 首次启动后不能修改 cn_internal_port ConfigNode在集群内部通讯使用的端口 10710 10710 10710 10710 10710 首次启动后不能修改 cn_consensus_port ConfigNode副本组共识协议通信使用的端口 10720 10720 10720 10720 10720 首次启动后不能修改 cn_seed_config_node 节点注册加入集群时连接的ConfigNode 的地址,cn_internal_address:cn_internal_port 127.0.0.1:10710 第一个CongfigNode的cn_internal_address:cn_internal_port iotdb-1:10710 iotdb-1:10710 iotdb-1:10710 首次启动后不能修改
- DataNode 配置
打开DataNode配置文件
./conf/iotdb-system.properties
,设置以下参数:
配置项 说明 默认 推荐值 192.168.1.3 192.168.1.4 192.168.1.5 备注 dn_rpc_address 客户端 RPC 服务的地址 0.0.0.0 所在服务器的IPV4地址或hostname,推荐使用所在服务器的IPV4地址 iotdb-1 iotdb-2 iotdb-3 重启服务生效 dn_rpc_port 客户端 RPC 服务的端口 6667 6667 6667 6667 6667 重启服务生效 dn_internal_address DataNode在集群内部通讯使用的地址 127.0.0.1 所在服务器的IPV4地址或hostname,推荐使用hostname iotdb-1 iotdb-2 iotdb-3 首次启动后不能修改 dn_internal_port DataNode在集群内部通信使用的端口 10730 10730 10730 10730 10730 首次启动后不能修改 dn_mpp_data_exchange_port DataNode用于接收数据流使用的端口 10740 10740 10740 10740 10740 首次启动后不能修改 dn_data_region_consensus_port DataNode用于数据副本共识协议通信使用的端口 10750 10750 10750 10750 10750 首次启动后不能修改 dn_schema_region_consensus_port DataNode用于元数据副本共识协议通信使用的端口 10760 10760 10760 10760 10760 首次启动后不能修改 dn_seed_config_node 节点注册加入集群时连接的ConfigNode地址,即cn_internal_address:cn_internal_port
3、启动ConfigNode节点
先启动第一个iotdb-1的confignode, 保证种子confignode节点先启动,然后依次启动第2和第3个confignode节点
bashcd sbin ./start-confignode.sh -d #"-d"参数将在后台进行启动
- 启动 DataNode 节点
分别进入iotdb的sbin目录下,依次启动3个datanode节点:
bashcd sbin ./start-datanode.sh -d #-d参数将在后台进行启动
3、激活数据库
- 进入集群任一节点 CLI,执行获取机器码的语句
sql# Linux或MACOS系统 ./start-cli.sh # windows系统 ./start-cli.bat
- 执行以下内容获取激活所需机器码:
bashshow system info
- 系统将自动返回集群所有节点的机器码
bash+--------------------------------------------------------------+ | SystemInfo| +--------------------------------------------------------------+ |01-TE5NLES4-UDDWCMYE,01-GG5NLES4-XXDWCMYE,01-FF5NLES4-WWWWCMYE| +--------------------------------------------------------------+ Total line number = 1 It costs 0.030s
4、验证激活
在 CLI 中通过执行
show activation
命令查看激活状态,示例如下,状态显示为 ACTIVATED 表示激活成功
bashIoTDB> show activation +---------------+---------+-----------------------------+ | LicenseInfo| Usage| Limit| +---------------+---------+-----------------------------+ | Status|ACTIVATED| -| | ExpiredTime| -|2026-04-30T00:00:00.000+08:00| | DataNodeLimit| 1| Unlimited| | CpuLimit| 16| Unlimited| | DeviceLimit| 30| Unlimited| |TimeSeriesLimit| 72| 1,000,000,000| +---------------+---------+-----------------------------+
4、配置项
- confignode_address_list
名字 confignode_address_list 描述 待启动/停止的 ConfigNode 节点所在主机的 IP 列表,如果有多个需要用","分隔。 类型 String 默认值 无 改后生效方式 重启服务生效
- datanode_address_list
名字 datanode_address_list 描述 待启动/停止的 DataNode 节点所在主机的 IP 列表,如果有多个需要用","分隔。 类型 String 默认值 无 改后生效方式 重启服务生效
- ssh_account
名字 ssh_account 描述 通过 SSH 登陆目标主机的用户名,需要所有的主机的用户名都相同 类型 String 默认值 root 改后生效方式 重启服务生效
- ssh_port
名字 ssh_port 描述 目标主机对外暴露的 SSH 端口,需要所有的主机的端口都相同 类型 int 默认值 22 改后生效方式 重启服务生效
- confignode_deploy_path
名字 confignode_deploy_path 描述 待启动/停止的所有 ConfigNode 所在目标主机的路径,需要所有待启动/停止的 ConfigNode 节点在目标主机的相同目录下。 类型 String 默认值 无 改后生效方式 重启服务生效
- datanode_deploy_path
名字 datanode_deploy_path 描述 待启动/停止的所有 DataNode 所在目标主机的路径,需要所有待启动/停止的 DataNode 节点在目标主机的相同目录下。 类型 String 默认值 无 改后生效方式 重启服务生效
5、节点维护步骤
ConfigNode节点维护分为ConfigNode添加和移除两种操作,有两个常见使用场景:
- 集群扩展:如集群中只有1个ConfigNode时,希望增加ConfigNode以提升ConfigNode节点高可用性,则可以添加2个ConfigNode,使得集群中有3个ConfigNode。
- 集群故障恢复:1个ConfigNode所在机器发生故障,使得该ConfigNode无法正常运行,此时可以移除该ConfigNode,然后添加一个新的ConfigNode进入集群。
- 添加ConfigNode节点
bash# Linux / MacOS # 首先切换到IoTDB根目录 sbin/start-confignode.sh # Windows # 首先切换到IoTDB根目录 # V2.0.4.x 版本之前 sbin\start-confignode.bat # V2.0.4.x 版本及之后 sbin\windows\start-confignode.bat
参数 描述 是否为必填项 -v 显示版本信息 否 -f 在前台运行脚本,不将其放到后台 否 -d 以守护进程模式启动,即在后台运行 否 -p 指定一个文件来存放进程ID,用于进程管理 否 -c 指定配置文件夹的路径,脚本会从这里加载配置文件 否 -g 打印垃圾回收(GC)的详细信息 否 -H 指定Java堆转储文件的路径,当JVM内存溢出时使用 否 -E 指定JVM错误日志文件的路径 否 -D 定义系统属性,格式为 key=value 否 -X 直接传递 -XX 参数给 JVM 否 -h 帮助指令 否
- 首先通过CLI连接集群,通过
show confignodes
确认想要移除ConfigNode的NodeID:
bashIoTDB> show confignodes +------+-------+---------------+------------+--------+ |NodeID| Status|InternalAddress|InternalPort| Role| +------+-------+---------------+------------+--------+ | 0|Running| 127.0.0.1| 10710| Leader| | 1|Running| 127.0.0.1| 10711|Follower| | 2|Running| 127.0.0.1| 10712|Follower| +------+-------+---------------+------------+--------+ Total line number = 3 It costs 0.030s
- 然后使用SQL将ConfigNode移除,SQL命令:
bashremove confignode [confignode_id]
5、DataNode节点维护
- 集群扩容:出于集群能力扩容等目的,添加新的DataNode进入集群
- 集群故障恢复:一个DataNode所在机器出现故障,使得该DataNode无法正常运行,此时可以移除该DataNode,并添加新的DataNode进入集群
- 添加DataNode节点
bash# Linux / MacOS # 首先切换到IoTDB根目录 sbin/start-datanode.sh # Windows # 首先切换到IoTDB根目录 # V2.0.4.x 版本之前 sbin\start-datanode.bat # V2.0.4.x 版本及之后 tools\windows\start-datanode.bat
缩写 描述 是否为必填项 -v 显示版本信息 否 -f 在前台运行脚本,不将其放到后台 否 -d 以守护进程模式启动,即在后台运行 否 -p 指定一个文件来存放进程ID,用于进程管理 否 -c 指定配置文件夹的路径,脚本会从这里加载配置文件 否 -g 打印垃圾回收(GC)的详细信息 否 -H 指定Java堆转储文件的路径,当JVM内存溢出时使用 否 -E 指定JVM错误日志文件的路径 否 -D 定义系统属性,格式为 key=value 否 -X 直接传递 -XX 参数给 JVM 否 -h 帮助指令 否
- 移除DataNode节点
首先通过CLI连接集群,通过
show datanodes
确认想要移除的DataNode的NodeID:
bashIoTDB> show datanodes +------+-------+----------+-------+-------------+---------------+ |NodeID| Status|RpcAddress|RpcPort|DataRegionNum|SchemaRegionNum| +------+-------+----------+-------+-------------+---------------+ | 1|Running| 0.0.0.0| 6667| 0| 0| | 2|Running| 0.0.0.0| 6668| 1| 1| | 3|Running| 0.0.0.0| 6669| 1| 0| +------+-------+----------+-------+-------------+---------------+ Total line number = 3 It costs 0.110s
TimechoDB(based on Apache IoTDB)

TimechoDB 国产自研高性能时序数据库,核心团队源于清华大学,自主研发积累深厚,多项发明专利与顶会论文为技术支撑,通过工信部信创测评,适配信创生态,性能经 TPx - IoT 国际榜单验证达国际领先水平 ,成本把控上大幅降低存储与运维成本,借助云边协同节省网络带宽、接收端 CPU 等资源;原厂团队提供企业级技术支持与可视化工具,提升使用便捷性;超 40 项国产 CPU、OS 兼容认证,集成多类大数据系统,构建稳定全流程方案,助力各行业高效运用时序数据
✅端边云数据协同:支持设备端、边缘、云端数据高效流转,适配多场景部署,实现数据分层处理与协同管理
✅性能无瓶颈:高并发写入(百万级设备)、低延迟查询,经存储与编码优化,平衡读写性能与成本
✅智能 AI 分析:内置时序大模型(本地微调 / 推理),配 70 + 时序 UDF 函数,覆盖数据处理到智能分析全流程
✅稳定安全:分布式架构保障高可用,结合权限、加密机制,满足工业场景数据安全与业务连续性需求
✅运维便捷:可视化工具 + 简化部署,支持集群监控、故障诊断,降低工业环境运维门槛
总结

本文聚焦物联网时序数据存储需求,先解析 Apache IoTDB 的核心优势 ------"设备 - 测点" 模型、10:1~20:1 压缩率、百万级并发写入与全场景部署能力,再以 "3C3D" 架构为核心,详解其从主机配置、环境脚本设置、节点启动到激活验证的集群部署全流程及节点维护操作,最后介绍基于 Apache IoTDB 的国产 TimechoDB,其在信创适配、智能 AI 分析、端边云协同与运维便捷性上的增强优势,为不同需求场景提供时序数据管理解决方案。