Ubuntu 22.04(WSL2)使用 Docker 安装 TDengine 3.3.6.0

235 阅读5分钟

引言

TDengine 是一个高性能、开源的时间序列数据库,专为物联网、大数据和工业应用优化。本文将详细说明在运行于 WSL2(Windows Subsystem for Linux 2)的 Ubuntu 22.04 上使用 Docker 安装 TDengine 3.3.6.0 版本。通过 Docker 的容器化技术,可以简化部署流程并确保环境一致性。

前提条件

  • 在 WSL2 上安装了 Ubuntu 22.04。
  • 已安装并运行 Docker。确保 Docker 守护进程已启动(sudo service docker start)。
  • 熟悉基本的终端命令和 Docker 使用。

有关 WSL2 上 Docker 的设置,请参考 Docker 官方文档。有关 TDengine 的详细信息,可查看 TDengine 官方 Docker 文档

安装步骤

1. 创建数据和日志目录

TDengine 将数据和日志存储在特定目录中。为了在 Docker 容器外持久化这些数据,需要在主机上创建目录并设置适当的权限。

mkdir -p /home/tdengine/data /home/tdengine/log
chmod -R 777 /home/tdengine/
  • /home/tdengine/data:存储 TDengine 的数据库文件。
  • /home/tdengine/log:存储 TDengine 的日志文件。
  • chmod -R 777:确保 Docker 容器对目录具有写权限。生产环境中可根据需要调整权限以提高安全性。

2. 运行 TDengine Docker 容器

使用 docker run 命令启动 TDengine 容器,并配置必要的卷挂载和端口映射。以下命令将拉取并运行 TDengine 3.3.6.0 镜像:

docker run -d --name tdengine-3 \
  -v /home/tdengine/data:/var/lib/taos \
  -v /home/tdengine/log:/var/log/taos \
  -p 6030:6030 -p 6041:6041 -p 6043:6043 -p 6044-6049:6044-6049 \
  -p 6044-6045:6044-6045/udp -p 6060:6060 \
  tdengine/tdengine:3.3.6.0

命令解析

  • -d:在后台运行容器。

  • --name tdengine-3:将容器命名为 tdengine-3,便于管理。

  • -v /home/tdengine/data:/var/lib/taos:将主机的 /home/tdengine/data 目录映射到容器的 /var/lib/taos 数据目录。

  • -v /home/tdengine/log:/var/log/taos:将主机的 /home/tdengine/log 目录映射到容器的 /var/log/taos 日志目录。

  • -p
    

    :映射 TDengine 服务所需的端口(包括 TCP 和 UDP)。主要端口包括:

    • 6030:默认客户端连接端口。
    • 6041:RESTful API 端口。
    • 6043-6049:TDengine 其他功能端口。
    • 6044-6045/udp:特定功能的 UDP 端口。
    • 6060:Web 界面端口。
  • tdengine/tdengine:3.3.6.0:指定 TDengine 的 Docker 镜像和版本。

3. 验证安装

容器启动后,验证 TDengine 是否正常运行:

  • 检查容器状态:docker ps

  • 访问 TDengine CLI:

    docker exec -it tdengine-3 taosd
    
  • 或者,通过客户端或在浏览器中访问 http://localhost:6060 查看 Web 界面。

4. 故障排除

  • 容器无法启动:查看 Docker 日志(docker logs tdengine-3)以查找错误。确保映射的端口未被其他服务占用。
  • 权限问题:确认 /home/tdengine 目录具有适当的权限。
  • WSL2 相关问题:确保 WSL2 和 Docker 配置正确,必要时重启 WSL2(在 Windows 终端运行 wsl --shutdown)。

为什么选择 Docker 安装 TDengine?

Docker 简化了安装过程,具有以下优势:

  • 避免依赖冲突。
  • 提供跨平台的统一环境。
  • 便于版本管理和升级。

体验TDengine

体验写入

# 进入容器
docker exec -it tdengine-3 bash

# 在容器中输入
taosBenchmark -y

aosBenchmark 是一个专为测试 TDengine 性能而设计的工具,它能够全面评估 TDengine 在写入、查询和订阅等方面的功能表现。该工具能够模拟大量设备产生的数据,并允许用户灵活控制数据库、超级表、标签列的数量和类型、数据列的数量和类型、子表数量、每张子表的数据量、写入数据的时间间隔、工作线程数量以及是否写入乱序数据等策略。

系统将自动在数据库 test 下创建一张名为 meters 的超级表。这张超级表将包含 10,000 张子表,表名从 d0 到 d9999,每张表包含 10,000 条记录。每条记录包含 ts(时间戳)、current(电流)、voltage(电压)和 phase(相位)4 个字段。时间戳范围从“2017-07-14 10:40:00 000”到“2017-07-14 10:40:09 999”。每张表还带有 location 和 groupId 两个标签,其中,groupId 设置为 1 到 10,而 location 则设置为 California.Campbell、California.Cupertino 等城市信息。

执行该命令后,系统将迅速完成 1 亿条记录的写入过程。实际所需时间取决于硬件性能,但即便在普通 PC 服务器上,这个过程通常也只需要十几秒。

体验查询

使用上述 taosBenchmark 插入数据后,可以在 TDengine CLI(taos)输入查询命令,体验查询速度。

# 查询超级表 meters 下的记录总条数
SELECT COUNT(*) FROM test.meters;

# 查询 1 亿条记录的平均值、最大值、最小值
SELECT AVG(current), MAX(voltage), MIN(phase) FROM test.meters;

# 查询 location = "California.SanFrancisco" 的记录总条数
SELECT COUNT(*) FROM test.meters WHERE location = "California.SanFrancisco";

# 查询 groupId = 10 的所有记录的平均值、最大值、最小值
SELECT AVG(current), MAX(voltage), MIN(phase) FROM test.meters WHERE groupId = 10;

# 对表 d1001 按每 10 秒进行平均值、最大值和最小值聚合统计
SELECT _wstart, AVG(current), MAX(voltage), MIN(phase) FROM test.d1001 INTERVAL(10s);

更多详细信息,请参考 TDengine Docker 文档 或 TDengine 社区论坛。