TDengine 支持平台全解:服务端/客户端/连接器平台矩阵与安装构建的平台识别机制
【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine
TDengine 面向工业物联网(IIoT)场景,在部署前必须确认操作系统与硬件架构是否在官方支持范围内。本文基于仓库中的《支持平台列表》文档,完整梳理 v3.0.7.1 之后社区版的服务端支持平台矩阵、客户端与连接器(C/C++、JDBC、Python、Go、NodeJs、C#、Rust、REST API)的平台覆盖情况,并结合 安装脚本、CMake 平台探测逻辑 与网络层源码,讲清 TDengine 是如何识别操作系统与 CPU 架构、以及 IPv4/IPv6 网络环境的实际支持能力,帮助你在选型、部署和排障时快速判定“能否装、怎么装”。
社区版支持范围的总体说明
v3.0.7.1之后的社区版所支持的操作系统范围,以本文档中的两张矩阵为准。如果使用国产操作系统,官方建议使用企业版本,或者使用 Docker 方式安装。
社区版仅支持主流操作系统较新版本(Ubuntu 18+ / CentOS 7+ / Debian / Fedora / FreeBSD / OpenSUSE / SUSE Linux / macOS 等)。若有其他操作系统及版本需求,需联系企业版支持。
矩阵中的标记含义如下:
●:经过官方测试验证○:非官方测试验证E:仅企业版支持
服务端支持的平台列表
TDengine 服务端(taosd)支持的操作系统及最低版本要求如下:
| 操作系统 | 版本要求 | X64 64bit | ARM64 |
|---|---|---|---|
| CentOS | 7.9 以上 | ● | ● |
| Ubuntu | 18 以上 | ● | ● |
| RedHat | RHEL 7 以上 | ● | ● |
| Debian | 6.0 以上 | ● | ● |
| FreeBSD | 12 以上 | ● | ● |
| OpenSUSE | 全部版本 | ● | ● |
| SUSE Linux | 11 以上 | ● | ● |
| Fedora | 21 以上 | ● | ● |
| Windows Server | 2019–2022 | ● / E | — |
| Windows | 10/11 | ● / E | — |
| 银河麒麟 | V10 以上 | ● / E | ● / E |
| 中标麒麟 | V7.0 以上 | ● / E | ● / E |
| 统信 UOS | V20 以上 | ● / E | — |
| 凝思磐石 | V8.0 以上 | ● / E | — |
| 华为欧拉 openEuler | V20.03 以上 | ● / E | — |
| 龙蜥 Anolis OS | V8.6 以上 | ● / E | — |
| macOS | 14.0 以上 | — | ● |
从这张表可以读出三点关键信息:
- x86_64 是服务端覆盖面最广的架构。主流 Linux 发行版在 x64 上均为官方验证通过(●);ARM64 在 CentOS/Ubuntu/RedHat/Debian/FreeBSD/OpenSUSE/SUSE/Fedora 上同样得到官方验证,适合在国产 ARM 服务器上部署。
- Windows 平台没有 ARM64 列,且部分场景标记为
● / E,即社区版验证通过但部分能力仅企业版提供;国产操作系统(银河麒麟、中标麒麟、统信 UOS、凝思磐石、openEuler、Anolis OS)普遍标注E,意味着这些平台的官方支持以企业版为主,这也是文档开头提示“国产操作系统建议使用企业版或 Docker 方式”的原因。 - macOS 仅支持 ARM64 且要求 14.0 以上,即 Apple Silicon(M 系列)环境,社区版在该平台上的定位偏向开发测试。
安装脚本如何识别当前操作系统
上述支持矩阵并非“口头承诺”,安装脚本中有对应的操作系统识别与分发逻辑。get_os.sh 通过读取/etc/*-release中的NAME=字段(macOS 直接判定为 Darwin)输出发行版名称,供上层构建/安装流程使用。
install.sh 在正式安装前会解析/etc/os-release的NAME字段,并按发行版选择包管理器路径(deb 或 rpm):
# packaging/tools/install.sh(节选) # ubuntu/debian(deb), centos/fedora(rpm), others: opensuse, redhat, ..., no verification if echo $osinfo | grep -qwi "ubuntu"; then os_type=1 # deb 系 elif echo $osinfo | grep -qwi "debian"; then os_type=1 elif echo $osinfo | grep -qwi "Kylin"; then os_type=1 elif echo $osinfo | grep -qwi "centos"; then os_type=2 # rpm 系 elif echo $osinfo | grep -qwi "fedora"; then os_type=2 elif echo $osinfo | grep -qwi "Linx"; then os_type=1; service_mod=0; initd_mod=0 else echo " This is an officially unverified linux system," ... fi这里能看到两点与文档一致的实现事实:
- 脚本明确将Ubuntu/Debian 归为 deb 包、CentOS/Fedora 归为 rpm 包,而 OpenSUSE、RedHat 等其余发行版走通用流程但标注“no verification(未官方验证)”,与矩阵中“●/○/E”的分级思路一致;
- 对非白名单发行版会打印“this is an officially unverified linux system”提示,即未经验证的平台安装不被推荐用于生产。
此外,install.sh 中对非 root(user)安装方式还有 systemd 版本门槛:
echo -e "${RED}Non-root install requires systemd >= 232, current version: ${sd_ver:-unknown}${NC}" echo -e "Supported: CentOS/RHEL 8+, Ubuntu 18.04+, Debian 9+, SUSE 15+" echo -e "CentOS/RHEL 7 (systemd 219) does not support non-root installation."这说明以普通用户身份安装 TDengine 需要 systemd ≥ 232(CentOS/RHEL 8+、Ubuntu 18.04+、Debian 9+、SUSE 15+),CentOS/RHEL 7(systemd 219)不支持非 root 安装,部署时需注意这一隐含限制。
仓库中还存在一个更细粒度的发行版检测脚本 check_os.sh,它通过/etc/issue、/etc/redhat-release、lsb_release -is等途径识别 CentOS(区分 5/6/7 大版本)、Debian 系(Debian/Deepin/Kali)、Ubuntu 系(Ubuntu/Linux Mint/elementary),无法识别时直接报错退出——从源码结构看,这类脚本用于安装/打包流程中更精确地匹配发行版。
客户端和连接器支持的平台列表
与服务端不同,TDengine 客户端与连接器的覆盖面显著更广。官方连接器目前包括X64 / X86 / ARM64 / ARM32 / MIPS / LoongArch64(或 Loong64)等硬件平台,以及Linux / Win64 / Win32 / macOS等开发环境。
各连接器在上述平台上的验证状态矩阵(● 官方测试验证通过,○ 非官方测试验证通过,— 未经验证)如下:
| 连接器 | Linux X64 64bit | Win64 | macOS | Linux ARM64 | macOS ARM64 |
|---|---|---|---|---|---|
| C/C++ | ● | ● | ● | ● | ● |
| JDBC | ● | ● | ● | ● | ● |
| Python | ● | ● | ● | ● | ● |
| Go | ● | ● | ● | ● | ● |
| NodeJs | ● | ● | ● | ● | ● |
| C# | ● | ● | ○ | ○ | ○ |
| Rust | ● | ● | ● | ○ | ● |
| REST API | ● | ● | ● | ● | ● |
从该矩阵可以推断出选型建议:
- C/C++、JDBC、Python、Go、NodeJs、REST API在 Linux X64/ARM64、Win64 和 macOS 上均获官方验证,是生产环境的主力连接器;
- C#在 macOS 及 Linux ARM64 上为非官方验证(○),Rust在 Linux ARM64 上为非官方验证,选型时若运行在这些平台组合上需自行评估;
- 该矩阵未列出 X86(32 位)、MIPS、LoongArch64 的具体行,但文档明确说明连接器整体覆盖这些硬件平台,说明这些架构的支持主要面向 C/C++ 底层客户端及其衍生生态。
多架构支持在构建系统中的实现
客户端为何能覆盖这么多架构?从 cmake/platform.cmake 可以看到构建时对操作系统和 CPU 架构的完整探测逻辑:
# cmake/platform.cmake(节选) IF (CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "Darwin") ... ELSEIF (CMAKE_SYSTEM_NAME MATCHES "Windows") SET(TD_WINDOWS TRUE) ADD_DEFINITIONS("-DWINDOWS") ENDIF()IF ("${BUILD_VER_CPUTYPE}" STREQUAL "") IF (CMAKE_SYSTEM_PROCESSOR MATCHES "(amd64)|(AMD64)|(x86_64)|(X86_64)") SET(PLATFORM_ARCH_STR "amd64") SET(TD_INTEL_64 TRUE) ELSEIF (CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)") SET(PLATFORM_ARCH_STR "i386") SET(TD_INTEL_32 TRUE) ELSEIF (CMAKE_SYSTEM_PROCESSOR MATCHES "armv7l") SET(PLATFORM_ARCH_STR "arm") SET(TD_ARM_32 TRUE) ELSEIF (CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64)|(arm64)") SET(PLATFORM_ARCH_STR "arm64") SET(TD_ARM_64 TRUE) ELSEIF (CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64") SET(PLATFORM_ARCH_STR "loongarch64") SET(TD_LOONGARCH_64 TRUE) ELSEIF (CMAKE_SYSTEM_PROCESSOR MATCHES "mips64") SET(PLATFORM_ARCH_STR "mips") SET(TD_MIPS_64 TRUE) ENDIF ()即构建系统原生识别x64 / x86 / arm32 / arm64 / loongarch64 / mips64六类 CPU 架构,并支持通过-DBUILD_VER_CPUTYPE=aarch64等参数显式指定交叉目标架构。与之配套的是deps/目录下的分平台预编译依赖布局:
| 目标平台 | 依赖目录(TD_DEPS_DIR) |
|---|---|
| Linux x86_64 | x86 |
| Linux ARM(32/64 位) | arm |
| Linux MIPS64 | mips |
| macOS Apple Silicon / ARM | darwin/arm |
| macOS Intel x64 | darwin/x64 |
| Windows 64 位 | win/x64 |
| Windows 32 位 | win/i386 |
仓库中的deps/arm/dm_static、deps/x86/rocksdb_static、deps/mips/dm_static、deps/win/x64、deps/darwin/arm等目录即为各架构预置的静态库,从源码结构看,多平台支持在构建层面是通过“平台探测 + 分目录依赖”机制落地的,未命中任何已知平台的构建会直接FATAL_ERROR "unsupported platform"终止。
支持的网络环境:IPv4 与 IPv6
TDengine 支持 IPv4 和 IPv6 两种通信方式。IPv6 能力在源码中有明确落地:
- 客户端地址解析逻辑处理了
[IPv6]:port、纯 IPv6 地址等格式(见 tmisce.c,其中if (tsEnableIpv6)分支控制 IPv6 行为); - 消息层包含
SIpV6Range等 IPv6 地址范围结构及处理代码(见 tmsg.c)。
IPv6 的完整配置方法参见仓库文档 网络与 FQDN 配置,其关键约束与操作要点如下:
支持范围
- 支持版本:TDengine Server 和 Client 版本均需 ≥3.3.7.0;
- 支持组件:taosd(服务端)、taos shell、各连接器(JDBC、Go、Python、C#、Rust 等,需使用支持 IPv6 的版本);
- 网络环境:纯 IPv6 环境或 IPv4/IPv6 双栈环境均支持。
服务端配置(/etc/taos/taos.cfg):
// firstEp/secondEp 设为接口对应的 IPv6 地址,"::" 表示监听所有 IPv6 接口 firstEp ipv6_address1:port secondEp ipv6_address2:port fqdn ipv6_address1 enableIPv6 1修改后重启服务生效:
sudo systemctl restart taosd客户端连接方式:
- 使用 FQDN:域名 AAAA 记录指向正确 IPv6 地址时,客户端自动通过 IPv6 建连,例如
taos -h your_server_fqdn -P 6030; - 直接使用 IPv6 地址:命令行或连接字符串中必须用中括号包裹,例如
taos -h [2001:db8::1] -P 6030。
注意事项:默认端口 6030 同样适用于 IPv6 连接;强烈建议使用 FQDN 而非直接写死 IP,通过 DNS 解析自动选择地址;确保服务器、客户端及中间网络设备(路由、防火墙)均正确放行 6030 端口的 IPv6 通信;双栈主机上需显式让 FQDN 指向 IPv6 地址以优先走 IPv6。
小结:选型与部署核对清单
结合本文两张矩阵与仓库实现,部署 TDengine 前可按以下清单核对:
- 服务端:确认发行版与版本在服务端矩阵内(如 Ubuntu 18+、CentOS 7.9+、RHEL 7+、macOS 14.0+ ARM64 等);国产系统优先企业版或 Docker 方式。
- 客户端/连接器:按“连接器 × 平台”矩阵确认验证等级,C# 在 macOS/Linux ARM64、Rust 在 Linux ARM64 属于非官方验证项。
- 安装方式:非 root 安装要求 systemd ≥ 232(CentOS/RHEL 7 不支持),发行版识别逻辑见 install.sh。
- 网络:需要 IPv6 时确保服务端与客户端版本均 ≥ 3.3.7.0,并配置
enableIPv6 1与firstEp/secondEp。 - 构建部署:源码构建的平台/架构探测由 cmake/platform.cmake 完成,覆盖 Linux/macOS/Windows 与 x64/x86/arm32/arm64/loongarch64/mips64。
以上矩阵以当前仓库文档为准;实际可用版本能力可能随发布版本演进,请以对应版本的官方发布说明为准。
【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考