TDengine 安装与远程连接完整教程

场景:在 Linux 服务器上安装 TDengine 服务端,然后在 Mac 本地连接使用。 适用版本:TDengine 3.x(社区版,当前稳定版 3.3.6) 最后更新:2026-07-18


目录

  1. 整体架构与连接方式
  2. Linux 服务端安装
  3. 服务启动与管理
  4. FQDN 配置(TDengine 的关键特性)
  5. 开放网络端口
  6. Mac 本地连接(四种方式)
  7. 常见问题排查
  8. 面试要点速记

1. 整体架构与连接方式

TDengine 的服务端进程 taosd 只能在 Linux/Unix 上运行(Windows/macOS 暂不支持服务端)。Mac 作为客户端,有多种方式连接 Linux 上的 TDengine:

连接方式端口协议是否需装客户端驱动适用场景
Native(taosc)6030私有二进制协议是,需装 macOS 客户端性能最高,taos CLI、JDBC-JNI 都走这个
RESTful / WebSocket6041HTTP/WS否,任何 HTTP 客户端即可跨语言、跨平台最方便
JDBC-REST6041HTTP否,仅一个 jar 包Java 应用不想装 native 驱动时
JDBC-JNI6030私有协议是,需装客户端 + JNIJava 应用追求最高性能

⚠️ 重点:TDengine 用 FQDN(完全限定域名) 标识节点,不是 IP。这是它和 MySQL/Redis 等最大的区别,远程连接必须先解决 FQDN 解析问题。


2. Linux 服务端安装

2.1 环境准备

# 查看系统架构(x64 / arm64)
uname -m

# 查看系统版本
cat /etc/os-release

# 确保有 root / sudo 权限
sudo -v

TDengine 3.x 支持 x64 和 arm64,CentOS 7+/Ubuntu 18.04+/Debian 10+ 等主流发行版。

2.2 方式一:apt-get 安装(Ubuntu/Debian 推荐)

# 1. 添加官方仓库签名和源
wget -qO - http://repos.taosdata.com/tdengine.key | sudo apt-key add -
echo "deb [arch=amd64] http://repos.taosdata.com/tdengine-stable stable main" \
| sudo tee /etc/apt/sources.list.d/tdengine-stable.list

# 2. 更新索引并安装
sudo apt-get update
sudo apt-get install -y tdengine

arm64 机器把 [arch=amd64] 改成 [arch=arm64]

2.3 方式二:deb 包安装(离线 Ubuntu/Debian)

从官网下载页 https://docs.taosdata.com/releases/tdengine/ 获取类似 TDengine-server-3.3.6.13-Linux-x64.deb

sudo dpkg -i TDengine-server-3.3.6.13-Linux-x64.deb

# 若提示缺依赖,补一下
sudo apt-get install -f -y

2.4 方式三:rpm 包安装(CentOS/RHEL)

sudo rpm -ivh TDengine-server-3.3.6.13-Linux-x64.rpm

2.5 方式四:tar.gz 安装(通用,无包管理器时)

# 解压
tar -zxvf TDengine-server-3.3.6.13-Linux-x64.tar.gz
cd TDengine-server-3.3.6.13

# 执行安装脚本(交互式,会问几个配置问题,回车走默认即可)
sudo ./install.sh

# 自定义安装目录示例:
# sudo ./install.sh -e no -d /opt/tdengine

安装完成后的默认目录结构:

路径说明
/usr/local/taos/bin/可执行文件:taosdtaostaosAdaptertaosdump
/etc/taos/taos.cfg主配置文件
/var/lib/taos/数据目录
/var/log/taos/日志目录

3. 服务启动与管理

TDengine 安装后会注册 systemd 服务 taosd

# 启动
sudo systemctl start taosd

# 停止(会等数据落盘,数据量大时较慢,属正常现象)
sudo systemctl stop taosd

# 重启
sudo systemctl restart taosd

# 查看状态(看到 active (running) 即正常)
sudo systemctl status taosd

# 设置开机自启
sudo systemctl enable taosd

同时建议启动 taosAdapter(提供 RESTful/WebSocket 接口,Mac 远程连接会用到):

sudo systemctl start taosadapter
sudo systemctl enable taosadapter
sudo systemctl status taosadapter

本地验证

在服务器上直接连:

taos

进入 CLI 后:

taos> SHOW DATABASES;
taos> CREATE DATABASE test_db VGROUPS 2;
taos> USE test_db;
taos> CREATE TABLE t (ts TIMESTAMP, v INT);
taos> INSERT INTO t VALUES (NOW, 1);
taos> SELECT * FROM t;
taos> exit;

能查到数据就说明服务端 OK。


4. FQDN 配置(TDengine 的关键特性)

TDengine 用 FQDN 而非 IP 标识节点,远程连接前必须配置好。

4.1 查看服务器当前 FQDN

hostname -f
# 例如输出: tdnode1

4.2 设置 FQDN(如未设置)

# 临时设置
sudo hostnamectl set-hostname tdnode1

# 永久生效:编辑 /etc/hosts,把本机 IP 和 FQDN 绑定
# 假设服务器内网 IP 是 192.168.1.100
sudo vim /etc/hosts

/etc/hosts 内容示例:

127.0.0.1   localhost
192.168.1.100 tdnode1

4.3 修改 taos.cfg(可选但推荐)

编辑 /etc/taos/taos.cfg,确认/修改:

# 节点 FQDN(默认会读 hostname,但显式指定更稳)
fqdn tdnode1

# 服务端口(默认 6030)
serverPort 6030

改完重启服务:

sudo systemctl restart taosd

4.4 验证 FQDN 可解析

在服务器本机:

ping -c 2 tdnode1

能 ping 通说明 FQDN 配置成功。


5. 开放网络端口

TDengine 使用一组端口,TCP 和 UDP 都要开

端口协议用途
6030TCP+UDPtaosd 客户端连接(native)
6041TCPtaosAdapter RESTful / WebSocket
6043TCPtaosd 内部
6044UDPtaosd 内部
6045UDPtaosd 内部
6046-6049TCP+UDPtaosd 内部

最简实践:Mac 远程连接至少开 6030(native)和 6041(RESTful)。

5.1 防火墙(firewalld,CentOS)

sudo firewall-cmd --permanent --add-port=6030/tcp
sudo firewall-cmd --permanent --add-port=6030/udp
sudo firewall-cmd --permanent --add-port=6041/tcp
sudo firewall-cmd --reload

5.2 防火墙(ufw,Ubuntu)

sudo ufw allow 6030/tcp
sudo ufw allow 6030/udp
sudo ufw allow 6041/tcp

5.3 云服务器安全组

如果是阿里云/腾讯云/AWS 等,还要在控制台安全组里放行上述端口。


6. Mac 本地连接(四种方式)

假设服务器信息:

  • 内网 IP:192.168.1.100
  • FQDN:tdnode1
  • TDengine 版本:3.3.6

6.1 前置:配置 Mac 的 /etc/hosts 解析 FQDN

这是最关键的一步,否则会报 Unable to resolve FQDN

sudo vim /etc/hosts

添加一行:

192.168.1.100  tdnode1

验证:

ping -c 2 tdnode1

6.2 方式 A:安装 macOS 客户端 + taos CLI(native 连接)

步骤 1:下载 macOS 客户端包

https://docs.taosdata.com/releases/tdengine/ 下载对应架构的客户端:

  • Apple Silicon(M1/M2/M3):TDengine-client-3.3.6.X-macos-arm64.pkg
  • Intel Mac:TDengine-client-3.3.6.X-macos-x64.pkg

步骤 2:安装

双击 .pkg 按提示安装。若被 Gatekeeper 拦截,右键 → 打开。

步骤 3:配置 firstEp

编辑 /etc/taos/taos.cfg(Mac 上的客户端配置):

firstEp tdnode1:6030

注意:Mac 上只装客户端、不跑服务端,所以只需配 firstEp,不需要配 fqdn

步骤 4:连接验证

taos -h tdnode1 -P 6030

或直接 taos(会读 taos.cfg 的 firstEp):

taos

成功进入 taos> 提示符即 OK:

taos> SHOW DATABASES;
taos> SELECT SERVER_VERSION();

6.3 方式 B:RESTful 方式(curl,无需装客户端)

通过 taosAdapter 的 6041 端口,标准 HTTP 请求即可。无需在 Mac 装任何东西:

# 基本格式:
# curl -u <user>:<pass> -d '<SQL>' <host>:6041/rest/sql

# 查询数据库列表
curl -u root:taosdata \
 -d 'SHOW DATABASES' \
 192.168.1.100:6041/rest/sql

# 查询版本
curl -u root:taosdata \
 -d 'SELECT SERVER_VERSION()' \
 192.168.1.100:6041/rest/sql

默认账号 root / 密码 taosdata。返回 JSON。

RESTful 方式适合脚本、Postman、任何语言快速接入,是最方便的远程连接方式。

6.4 方式 C:JDBC-REST(Java 开发者推荐,免装 native 驱动)

这是 Java 应用远程连接 TDengine 最省事的方式,Mac 上只需一个 jar 包,不用装任何客户端驱动。

Maven 依赖:

<dependency>
   <groupId>com.taosdata.jdbc</groupId>
   <artifactId>taos-jdbcdriver</artifactId>
   <version>3.3.3</version>
</dependency>

JDBC URL 格式(REST 模式):

jdbc:TAOS-RS://192.168.1.100:6041/test_db?user=root&password=taosdata
  • TAOS-RS = REST 协议
  • 端口 6041(taosAdapter)
  • 不需要 Mac 配 /etc/hosts,直接用 IP 即可

示例代码:

import java.sql.*;

public class TDengineRestDemo {
   public static void main(String[] args) throws Exception {
       String url = "jdbc:TAOS-RS://192.168.1.100:6041/test_db?user=root&password=taosdata";

       try (Connection conn = DriverManager.getConnection(url);
            Statement stmt = conn.createStatement()) {

           // 建库建表(如果 test_db 已存在可省略)
           stmt.execute("CREATE DATABASE IF NOT EXISTS test_db");
           stmt.execute("USE test_db");
           stmt.execute("CREATE STABLE IF NOT EXISTS meters (ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) TAGS (location BINARY(64), groupId INT)");

           // 写入
           stmt.executeUpdate("INSERT INTO d1001 USING meters TAGS('Beijing', 2) VALUES (NOW, 10.3, 219, 0.31)");

           // 查询
           try (ResultSet rs = stmt.executeQuery("SELECT * FROM meters")) {
               ResultSetMetaData meta = rs.getMetaData();
               while (rs.next()) {
                   for (int i = 1; i <= meta.getColumnCount(); i++) {
                       System.out.print(meta.getColumnName(i) + "=" + rs.getString(i) + " ");
                  }
                   System.out.println();
              }
          }
      }
  }
}

6.5 方式 D:JDBC-JNI(追求最高性能时)

走 native 协议(6030),性能比 REST 高 2-5 倍,但必须先在 Mac 装 6.2 节的客户端驱动 + 配好 firstEp 和 /etc/hosts

JDBC URL 格式(native 模式):

jdbc:TAOS://tdnode1:6030/test_db?user=root&password=taosdata
  • TAOS(不带 -RS)= native 协议
  • 端口 6030
  • 必须用 FQDN(tdnode1),不能用 IP,且 Mac 的 /etc/hosts 要能解析

依赖、代码和方式 C 完全一样,只换 URL。

6.6 方式对比与选型建议

方式性能部署成本适用场景
taos CLI(native)需装客户端日常运维、调试 SQL
curl / RESTful零依赖脚本、快速验证、非 Java 语言
JDBC-REST一个 jarJava 应用远程连接,最推荐起步方案
JDBC-JNI最高jar + native 驱动生产环境高性能 Java 应用

实践建议:开发/测试用 JDBC-REST 省事;上生产对延迟敏感时切 JDBC-JNI。


7. 常见问题排查

7.1 Unable to resolve FQDN

原因:Mac 无法把 FQDN 解析成 IP。

解决:检查 Mac /etc/hosts 是否有 192.168.1.100 tdnode1ping tdnode1 能通即可。

7.2 Failed to connect to server, ... reason: 0x216

原因:服务端未启动或端口不通。

解决

# 服务器上检查
sudo systemctl status taosd
sudo netstat -tlnp | grep 6030

# Mac 上测试端口
nc -zv 192.168.1.100 6030
nc -zv 192.168.1.100 6041

7.3 RESTful 401 Unauthorized

原因:账号密码错。默认 root / taosdata,首次登录后建议改密码:

taos> ALTER USER root PASS '新密码';

7.4 客户端与服务端版本不匹配

3.4.0.0 起企业版与社区版不完全兼容,会报 Edition not compatible确保 Mac 客户端版本与服务端一致或更接近,社区版客户端连社区版服务端。

查看版本:

taos --version          # 客户端
taos> SELECT SERVER_VERSION();   # 服务端

7.5 云服务器连不上

九成是安全组没放行。到云控制台安全组规则里加 6030(TCP+UDP)和 6041(TCP)。

7.6 时区问题

RESTful 返回时间戳时区异常时,JDBC URL 加参数:

jdbc:TAOS-RS://host:6041/db?timezone=Asia/Shanghai

8. 面试要点速记

针对 Java 后端面试,TDengine 相关可聊的点:

8.1 TDengine 与传统数据库的区别

  • 时序数据库:为时序数据优化,写入吞吐高、按时间范围查询快
  • FQDN 标识节点:而非 IP,这是分布式集群寻址的基础
  • 超级表(STable)+ 子表模型:一个设备一张子表,超级表定义 schema,查询自动聚合
  • 标签(TAG)与数据分离:标签存在元数据,查询过滤不扫数据文件

8.2 为什么 TDengine 用 FQDN 而非 IP

  • 集群节点 IP 可能变(DHCP、容器迁移),FQDN 稳定
  • 配合 DNS 做 load balance 和故障切换
  • 多网卡环境下 IP 歧义,FQDN 明确

8.3 native vs REST 连接的取舍

  • native(6030):私有二进制协议,连接池复用、批量写入压缩,性能高但需装客户端
  • REST(6041):HTTP,跨平台零依赖,但有 HTTP 开销和 JSON 序列化成本
  • 生产选 native,开发/异构环境选 REST

8.4 可以聊的延伸

  • 写入路径:WAL → 内存 buffer → 落盘(data/last 文件)
  • 列式存储 + 时间分片(VGroup)
  • 副本数(replica)与一致性
  • taosAdapter 的作用:把 TDengine 暴露成 REST/WebSocket,还对接 Telegraf、Prometheus、Grafana

附录:快速操作清单

# ===== Linux 服务端 =====
sudo apt-get install -y tdengine            # 安装
sudo systemctl start taosd taosadapter      # 启动
sudo systemctl enable taosd taosadapter     # 开机自启
hostnamectl set-hostname tdnode1            # 设 FQDN
# /etc/hosts 加: 192.168.1.100 tdnode1
# /etc/taos/taos.cfg 确认 fqdn tdnode1
# 防火墙放行 6030(tcp/udp) 6041(tcp)

# ===== Mac 客户端 =====
# /etc/hosts 加: 192.168.1.100 tdnode1
# 装 macOS 客户端 pkg
# /etc/taos/taos.cfg 配 firstEp tdnode1:6030
taos                                         # native 连接

# ===== Mac RESTful(零依赖) =====
curl -u root:taosdata -d 'SHOW DATABASES' 192.168.1.100:6041/rest/sql

# ===== Mac JDBC-REST =====
# jdbc:TAOS-RS://192.168.1.100:6041/test_db?user=root&password=taosdata

参考资料:

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部