CentOS7.9及以上环境部署TDengine TSDB-OSS实战指南:安装、配置、建库、建超级表与验证_20250418

1、TDengine官网https://www.taosdata.com/2、TDengine TSDB 文档https://docs.taosdata.com/3、TDengine 下载中心https://www.taosdata.com/download-center?product=TDengine+TSDB-OSS&version=3.3.8.8&platform=Docker&architecture=x644、欢迎来到 TDengine 技术社区https://ask.taosdata.com/

5、TDengine TSDB 服务端支持的平台列表https://docs.taosdata.com/reference/supported/?

3.0.7.1 之后的社区版所支持的操作系统范围,可参考本文档,如果使用国产操作系统,请使用企业版本,或者使用 Docker 方式安装。

说明

TDengine TSDB-OSS 服务端官方支持 CentOS 7.9 及以上版本,因此本文以 CentOS 7.9 为示例进行部署说明。

本文示例统一使用以下示例值,便于直接阅读和替换:

  • 示例主机名:tdnode01

  • 示例 IP:10.10.20.31

  • 示例密码:taosdb#-2026

说明:

  • tdnode01 只是示例主机名,实际部署时替换为现场主机名。

  • 10.10.20.31 只是示例 IP,实际部署时替换为现场业务 IP。

  • taosdb#-2026 为本文统一示例密码,后文 root、monitor、taoskeeper 均统一使用该密码。

执行顺序

修改主机名 → 配置 hosts → 检查资源和时区 → 关闭防火墙 → 测试磁盘 IO → 确认挂载点空间 → 创建 TDengine 目录结构 → 优化系统参数 → 上传并解压安装包 → 配置 taos.cfg → 配置 taosadapter/taoskeeper → 启动服务 → 验证 dnodes/mnodes → 初始化 root 和 monitor 账号 → 建库建表 → 最终验收。


一、部署前初始化

1. 检查并设置主机名

先检查、后决定是否修改

先查看当前主机名:

复制代码
hostnamectl status
hostname

如果当前主机名已经符合命名规范 ,则无需修改,直接进入下一步2. 检查基础资源。

如果当前主机名不符合规范,再执行修改:

复制代码
hostnamectl set-hostname 'tdnode01' --static
hostname

说明:

  • hostnamectl status:查看当前主机名及相关信息

  • hostname:快速查看当前主机名

  • hostnamectl set-hostname:用于永久修改主机名

  • 示例主机名 tdnode01 仅为示例,实际部署时请替换为现场规范主机名

主机名建议命名规则:

  • 简短清晰

  • 能体现节点用途

  • 避免中文、空格和特殊字符

  • 建议统一风格,例如:tdnode01tdnode02tdnode03

2. 检查基础资源

复制代码
ip a
free -h
lscpu
lsblk
df -h
timedatectl

如果时区不正确:

复制代码
timedatectl set-timezone Asia/Shanghai

3. 配置 hosts

编辑:

复制代码
vi /etc/hosts

追加示例:

复制代码
10.10.20.31 tdnode01

验证:

复制代码
cat /etc/hosts

说明:这里的写法可以理解为 <本机业务IP,例如 10.10.20.31> <主机名,例如 tdnode01>。Word 原文里也是先改 hostname,再补 /etc/hosts 做本地解析。

4. 关闭防火墙

复制代码
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

5. 测试磁盘 IO

复制代码
dd oflag=direct if=/dev/zero of=/home/diskdata1 bs=480k count=100000
dd if=/home/diskdata1 of=/dev/null bs=1M count=10000

说明:

  • 写入测试大于 150MB/s 为正常

  • 读取测试大于 150MB/s 为正常

  • 如果磁盘 IO 低于 150MB/s,需继续排查 RAID、磁盘类型或挂载规划。Word 原文对 IO 的建议就是这个口径。


二、目录初始化

1. 先查看哪个挂载点空间有富余

复制代码
lsblk
df -h

如果准备使用 /home,可单独确认:

复制代码
df -h /home

2. 确定部署基础目录

优先选择空间富余较大的挂载点作为 TDengine 部署目录。

建议原则:

  • /home 空间充足:使用 /home/tdengine

  • /data 空间充足:使用 /data/tdengine

  • /app 空间充足:使用 /app/tdengine

以下以 /home/tdengine 为例。

3. 创建目录

复制代码
mkdir -p /home/tdengine/{data,log,core,soft,tmp,dump}
ls -ld /home/tdengine /home/tdengine/*

如果实际使用 /data/tdengine,则改为:

复制代码
mkdir -p /data/tdengine/{data,log,core,soft,tmp,dump}
ls -ld /data/tdengine /data/tdengine/*

4. 目录说明

  • data:数据目录

  • log:日志目录

  • core:core 文件目录

  • soft:安装包目录

  • tmp:临时目录

  • dump:导出目录

说明:Word 原文目录创建默认放在 /home/tdengine,并明确建议先看磁盘情况,找到空间大的目录作为 dataDir,通常优先考虑 /home


三、系统参数优化

说明:本节更适合作为 CentOS 7.9 单机部署场景的系统基线 使用,适用于 8--16 vCPU、16--64GB 内存 这类中小规模单机环境。它的主要作用是提升文件句柄、进程数、端口范围和排障能力,属于通用基线优化 ,不是针对某一台机器做的专项性能调优。优化主体这几类:fs.file-maxip_local_port_rangenproc/nofile/stack、core 和 SELinux。

1. 内核参数

复制代码
echo "fs.file-max = 1048576" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 10000 65534" >> /etc/sysctl.conf
sysctl -p

2. 用户资源限制

复制代码
echo "* soft nproc  65536" >> /etc/security/limits.conf
echo "* soft nofile 1048576" >> /etc/security/limits.conf
echo "* soft stack  65536" >> /etc/security/limits.conf
echo "* hard nproc  65536" >> /etc/security/limits.conf
echo "* hard nofile 1048576" >> /etc/security/limits.conf
echo "* hard stack  65536" >> /etc/security/limits.conf

echo "root soft nproc  65536" >> /etc/security/limits.conf
echo "root soft nofile 1048576" >> /etc/security/limits.conf
echo "root soft stack  65536" >> /etc/security/limits.conf
echo "root hard nproc  65536" >> /etc/security/limits.conf
echo "root hard nofile 1048576" >> /etc/security/limits.conf
echo "root hard stack  65536" >> /etc/security/limits.conf

3. core 文件配置

/home/tdengine 为例:

复制代码
echo "ulimit -c unlimited" >> /etc/profile
echo "kernel.core_pattern=/home/tdengine/core/core-%e-%p" >> /etc/sysctl.conf
sysctl -p

4. 验证

复制代码
ulimit -a
sudo su - root
ulimit -a

5. SELinux

复制代码
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

6. 路径一致性说明

本节中,只有 kernel.core_pattern 这条命令涉及实际目录路径,必须和前面创建的 core 目录保持一致

如果目录初始化使用的是:

复制代码
/home/tdengine/{data,log,core,soft,tmp,dump}

那么 core 路径就应写成:

复制代码
/home/tdengine/core/core-%e-%p

如果实际目录建在 /data/tdengine/core,这里也必须同步改成 /data/tdengine/core/core-%e-%p。一句话:目录建在哪,core 文件就落在哪,前后必须统一。 你当前稿子里把 core 路径改成了 /home/tdengine/core/...,这和当前目录规划是统一的;Word 原文写的是 /data/tdengine/core/...,但那与 /home/tdengine 目录线不一致,所以最终版按规范统一为 /home/tdengine/core/...


四、安装包下载上传与解压

1. 上传安装包到 soft 目录

复制代码
cd /home/tdengine/soft
ls -lh

安装包示例:

复制代码
tdengine-tsdb-oss-3.3.8.8-linux-x64.tar.gz

2. 解压并安装

复制代码
tar -zxvf tdengine-tsdb-oss-3.3.8.8-linux-x64.tar.gz
cd tdengine-tsdb-oss-3.3.8.8
./install.sh -e no

说明:将下载的压缩包上传到 /home/tdengine/soft 后解压,再执行 ./install.sh -e no


五、核心配置文件 taos.cfg

1. 编辑前先备份

在删除或修改配置前,先备份原配置文件:

复制代码
cp -p /etc/taos/taos.cfg /etc/taos/taos.cfg.bak_$(date +%F_%H%M%S)
ls -l /etc/taos/taos.cfg*

2. 编辑配置文件

复制代码
vi /etc/taos/taos.cfg

3. :d1000 的作用说明

进入 vi 之后,Word 原文写了"输入 :d1000"。它的作用是:

  • 从当前光标所在行开始,向下删除 1000 行

  • 常用于快速清空原有配置内容

  • 因为它是直接删,所以删除前必须先做备份

更稳的操作习惯:

  1. 先执行备份命令

  2. 进入 vi

  3. 输入 gg 回到第一行

  4. 再输入 :d1000

  5. i 进入插入模式,粘贴新配置

说明:输入 :d1000输入 i 这两个动作,但没解释用途,这里已经补完整了。

4. 输入新配置

复制代码
firstEp                     tdnode01:6030
fqdn                        tdnode01
serverPort                  6030
logDir                      /home/tdengine/log
dataDir                     /home/tdengine/data
tempDir                     /home/tdengine/tmp
#numOfCommitThreads          64  #cpu_num
#numOfVnodeQueryThreads     8
timezone                    UTC-8
locale                      en_US.UTF-8
charset                     UTF-8
monitor                     1
monitorFqdn                 localhost
logKeepDays                 10
debugflag                   131
keepColumnName              1
countAlwaysReturnValue      1
#supportVnodes               64 #cpu_num
slowLogThreshold            10
numOfRpcSessions            50000   ##max 10w
maxNumOfDistinctRes         10000000
shellActivityTimer          120
statusInterval              5
assert                      1
audit                       0
auditFqdn                   localhost
#rpcQueueMemoryAllowed       10737418240
telemetryReporting          0
keepAliveIdle               900
shareConnLimit              10       #3.3.4.0+
#numOfRpcThreads             8       #cpu_num/2,max 16
forceReadConfig             1        #3.3.5.0+
minReservedMemorySize       5120     #3.3.5.0+ MB
maxRetryWaitTime            100000   # Once used 2 replica, set this to avoid "Sync leader is unreachable"
arbSetAssignedTimeoutSec    5
enablePasswordPolicy        0
minPasswordLen              6
passwordComplexity          0
enableStrongPassword        0
forceReadConfig             1

保存退出:

复制代码
ESC
:wq

验证:

复制代码
cat /etc/taos/taos.cfg

5. 路径一致性说明

本节里,以下参数必须和你前面创建的目录路径保持一致

  • logDir ↔ 日志目录

  • dataDir ↔ 数据目录

  • tempDir ↔ 临时目录

也就是说,如果前面目录创建用的是:

复制代码
/home/tdengine/{data,log,core,soft,tmp,dump}

那这里就必须写成:

复制代码
logDir  /home/tdengine/log
dataDir /home/tdengine/data
tempDir /home/tdengine/tmp

Word 原文这里本身也是 /home/tdengine/log/home/tdengine/data/home/tdengine/tmp 这条线。


六、其他组件配置

进入目录:

复制代码
cd /etc/taos

1. taosadapter 配置

复制代码
sed -i 's/# path = "\/var\/log\/taos"/path = "\/home\/tdengine\/log"/g' taosadapter.toml
sed -i 's/keepDays = 30/keepDays = 10/g' taosadapter.toml
cat taosadapter.toml

2. taoskeeper 配置:定义 taoskeeper 使用的账号密码

为与全文密码统一,taoskeeper 密码统一改为 taosdb#-2026

复制代码
sed -i 's/username = "root"/username = "monitor"/g' taoskeeper.toml
sed -i 's/password = "taosdata"/password = "taosdb#-2026"/g' taoskeeper.toml
cat taoskeeper.toml

3. 路径一致性说明

本节里,以下路径必须和前面创建的日志目录一致

复制代码
path = "/home/tdengine/log"

如果你前面日志目录实际建在 /data/tdengine/log,这里也必须同步改成:

复制代码
path = "/data/tdengine/log"

Word 原文里 taosadapter.toml 默认改的是 /home/tdengine/logtaoskeeper.toml 默认密码是 historydata,这里仅将密码统一成了 taosdb#-2026


七、启动服务

1. 启动 taosd

复制代码
systemctl start taosd
systemctl status taosd

2. 启动 taosadapter、taoskeeper

复制代码
systemctl start taosadapter
systemctl start taoskeeper

systemctl status taosadapter
systemctl status taoskeeper

3. 一键启动方式

复制代码
/usr/local/taos/bin/start-all.sh

八、节点与服务验证(单机)

1. 如何进入 taos

执行以下命令进入 TDengine 命令行:

复制代码
taos

说明:

  • 这是最直接的本机登录方式

  • 前提是 taosd 已正常启动

  • 如果 root 密码已经修改,也可以显式指定账号密码登录,例如:

    taos -uroot -p'taosdb#-2026'

2. 验证命令

进入 taos 后执行:

复制代码
show dnodes;
show mnodes;

3. 重点检查

  • show dnodes; 是否能正常返回结果
  • 当前唯一节点状态是否为 ready
  • show mnodes; 是否能正常返回元数据节点信息

说明:

单机场景也建议保留这一步,但更适合称为"节点与服务验证",本质上是在确认 taosd 是否真正可用,而不只是"命令能执行"。


九、初始化账号与授权

复制代码
taos
或者
taos -uroot -p'taosdb#-2026'

进入 taos 后执行:

创建与"第六步:先定义 taoskeeper 使用的账号密码"之对应的数据库账号

复制代码
alter user root pass 'taosdb#-2026';
create user monitor pass 'taosdb#-2026';
alter user monitor createdb 1;

退出后验证:

复制代码
taos -uroot -p'taosdb#-2026'

说明:这里已将 root、monitor、后续登录验证密码统一为 taosdb#-2026


十、建库建表

1. 建库建表前服务器资源确认

复制代码
nproc
lscpu | egrep -i 'Model name|CPU\(s\)|Thread|Core|Socket|NUMA'
free -h
df -hT
lsblk -o NAME,SIZE,TYPE,ROTA,MOUNTPOINT,MODEL
ulimit -n

重点关注:

  • CPU 核数

  • 内存大小

  • 数据目录所在挂载点

  • 磁盘类型,特别是是否为 SSD

  • ulimit -n 是否过小

2. 建库

登录 TDengine:

复制代码
taos -h 10.10.20.31 -u root -p"taosdb#-2026"
方案一:推荐配置
复制代码
CREATE DATABASE cxszlsdb
  VGROUPS 8
  REPLICA 1
  BUFFER 256
  CACHEMODEL 'both'
  CACHESIZE 32;

SHOW DATABASES;
SHOW CREATE DATABASE cxszlsdb;

适用说明:该方案更适用于 16 vCPU / 31GB 内存 / 单机 这类配置,属于偏稳妥的单机建库参数组合。你当前稿子里已经把这一档定义成"适用于 16 vCPU / 31GB 内存 / 单机,偏稳妥"。

方案二:轻量配置
复制代码
CREATE DATABASE cxszlsdb
  VGROUPS 4
  REPLICA 1
  BUFFER 128
  CACHEMODEL 'both'
  CACHESIZE 16;

SHOW DATABASES;
SHOW CREATE DATABASE cxszlsdb;

适用说明:该方案更适用于 4--8 vCPU / 8--16GB 内存 / 单机,或者虽然是 16 vCPU / 31GB 单机,但希望先按更保守、更轻量方式落库的场景。你当前稿子里也是按"资源更保守时使用"来写的。

3. 建超级表

切换数据库:

复制代码
USE cxszlsdb;

创建 FLOAT 类型超级表:

复制代码
CREATE STABLE szls_float (
  ts TIMESTAMP,
  val FLOAT,
  quality INT
) TAGS (
  gysj    NCHAR(128),
  gybm    NCHAR(128),
  aq      NCHAR(10),
  hb      NCHAR(10),
  sb      NCHAR(10),
  ny      NCHAR(10),
  sc      NCHAR(10),
  miaoshu NCHAR(256),
  tag9    NCHAR(100),
  tag10   NCHAR(100),
  tag11   VARCHAR(100),
  tag12   VARCHAR(100),
  tag13   VARCHAR(100),
  tag14   VARCHAR(100),
  tag15   VARCHAR(100),
  tag16   VARCHAR(100),
  tag17   VARCHAR(100),
  tag18   VARCHAR(100),
  tag19   VARCHAR(100),
  tag20   VARCHAR(100)
);

创建 INT 类型超级表:

复制代码
CREATE STABLE szls_int (
  ts TIMESTAMP,
  val INT,
  quality INT
) TAGS (
  gysj    NCHAR(128),
  gybm    NCHAR(128),
  aq      NCHAR(10),
  hb      NCHAR(10),
  sb      NCHAR(10),
  ny      NCHAR(10),
  sc      NCHAR(10),
  miaoshu NCHAR(256),
  tag9    NCHAR(100),
  tag10   NCHAR(100),
  tag11   VARCHAR(100),
  tag12   VARCHAR(100),
  tag13   VARCHAR(100),
  tag14   VARCHAR(100),
  tag15   VARCHAR(100),
  tag16   VARCHAR(100),
  tag17   VARCHAR(100),
  tag18   VARCHAR(100),
  tag19   VARCHAR(100),
  tag20   VARCHAR(100)
);

创建 VARCHAR(128) 类型超级表:

复制代码
CREATE STABLE szls_varchar128 (
  ts TIMESTAMP,
  val VARCHAR(128),
  quality INT
) TAGS (
  gysj    NCHAR(128),
  gybm    NCHAR(128),
  aq      NCHAR(10),
  hb      NCHAR(10),
  sb      NCHAR(10),
  ny      NCHAR(10),
  sc      NCHAR(10),
  miaoshu NCHAR(256),
  tag9    NCHAR(100),
  tag10   NCHAR(100),
  tag11   VARCHAR(100),
  tag12   VARCHAR(100),
  tag13   VARCHAR(100),
  tag14   VARCHAR(100),
  tag15   VARCHAR(100),
  tag16   VARCHAR(100),
  tag17   VARCHAR(100),
  tag18   VARCHAR(100),
  tag19   VARCHAR(100),
  tag20   VARCHAR(100)
);

4. 查看超级表结构

复制代码
DESCRIBE cxszlsdb.szls_float;
DESCRIBE cxszlsdb.szls_varchar128;
DESCRIBE cxszlsdb.szls_int;

十一、部署完成后验收

1. 系统侧

复制代码
lscpu
free -g
lsblk
df -TH
cat /etc/hosts
ip a
timedatectl

2. 数据库侧

复制代码
taos -uroot -p'taosdb#-2026'

进入后执行:

复制代码
show cluster machines\G;
show databases;
show stables;

3、注册登录TDengine TSDB-OSS 管理系统

登录地址:http://10.10.20.31:6060/

登录该系统时,提示需要注册才能登录的话,返回服务器执行以下语句。

复制代码
echo "EXPLORER_SKIP_REGISTER=true" >> /etc/default/taos-explorer

systemctl restart taos-explorer

十二、补充处理(按需处理)

1. Explorer 反复注册

这里不需要默认执行,只有 Explorer 出现反复注册时才执行。

复制代码
echo "EXPLORER_SKIP_REGISTER=true" >> /etc/default/taos-explorer
systemctl restart taos-explorer

2. 修改密码时报错

/etc/taos/taos.cfg 末尾增加:

复制代码
enablePasswordPolicy 0
minPasswordLen 6
passwordComplexity 0
enableStrongPassword 0
forceReadConfig 1

然后重启服务,再执行:

复制代码
alter user root pass 'taosdb#-2026';

十三、可选:命令快捷方式配置

该步骤为个人运维便捷项 ,不是部署必做项。

适用于日常频繁登录 TDengine 命令行的场景。若不需要快捷方式,可跳过。

1. 当前 shell 临时生效

以 root 用户为例:

复制代码
alias taosroot='taos -h 10.10.20.31 -u root -p"taosdb#-2026"'

以 monitor 用户为例:

复制代码
alias taosmonitor='taos -h 10.10.20.31 -u monitor -p"taosdb#-2026"'

2. 写入 ~/.bashrc 永久生效

复制代码
echo 'alias taosroot='\''taos -h 10.10.20.31 -u root -p"taosdb#-2026"'\''' >> ~/.bashrc

echo 'alias taosmonitor='\''taos -h 10.10.20.31 -u monitor -p"taosdb#-2026"'\''' >> ~/.bashrc

source ~/.bashrc

3. 使用说明

  • taosroot:使用 root 账号快速进入 taos
  • taosmonitor:使用 monitor 账号快速进入 taos

4. 注意事项

  • 该方式会将明文密码写入 ~/.bashrc,仅建议在个人可控运维终端使用
  • 不建议在多人共用账号、堡垒机公共环境或安全要求较高的服务器上使用
  • 如果后续修改了 root 或 monitor 密码,需要同步修改对应 alias
相关推荐
m0_514520572 小时前
宝塔面板怎样实现数据库的多地异地自动备份_结合阿里云OSS与定时任务插件
jvm·数据库·python
北漂Zachary2 小时前
四大编程语言终极对决
java·linux·数据库
qq_334563552 小时前
golang如何优化磁盘IO性能_golang磁盘IO性能优化思路
jvm·数据库·python
凤年徐2 小时前
Linux 权限完全指南
linux·运维·服务器
重生的黑客2 小时前
Linux 开发工具(终篇):GDB 调试进阶与系统编程入门
linux·运维·服务器
Aloudata2 小时前
基于 NoETL 语义编织技术构建 AI-Ready 数据底座
数据库·人工智能·数据分析·skill·语义编织
fysuccess2 小时前
Ubuntu 22.04 零基础安装 Hermes 完整入门指南
linux·ubuntu·蓝桥杯
hweiyu002 小时前
Linux命令:iostat
linux·运维
Lentou2 小时前
上线部署之Nginx相关,解析相关nginx配置
运维·nginx