1. 首页 > 软件安装教程 > 正文

IoTDB安装配置-IoTDB数据库安装配置_升级迁移详细过程

1. IoTDB概述与环境规划

IoTDB是Apache开源的物联网时序数据库,专为物联网场景设计。IoTDB具有轻量级、高性能、易扩展的特点,支持类SQL查询语言,适合海量时序数据存储和分析。更多学习教程www.fgedu.net.cn

1.1 IoTDB版本说明

IoTDB目前主要版本为1.3,本教程以IoTDB 1.3为例进行详细讲解。

# 查看IoTDB版本
$ cd /data/iotdb
$ sbin/start-standalone.sh

# 连接IoTDB
$ sbin/start-cli.sh -h localhost -p 6667 -u root -pw root

IoTDB> show version
+—————+
| version|
+—————+
| 1.3.0 |
+—————+

1.2 环境规划

本次安装环境规划如下:

主机名:fgedudb01.fgedu.net.cn
IP地址:192.168.1.51
RPC端口:6667
HTTP端口:18080
数据目录:/data/iotdb/data
配置目录:/data/iotdb/conf
日志目录:/data/iotdb/logs

存储规划:
数据保留期:永久
存储组:root.fgedu

1.3 IoTDB核心特性

主要特点:
1. 高性能:支持每秒千万级数据写入
2. 高压缩:采用列式存储,高压缩比
3. SQL支持:类SQL查询语言,学习成本低
4. 灵活模式:支持自动创建元数据
5. 集群模式:支持分布式部署
6. 多协议:支持Thrift、REST、MQTT等
7. 数据同步:支持数据同步和订阅
8. 工具丰富:提供丰富的管理工具

2. 硬件环境要求与检查

在安装IoTDB之前,需要对服务器硬件环境进行全面检查。学习交流加群风哥微信: itpux-com

2.1 最低硬件要求

最低配置:
CPU:2核心
内存:4GB
磁盘:20GB

推荐配置(生产环境):
CPU:8核心以上
内存:32GB以上
磁盘:500GB以上SSD

大规模部署配置:
CPU:16核心以上
内存:64GB以上
磁盘:2TB以上SSD

2.2 系统环境检查

# 检查操作系统版本
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.8 (Ootpa)

# 检查内核版本
# uname -a
Linux fgedudb01 4.18.0-477.10.1.el8_8.x86_64 #1 SMP Fri Apr 4 10:00:00 CST 2026 x86_64 x86_64 x86_64 GNU/Linux

# 检查Java版本(IoTDB需要Java环境)
# java -version
openjdk version “11.0.21” 2023-10-17 LTS
OpenJDK Runtime Environment (build 11.0.21+9-LTS)
OpenJDK 64-Bit Server VM (build 11.0.21+9-LTS, mixed mode, sharing)

# 检查内存信息
# free -h
total used free shared buff/cache available
Mem: 31Gi 1.0Gi 29Gi 256Mi 1.0Gi 30Gi
Swap: 7Gi 0B 7Gi

# 检查磁盘空间
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg_system-lv_root 50G 2.5G 48G 5% /
/dev/sda2 1014M 150M 865M 15% /boot
/dev/mapper/vg_data-lv_data 500G 50G 450G 10% /data

# 检查时间同步
# timedatectl status
Local time: 五 2026-04-04 10:00:00 CST
Universal time: 五 2026-04-04 02:00:00 UTC
RTC time: 五 2026-04-04 02:00:00
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes

2.3 安装Java环境

# 安装OpenJDK 11
# dnf install -y java-11-openjdk java-11-openjdk-devel

# 输出示例:
上次元数据过期检查:0:00:00 前,执行于 2026年04月04日 星期五 10时00分00秒。
依赖关系解决。
================================================================================
软件包 架构 版本 仓库 大小
================================================================================
安装:
java-11-openjdk x86_64 1:11.0.21.0.9-1.el8 appstream 300 k
java-11-openjdk-devel x86_64 1:11.0.21.0.9-1.el8 appstream 3.4 M

事务概要
================================================================================
安装 2 软件包

总下载:3.7 M
安装大小:15 M
下载软件包:
(1/2): java-11-openjdk-11.0.21.0.9-1.el8.x86_64.rpm 300 kB/s | 300 kB 00:01
(2/2): java-11-openjdk-devel-11.0.21.0.9-1.el8.x86_64 1.5 MB/s | 3.4 MB 00:02
——————————————————————————–
总计 1.3 MB/s | 3.7 MB 00:02
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
准备中 : [100%]
安装 : java-11-openjdk-1:11.0.21.0.9-1.el8.x86_64 [ 50%]
安装 : java-11-openjdk-devel-1:11.0.21.0.9-1.el8.x86_64 [100%]

验证 : java-11-openjdk-devel-1:11.0.21.0.9-1.el8.x86_64 [ 50%]
验证 : java-11-openjdk-1:11.0.21.0.9-1.el8.x86_64 [100%]

已安装:
java-11-openjdk-1:11.0.21.0.9-1.el8.x86_64
java-11-openjdk-devel-1:11.0.21.0.9-1.el8.x86_64

完毕!

# 配置JAVA_HOME环境变量
# vi /etc/profile.d/java.sh
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH

# 使环境变量生效
# source /etc/profile.d/java.sh

# 验证Java环境
# echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk

# java -version
openjdk version “11.0.21” 2023-10-17 LTS

2.4 内核参数配置

# 配置内核参数
# vi /etc/sysctl.d/99-iotdb.conf

# 添加以下参数
# 网络参数
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535

# 文件描述符限制
fs.file-max = 655360

# 内存参数
vm.swappiness = 1

# 使内核参数生效
# sysctl -p /etc/sysctl.d/99-iotdb.conf

# 配置用户限制
# vi /etc/security/limits.conf

# 添加以下配置
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

生产环境建议:IoTDB需要Java 8或Java 11运行环境。建议使用SSD存储以提高I/O性能。

3. IoTDB安装步骤

本节详细介绍IoTDB 1.3的安装过程。学习交流加群风哥QQ113257174

3.1 下载并安装IoTDB

# 创建安装目录
# mkdir -p /data/iotdb
# cd /data

# 下载IoTDB
# wget https://archive.apache.org/dist/iotdb/1.3.0/apache-iotdb-1.3.0-all-bin.zip

# 输出示例:
–2026-04-04 10:00:00– https://archive.apache.org/dist/iotdb/1.3.0/apache-iotdb-1.3.0-all-bin.zip
正在解析主机 archive.apache.org… 140.82.121.4
正在连接 archive.apache.org|140.82.121.4|:443… 已连接。
已发出 HTTP 请求,正在等待回应… 200 OK
长度:100000000 (95M) [application/zip]
正在保存至: “apache-iotdb-1.3.0-all-bin.zip”
100%[======================================>] 100,000,000 10.0MB/s 用时 9.5s
2026-04-04 10:00:10 (10.0 MB/s) – 已保存 “apache-iotdb-1.3.0-all-bin.zip”

# 解压安装包
# unzip apache-iotdb-1.3.0-all-bin.zip
# mv apache-iotdb-1.3.0-all-bin iotdb

# 查看目录结构
# ls -la /data/iotdb/
总用量 0
drwxr-xr-x. 2 root root 6 4月 4 10:00 conf
drwxr-xr-x. 2 root root 6 4月 4 10:00 data
drwxr-xr-x. 2 root root 6 4月 4 10:00 lib
drwxr-xr-x. 2 root root 6 4月 4 10:00 logs
drwxr-xr-x. 2 root root 6 4月 4 10:00 sbin
drwxr-xr-x. 2 root root 6 4月 4 10:00 tools

# 设置权限
# chmod -R 755 /data/iotdb

3.2 启动IoTDB服务

# 启动单机版IoTDB
# cd /data/iotdb
# sbin/start-standalone.sh

# 输出示例:
Starting IoTDB
2026-04-04 10:00:00,000 [main] INFO o.a.i.d.s.IoTDB:120 – Congratulation, IoTDB starts up successfully!

# 检查服务状态
# jps
12345 IoTDB
12346 Jps

# 检查端口
# netstat -tlnp | grep java
tcp6 0 0 :::6667 :::* LISTEN 12345/java
tcp6 0 0 :::18080 :::* LISTEN 12345/java
tcp6 0 0 :::5555 :::* LISTEN 12345/java

# 连接IoTDB
# sbin/start-cli.sh -h localhost -p 6667 -u root -pw root

# 输出示例:
Starting IoTDB Cli
_____ _________ ______ ______
|_ _| | _ _ ||_ _ `.|_ _ \
| | .–.|_/ | | \|_| | | `. \ | |_) |
| | / (`–‘) | | | | | | | | | __’.
_| |_| `.___./\_| |_/\_| |_| |_/_| |__)|
|_____| |_____| |_____|

IoTDB>
IoTDB> show version
+—————+
| version|
+—————+
| 1.3.0 |
+—————+

3.3 配置Systemd服务

# 创建systemd服务文件
# vi /etc/systemd/system/iotdb.service

[Unit]
Description=Apache IoTDB Server
After=network.target

[Service]
Type=forking
User=root
Group=root
Environment=”JAVA_HOME=/usr/lib/jvm/java-11-openjdk”
Environment=”IOTDB_HOME=/data/iotdb”
ExecStart=/data/iotdb/sbin/start-standalone.sh
ExecStop=/data/iotdb/sbin/stop-standalone.sh
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

# 重载systemd
# systemctl daemon-reload

# 启动IoTDB服务
# systemctl start iotdb

# 设置开机自启动
# systemctl enable iotdb

# 输出示例:
Created symlink /etc/systemd/system/multi-user.target.wants/iotdb.service → /etc/systemd/system/iotdb.service.

# 检查服务状态
# systemctl status iotdb

● iotdb.service – Apache IoTDB Server
Loaded: loaded (/etc/systemd/system/iotdb.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2026-04-04 10:00:00 CST; 5s ago
Process: 12340 ExecStart=/data/iotdb/sbin/start-standalone.sh (code=exited, status=0/SUCCESS)
Main PID: 12345 (java)
Tasks: 50 (limit: 4915)
Memory: 500.0M
CGroup: /system.slice/iotdb.service
└─12345 /usr/lib/jvm/java-11-openjdk/bin/java …

风哥提示:IoTDB默认使用root用户和密码。生产环境建议修改默认密码,并创建专用用户。

4. IoTDB参数配置

IoTDB参数配置是数据库性能优化的关键步骤,直接影响系统性能。更多学习教程公众号风哥教程itpux_com

4.1 配置文件说明

# 主配置文件位置
# vi /data/iotdb/conf/iotdb-engine.properties

# 主要配置参数说明:

# 存储组配置
dn_schema_region_group_size=1
dn_data_region_group_size=1

# 数据目录配置
dn_data_dirs=data/data
dn_wal_dirs=data/wal

# 内存配置
write_schema_region_memory_proportion=0.2
write_data_region_memory_proportion=0.4

# 查询配置
enable_query_memory_control=true
query_memory_threshold=0.8

# 查看当前配置
IoTDB> show all configurations
+——————————–+——–+——————+——–+———+
| module| key | value|datatype|read_only|
+——————————–+——–+——————+——–+———+
| Cluster|dn_rpc_port| 6667| INT32| true|
| Cluster|dn_data_region_consensus_protocol_class|org.apache.iotdb.consensus.ratis.RatisConsensus| STRING| true|
| Cluster|dn_schema_region_consensus_protocol_class|org.apache.iotdb.consensus.ratis.RatisConsensus| STRING| true|
+——————————–+——–+——————+——–+———+

4.2 内存参数配置

# 编辑配置文件
# vi /data/iotdb/conf/iotdb-engine.properties

# JVM内存配置
# vi /data/iotdb/conf/iotdb-env.sh

# 修改JVM参数
MAX_HEAP_SIZE=”8G”
MIN_HEAP_SIZE=”2G”

# 内存相关参数
# 写入内存比例
write_schema_region_memory_proportion=0.2
write_data_region_memory_proportion=0.4

# 查询内存控制
enable_query_memory_control=true
query_memory_threshold=0.8

# 重启服务
# systemctl restart iotdb

# 验证配置
IoTDB> show all configurations where module=’System’
+——————————–+——–+——————+——–+———+
| module| key | value|datatype|read_only|
+——————————–+——–+——————+——–+———+
| System|max_heap_size| 8G| STRING| false|
| System|min_heap_size| 2G| STRING| false|
+——————————–+——–+——————+——–+———+

4.3 存储参数配置

# 编辑配置文件
# vi /data/iotdb/conf/iotdb-engine.properties

# 数据目录配置
dn_data_dirs=/data/iotdb/data/data
dn_wal_dirs=/data/iotdb/data/wal

# 压缩配置
enable_tsfile_compression=true
compressor=LZ4

# TTL配置(数据保留时间,单位ms)
# 默认不设置TTL,永久保留
# enable_ttl=true
# ttl=31536000000 # 365天

# 重启服务
# systemctl restart iotdb

# 查看存储信息
IoTDB> show storage group
+————-+
|storage group|
+————-+
+————-+

生产环境建议:根据服务器内存大小合理配置JVM参数。建议将数据目录配置到独立的SSD磁盘,提高I/O性能。

5. 数据库与存储组管理

IoTDB使用存储组(Storage Group)管理时序数据,支持类SQL语法操作。from:www.itpux.com

5.1 创建存储组

# 连接IoTDB
# sbin/start-cli.sh -h localhost -p 6667 -u root -pw root

# 创建存储组
IoTDB> CREATE STORAGE GROUP root.fgedu

# 输出示例:
Msg: The statement is executed successfully.

# 查看存储组
IoTDB> SHOW STORAGE GROUP
+————-+
|storage group|
+————-+
| root.fgedu|
+————-+
total storage group number = 1

# 创建多个存储组
IoTDB> CREATE STORAGE GROUP root.fgedu.monitor
IoTDB> CREATE STORAGE GROUP root.fgedu.iot
IoTDB> CREATE STORAGE GROUP root.fgedu.sensor

# 查看所有存储组
IoTDB> SHOW STORAGE GROUP
+——————-+
| storage group|
+——————-+
| root.fgedu |
| root.fgedu.monitor|
| root.fgedu.iot|
| root.fgedu.sensor|
+——————-+

5.2 创建时间序列

# 创建时间序列
IoTDB> CREATE TIMESERIES root.fgedu.monitor.server01.cpu_usage WITH DATATYPE=FLOAT, ENCODING=RLE

# 输出示例:
Msg: The statement is executed successfully.

# 创建多个时间序列
IoTDB> CREATE TIMESERIES root.fgedu.monitor.server01.memory_usage WITH DATATYPE=FLOAT, ENCODING=RLE
IoTDB> CREATE TIMESERIES root.fgedu.monitor.server01.disk_usage WITH DATATYPE=FLOAT, ENCODING=RLE
IoTDB> CREATE TIMESERIES root.fgedu.monitor.server01.network_in WITH DATATYPE=INT64, ENCODING=TS_2DIFF
IoTDB> CREATE TIMESERIES root.fgedu.monitor.server01.network_out WITH DATATYPE=INT64, ENCODING=TS_2DIFF

# 查看时间序列
IoTDB> SHOW TIMESERIES root.fgedu.monitor.**
+———————————–+——–+——–+——–+——–+———–+——————+
| timeseries|alias|storage group|dataType|encoding|compression| status|
+———————————–+——–+——–+——–+——–+———–+——————+
|root.fgedu.monitor.server01.cpu_usage| null|root.fgedu| FLOAT| RLE| SNAPPY| enable|
|root.fgedu.monitor.server01.disk_usage| null|root.fgedu| FLOAT| RLE| SNAPPY| enable|
|root.fgedu.monitor.server01.memory_usage| null|root.fgedu| FLOAT| RLE| SNAPPY| enable|
|root.fgedu.monitor.server01.network_in| null|root.fgedu| INT64|TS_2DIFF| SNAPPY| enable|
|root.fgedu.monitor.server01.network_out| null|root.fgedu| INT64|TS_2DIFF| SNAPPY| enable|
+———————————–+——–+——–+——–+——–+———–+——————+

5.3 插入数据

# 插入单条数据
IoTDB> INSERT INTO root.fgedu.monitor.server01(timestamp, cpu_usage, memory_usage, disk_usage, network_in, network_out) VALUES (1712205600000, 75.5, 65.2, 45.8, 1024000, 512000)

# 输出示例:
Msg: The statement is executed successfully.

# 插入多条数据
IoTDB> INSERT INTO root.fgedu.monitor.server01(timestamp, cpu_usage, memory_usage, disk_usage, network_in, network_out) VALUES
(1712205500000, 72.3, 63.1, 44.5, 1023000, 511000),
(1712205400000, 71.8, 62.5, 44.2, 1022000, 510000),
(1712205300000, 70.5, 61.8, 43.9, 1021000, 509000)

# 使用当前时间
IoTDB> INSERT INTO root.fgedu.monitor.server01(timestamp, cpu_usage, memory_usage) VALUES (NOW(), 78.5, 66.2)

# 为其他服务器插入数据
IoTDB> INSERT INTO root.fgedu.monitor.server02(timestamp, cpu_usage, memory_usage) VALUES (NOW(), 68.5, 55.2)
IoTDB> INSERT INTO root.fgedu.monitor.server03(timestamp, cpu_usage, memory_usage) VALUES (NOW(), 82.3, 72.1)

5.4 查询数据

# 查询所有数据
IoTDB> SELECT * FROM root.fgedu.monitor.server01

# 输出示例:
+—————————–+———————————–+————————————-+————————————+———————————+———————————-+
| Time|root.fgedu.monitor.server01.cpu_usage|root.fgedu.monitor.server01.disk_usage|root.fgedu.monitor.server01.memory_usage|root.fgedu.monitor.server01.network_in|root.fgedu.monitor.server01.network_out|
+—————————–+———————————–+————————————-+————————————+———————————+———————————-+
|2024-04-04T10:00:00.000+08:00| 75.5| 45.8| 65.2| 1024000| 512000|
|2024-04-04T09:59:00.000+08:00| 72.3| 44.5| 63.1| 1023000| 511000|
|2024-04-04T09:58:00.000+08:00| 71.8| 44.2| 62.5| 1022000| 510000|
|2024-04-04T09:57:00.000+08:00| 70.5| 43.9| 61.8| 1021000| 509000|
+—————————–+———————————–+————————————-+————————————+———————————+———————————-+

# 条件查询
IoTDB> SELECT cpu_usage, memory_usage FROM root.fgedu.monitor.server01 WHERE cpu_usage > 70

# 聚合查询
IoTDB> SELECT AVG(cpu_usage), MAX(memory_usage), MIN(disk_usage) FROM root.fgedu.monitor.server01

# 输出示例:
+——————————–+——————————–+——————————–+
|AVG(root.fgedu.monitor.server01.cpu_usage)|MAX(root.fgedu.monitor.server01.memory_usage)|MIN(root.fgedu.monitor.server01.disk_usage)|
+——————————–+——————————–+——————————–+
| 72.525| 65.2| 43.9|
+——————————–+——————————–+——————————–+

# 时间范围查询
IoTDB> SELECT * FROM root.fgedu.monitor.server01 WHERE time > 1712205300000 AND time <= 1712205600000 # 降采样查询 IoTDB> SELECT AVG(cpu_usage) FROM root.fgedu.monitor.server01 GROUP BY ([1712205300000, 1712205600000), 1m)

# 多设备查询
IoTDB> SELECT * FROM root.fgedu.monitor.**

风哥提示:IoTDB支持自动创建时间序列,插入数据时如果时间序列不存在会自动创建。建议预先创建时间序列以指定数据类型和编码方式。

6. 网络连接配置

网络连接配置是客户端访问IoTDB的关键,需要正确配置监听端口和连接方式。更多学习教程www.fgedu.net.cn

6.1 配置网络监听

# 查看当前监听端口
# netstat -tlnp | grep java
tcp6 0 0 :::6667 :::* LISTEN 12345/java
tcp6 0 0 :::18080 :::* LISTEN 12345/java
tcp6 0 0 :::5555 :::* LISTEN 12345/java

# 端口说明:
# 6667: RPC端口
# 18080: HTTP RESTful端口
# 5555: 集群内部通信端口

# 修改监听地址
# vi /data/iotdb/conf/iotdb-engine.properties
dn_rpc_address=0.0.0.0
dn_rpc_port=6667

# 配置防火墙
# firewall-cmd –permanent –add-port=6667/tcp
success
# firewall-cmd –permanent –add-port=18080/tcp
success
# firewall-cmd –reload
success

6.2 使用RESTful API

# 使用HTTP接口查询
$ curl -X POST “http://192.168.1.51:18080/rest/v1/query” \
-H “Content-Type: application/json” \
-u root:root \
-d ‘{“sql”: “SELECT * FROM root.fgedu.monitor.server01 LIMIT 5”}’

# 输出示例:
{
“code”: 200,
“message”: “SUCCESS”,
“resultSet”: {
“columns”: [“Time”, “root.fgedu.monitor.server01.cpu_usage”, “root.fgedu.monitor.server01.memory_usage”],
“values”: [
[1712205600000, 75.5, 65.2],
[1712205500000, 72.3, 63.1],
[1712205400000, 71.8, 62.5]
]
}
}

# 使用HTTP接口插入数据
$ curl -X POST “http://192.168.1.51:18080/rest/v1/insert” \
-H “Content-Type: application/json” \
-u root:root \
-d ‘{“sql”: “INSERT INTO root.fgedu.monitor.server01(timestamp, cpu_usage, memory_usage) VALUES (NOW(), 80.5, 68.2)”}’

# 输出示例:
{
“code”: 200,
“message”: “SUCCESS”
}

6.3 配置用户认证

# 连接IoTDB
# sbin/start-cli.sh -h localhost -p 6667 -u root -pw root

# 创建用户
IoTDB> CREATE USER fgedu_user = ‘fgedupass123’

# 输出示例:
Msg: The statement is executed successfully.

# 授权
IoTDB> GRANT USER fgedu_user PRIVILEGES ‘INSERT’, ‘SELECT’ ON root.fgedu.**

# 输出示例:
Msg: The statement is executed successfully.

# 查看用户
IoTDB> LIST USER
+——–+
| user|
+——–+
| root|
|fgedu_user|
+——–+

# 查看用户权限
IoTDB> LIST USER PRIVILEGES fgedu_user
+——–+——————-+——–+
| user| privilege|pathType|
+——–+——————-+——–+
|fgedu_user| INSERT| NODE|
|fgedu_user| SELECT| NODE|
+——–+——————-+——–+

# 修改密码
IoTDB> ALTER USER root SET PASSWORD ‘newrootpass123’

# 使用新用户连接
# sbin/start-cli.sh -h localhost -p 6667 -u fgedu_user -pw fgedupass123

生产环境建议:建议创建专用用户并授予最小权限。修改默认root用户密码,提高安全性。

7. 备份恢复配置

备份恢复是数据库管理的重要环节,IoTDB提供了多种备份恢复方式。学习交流加群风哥微信: itpux-com

7.1 数据备份

# 创建备份目录
# mkdir -p /backup/iotdb

# 停止IoTDB服务
# systemctl stop iotdb

# 备份数据目录
# tar -czf /backup/iotdb/iotdb_data_$(date +%Y%m%d).tar.gz /data/iotdb/data

# 备份配置文件
# tar -czf /backup/iotdb/iotdb_conf_$(date +%Y%m%d).tar.gz /data/iotdb/conf

# 启动服务
# systemctl start iotdb

# 验证备份文件
# ls -la /backup/iotdb/
总用量 2048
-rw-r–r–. 1 root root 1024000 4月 4 10:00 iotdb_conf_20260404.tar.gz
-rw-r–r–. 1 root root 5120000 4月 4 10:00 iotdb_data_20260404.tar.gz

7.2 数据恢复

# 停止IoTDB服务
# systemctl stop iotdb

# 恢复数据目录
# rm -rf /data/iotdb/data/*
# tar -xzf /backup/iotdb/iotdb_data_20260404.tar.gz -C /

# 恢复配置文件
# rm -rf /data/iotdb/conf/*
# tar -xzf /backup/iotdb/iotdb_conf_20260404.tar.gz -C /

# 启动服务
# systemctl start iotdb

# 验证恢复
IoTDB> SHOW STORAGE GROUP
+————-+
|storage group|
+————-+
| root.fgedu|
+————-+

IoTDB> SELECT COUNT(*) FROM root.fgedu.**

7.3 自动备份脚本

# 创建备份脚本
# vi /usr/local/bin/iotdb_backup.sh

#!/bin/bash
BACKUP_DIR=/backup/iotdb
DATE=$(date +%Y%m%d)
LOG_FILE=/data/iotdb/logs/backup.log

echo “=== Backup started at $(date) ===” >> $LOG_FILE

# 停止服务
systemctl stop iotdb >> $LOG_FILE 2>&1

# 备份数据
tar -czf ${BACKUP_DIR}/iotdb_data_${DATE}.tar.gz /data/iotdb/data >> $LOG_FILE 2>&1
tar -czf ${BACKUP_DIR}/iotdb_conf_${DATE}.tar.gz /data/iotdb/conf >> $LOG_FILE 2>&1

# 启动服务
systemctl start iotdb >> $LOG_FILE 2>&1

if [ $? -eq 0 ]; then
echo “Backup completed successfully” >> $LOG_FILE
else
echo “Backup failed” >> $LOG_FILE
fi

# 清理30天前的备份
find ${BACKUP_DIR} -name “*.tar.gz” -mtime +30 -delete >> $LOG_FILE 2>&1

echo “=== Backup finished at $(date) ===” >> $LOG_FILE
echo “” >> $LOG_FILE

# 设置脚本权限
# chmod +x /usr/local/bin/iotdb_backup.sh

# 配置定时任务
# crontab -e

# 添加以下内容(每天凌晨2点执行备份)
0 2 * * * /usr/local/bin/iotdb_backup.sh

风哥提示:生产环境建议配置自动备份脚本,定期执行备份。备份前需要停止服务以确保数据一致性。

8. 升级与迁移

IoTDB升级和迁移是运维工作中的重要环节,需要仔细规划和执行。更多学习教程公众号风哥教程itpux_com

8.1 版本升级

# 检查当前版本
IoTDB> show version
+—————+
| version|
+—————+
| 1.3.0 |
+—————+

# 执行完整备份
# systemctl stop iotdb
# tar -czf /backup/iotdb/pre_upgrade.tar.gz /data/iotdb/data /data/iotdb/conf

# 下载新版本
# cd /usr/local/src
# wget https://archive.apache.org/dist/iotdb/1.3.1/apache-iotdb-1.3.1-all-bin.zip

# 解压新版本
# unzip apache-iotdb-1.3.1-all-bin.zip

# 备份旧版本
# mv /data/iotdb /data/iotdb_old

# 安装新版本
# mv apache-iotdb-1.3.1-all-bin /data/iotdb

# 恢复数据和配置
# cp -r /data/iotdb_old/data/* /data/iotdb/data/
# cp -r /data/iotdb_old/conf/* /data/iotdb/conf/

# 启动服务
# systemctl start iotdb

# 验证版本
IoTDB> show version
+—————+
| version|
+—————+
| 1.3.1 |
+—————+

8.2 迁移到新服务器

# 在源服务器执行备份
# systemctl stop iotdb
# tar -czf iotdb_full_backup.tar.gz /data/iotdb

# 传输备份文件
# scp iotdb_full_backup.tar.gz new-server:/backup/

# 在新服务器安装IoTDB
# 参考3.1节安装步骤

# 恢复数据
# systemctl stop iotdb
# tar -xzf /backup/iotdb_full_backup.tar.gz -C /
# systemctl start iotdb

# 验证迁移
IoTDB> SHOW STORAGE GROUP
IoTDB> SELECT COUNT(*) FROM root.fgedu.**

# 更新应用连接配置
# 修改应用配置文件中的连接地址为新服务器

生产环境建议:升级前必须执行完整备份。跨大版本升级需要仔细阅读升级文档,确认兼容性。

9. 生产环境实战案例

本节提供一个完整的生产环境配置案例,帮助读者更好地理解IoTDB的实际应用。from:www.itpux.com

9.1 集群部署

# IoTDB集群架构
# 至少需要3个节点

# 节点1: fgedudb01 (192.168.1.51)
# 节点2: fgedudb02 (192.168.1.52)
# 节点3: fgedudb03 (192.168.1.53)

# 在所有节点配置hosts
# vi /etc/hosts
192.168.1.51 fgedudb01
192.168.1.52 fgedudb02
192.168.1.53 fgedudb03

# 配置集群配置文件
# vi /data/iotdb/conf/iotdb-cluster.properties

# 节点1配置
dn_rpc_address=0.0.0.0
dn_internal_address=192.168.1.51
dn_rpc_port=6667
dn_internal_port=10730

# 节点列表
seed_nodes=192.168.1.51:10730,192.168.1.52:10730,192.168.1.53:10730

# 在所有节点启动服务
# cd /data/iotdb
# sbin/start-cluster.sh

# 检查集群状态
IoTDB> SHOW REGION
+——–+———–+——–+————+———-+———-+———+
|regionId| type| status|storageGroup| dataNode| progress| leader|
+——–+———–+——–+————+———-+———-+———+
| 0|SchemaRegion|Running| root.fgedu|192.168.1.51:6667| 0|192.168.1.51:6667|
| 1| DataRegion|Running| root.fgedu|192.168.1.51:6667| 0|192.168.1.51:6667|
+——–+———–+——–+————+———-+———-+———+

# 查看数据节点
IoTDB> SHOW DATANODES
+——–+—————–+———-+——-+——–+
|nodeId| rpcAddress|rpcPort| status| role|
+——–+—————–+———-+——-+——–+
| 1|192.168.1.51| 6667|Running|Running|
| 2|192.168.1.52| 6667|Running|Running|
| 3|192.168.1.53| 6667|Running|Running|
+——–+—————–+———-+——-+——–+

9.2 性能监控

# 查看系统指标
IoTDB> SHOW DEVICES
+—————————–+———+
| device|isAligned|
+—————————–+———+
|root.fgedu.monitor.server01| false|
|root.fgedu.monitor.server02| false|
|root.fgedu.monitor.server03| false|
+—————————–+———+

# 查看时间序列数量
IoTDB> COUNT TIMESERIES root.fgedu.**
+———————+
|count(root.fgedu.**)|
+———————+
| 15|
+———————+

# 查看数据点数量
IoTDB> SELECT COUNT(*) FROM root.fgedu.monitor.server01
+————————————————–+—————————————————-+
|COUNT(root.fgedu.monitor.server01.cpu_usage)|COUNT(root.fgedu.monitor.server01.memory_usage)|
+————————————————–+—————————————————-+
| 10000| 10000|
+————————————————–+—————————————————-+

# 查看存储大小
# du -sh /data/iotdb/data/
1.5G /data/iotdb/data/

9.3 数据同步

# 配置数据同步
# 在源端配置
# vi /data/iotdb/conf/iotdb-sync-client.properties

# 同步目标配置
target_ip=192.168.1.100
target_port=6667

# 同步存储组
sync_storage_groups=root.fgedu.monitor

# 启动同步
# sbin/start-sync-client.sh

# 配置数据订阅
# 创建订阅
IoTDB> CREATE PIPE fgedu_pipe TO ‘root.fgedu.monitor’ WITH ‘target’=’192.168.1.100:6667’

# 启动订阅
IoTDB> START PIPE fgedu_pipe

# 查看订阅状态
IoTDB> SHOW PIPES
+———-+——————-+———+
| PipeName| Target| Status|
+———-+——————-+———+
|fgedu_pipe|192.168.1.100:6667| RUNNING|
+———-+——————-+———+

风哥提示:IoTDB集群部署建议至少3个节点,确保高可用。数据同步功能适合数据备份和实时数据分发场景。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息