CentOS7.9部署TDengine时序库社区版实战指南:安装、配置、建库、建超级表与验证
1、TDengine官网https://www.taosdata.com/2、TDengine TSDB 文档https://docs.taosdata.com/3、TDengine 下载中心https://www.taosdata.com/download-center?productTDengineTSDB-OSSversion3.3.8.8platformDockerarchitecturex644、欢迎来到 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示例 IP10.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仅为示例实际部署时请替换为现场规范主机名主机名建议命名规则简短清晰能体现节点用途避免中文、空格和特殊字符建议统一风格例如tdnode01、tdnode02、tdnode032. 检查基础资源ip a free -h lscpu lsblk df -h timedatectl如果时区不正确timedatectl set-timezone Asia/Shanghai3. 配置 hosts编辑vi /etc/hosts追加示例10.10.20.31 tdnode01验证cat /etc/hosts说明这里的写法可以理解为本机业务IP例如 10.10.20.31 主机名例如 tdnode01。4. 关闭防火墙systemctl stop firewalld systemctl disable firewalld systemctl status firewalld5. 测试磁盘 IOdd oflagdirect if/dev/zero of/home/diskdata1 bs480k count100000 dd if/home/diskdata1 of/dev/null bs1M count10000说明写入测试大于 150MB/s 为正常读取测试大于 150MB/s 为正常如果磁盘 IO 低于 150MB/s需继续排查 RAID、磁盘类型或挂载规划。二、目录初始化1. 先查看哪个挂载点空间有富余lsblk df -h如果准备使用/home可单独确认df -h /home2. 确定部署基础目录优先选择空间富余较大的挂载点作为 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/*如果实际使用/app/tdengine则改为mkdir -p /app/tdengine/{data,log,core,soft,tmp,dump} ls -ld /app/tdengine ls -ld /app/tdengine/*4. 目录说明data数据目录log日志目录corecore 文件目录soft安装包目录tmp临时目录dump导出目录说明明确建议先看磁盘情况找到空间大的目录作为dataDir通常优先考虑/home。三、系统参数优化说明本节更适合作为CentOS 7.9 单机部署场景的系统基线使用适用于8–16 vCPU、16–64GB 内存这类中小规模单机环境。它的主要作用是提升文件句柄、进程数、端口范围和排障能力属于通用基线优化不是针对某一台机器做的专项性能调优。优化主体这几类fs.file-max、ip_local_port_range、nproc/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 -p2. 用户资源限制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.conf3. core 文件配置这一步主要是设置 Linux 在程序崩溃时生成 core dump 文件的保存路径和命名规则。它告诉系统以后如果某个进程异常崩溃需要生成 core 文件就把文件放到/app/tdengine/core/目录下并按这个格式命名。以/home/tdengine为例echo ulimit -c unlimited /etc/profile echo kernel.core_pattern/home/tdengine/core/core-%e-%p /etc/sysctl.conf sysctl -p /app下部署的情况修改路径 echo kernel.core_pattern/app/tdengine/core/core-%e-%p /etc/sysctl.conf sysctl -p4. 验证echo ulimit -c unlimited /etc/profile # 永久给新会话用 ulimit -c unlimited # 当前会话立刻生效 ulimit -a | grep core # 检查当前会话 su - root ulimit -a | grep core # 检查新登录会话5. SELinuxsed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config查看SELinux直接用这几个命令就行 1看配置文件里是不是已经改成 disabled grep ^SELINUX /etc/selinux/config 正常你会看到 SELINUXdisabled 2看当前系统运行状态 getenforce 或者 sestatus将配置文件 /etc/selinux/config中所有 SELINUXenforcing的行替换为 SELINUXdisabled从而在系统重启后永久禁用 SELinux。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/...这和当前目录规划是统一的四、安装包下载上传与解压官网下载地址截图1. 上传安装包到/tdengine/soft目录mobaxterm上传文件方法正在上传中上传完成cd /home/tdengine/soft ls -lh安装包示例tdengine-tsdb-oss-3.3.8.8-linux-x64.tar.gz2. 解压并安装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。./install.sh -e no //出现该指令按回车用于跳过安装过程中的所有交互式提示使安装自动进行五、核心配置文件 taos.cfg1. 编辑前先备份在删除或修改配置前先备份原配置文件cd /etc/taos 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.cfg3.:d1000的作用说明进入vi之后“输入:d1000”。它的作用是从当前光标所在行开始向下删除 1000 行常用于快速清空原有配置内容因为它是直接删所以删除前必须先做备份更稳的操作习惯先执行备份命令进入vi输入gg回到第一行再输入:d1000按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 0 audit 0 auditFqdn localhost #rpcQueueMemoryAllowed 10737418240 telemetryReporting 0 keepAliveIdle 900 shareConnLimit 10 #3.3.4.0 #numOfRpcThreads 8 #cpu_num/2max 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保存退出ESC :wq验证cat /etc/taos/taos.cfg5. 路径一致性说明本节里以下参数必须和你前面创建的目录路径保持一致logDir↔ 日志目录dataDir↔ 数据目录tempDir↔ 临时目录也就是说如果前面目录创建用的是/home/tdengine/{data,log,core,soft,tmp,dump}那这里就必须写成logDir /home/tdengine/log dataDir /home/tdengine/data tempDir /home/tdengine/tmp六、其他组件配置进入目录cd /etc/taos1. 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.toml2. taoskeeper 配置定义 taoskeeper 使用的账号密码为与全文密码统一taoskeeper 密码统一改为taosdb#-2026sed -i s/username root/username monitor/g taoskeeper.toml sed -i s/password taosdata/password taosdb#-2026/g taoskeeper.toml sed -i s|# path /var/log/taos|path /app/tdengine/log|g /etc/taos/taoskeeper.toml sed -i s|keepDays 30|keepDays 10|g /etc/taos/taoskeeper.toml cat taoskeeper.toml3. 路径一致性说明本节里以下路径必须和前面创建的日志目录一致path /home/tdengine/log如果你前面日志目录实际建在/data/tdengine/log这里也必须同步改成path /data/tdengine/log七、启动服务1. 启动 taosdsystemctl start taosd systemctl status taosd2. 启动 taosadapter、taoskeepersystemctl start taosadapter systemctl start taoskeeper systemctl status taosadapter systemctl status taoskeeper3. 一键启动方式/usr/local/taos/bin/start-all.sh八、节点与服务验证单机1. 如何进入 taos执行以下命令进入 TDengine 命令行taos说明这是最直接的本机登录方式前提是taosd已正常启动如果 root 密码已经修改也可以显式指定账号密码登录例如taos -uroot -ptaosdb#-20262. 验证命令进入 taos 后执行show users; show dnodes; show mnodes;3. 重点检查show dnodes;是否能正常返回结果当前唯一节点状态是否为readyshow mnodes;是否能正常返回元数据节点信息说明单机场景也建议保留这一步但更适合称为“节点与服务验证”本质上是在确认taosd 是否真正可用而不只是“命令能执行”。九、初始化账号与授权taos 或者 taos -uroot -ptaosdb#-2026进入 taos 后执行创建与“第六步先定义 taoskeeper 使用的账号密码”之对应的数据库账号alter user root pass taosdb#-2026; create user monitor pass taosdb#-2026; alter user monitor createdb 1; show users; --业务连接用户 create user szlsuser pass taosdb#-2026 sysinfo 0 createdb 0; show users;monitor就是给 TDengine 监控组件单独准备的数据库登录账号相当于“监控专用工号”不是系统用户也不是数据库核心必须账号。退出后验证taos -uroot -ptaosdb#-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按上图这台服务器的配置来看 16 vCPU 31G 内存 /app 2T 当前是 单机社区版 方案 A更稳更适合先上线验证 CREATE DATABASE szlsdb VGROUPS 4 REPLICA 1 BUFFER 256 CACHEMODEL both CACHESIZE 32;重点关注CPU 核数内存大小数据目录所在挂载点磁盘类型特别是是否为 SSDulimit -n是否过小2. 建库登录 TDenginetaos -h 10.10.20.31 -u root -ptaosdb#-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. 查看超级表结构show stables; DESCRIBE szls_float; DESCRIBE szls_varchar128; DESCRIBE szls_int;十一、部署完成后验收1. 系统侧lscpu free -g lsblk df -TH cat /etc/hosts ip a timedatectl2. 数据库侧taos -uroot -ptaosdb#-2026进入后执行show cluster machines\G; show databases; show stables;3、注册登录TDengine TSDB-OSS 管理系统登录地址http://10.10.20.31:6060/登录该系统时提示需要注册才能登录的话返回服务器执行以下语句。echo EXPLORER_SKIP_REGISTERtrue /etc/default/taos-explorer systemctl restart taos-explorer十二、补充处理按需处理1. Explorer 反复注册这里不需要默认执行只有 Explorer 出现反复注册时才执行。echo EXPLORER_SKIP_REGISTERtrue /etc/default/taos-explorer systemctl restart taos-explorer2. 修改密码时报错在/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 taosroottaos -h 10.10.20.31 -u root -ptaosdb#-2026以 monitor 用户为例alias taosmonitortaos -h 10.10.20.31 -u monitor -ptaosdb#-20262. 写入~/.bashrc永久生效echo alias taosroot\taos -h 10.10.20.31 -u root -ptaosdb#-2026\ ~/.bashrc echo alias taosmonitor\taos -h 10.10.20.31 -u monitor -ptaosdb#-2026\ ~/.bashrc source ~/.bashrc3. 使用说明taosroot使用 root 账号快速进入 taostaosmonitor使用 monitor 账号快速进入 taos4. 注意事项该方式会将明文密码写入~/.bashrc仅建议在个人可控运维终端使用不建议在多人共用账号、堡垒机公共环境或安全要求较高的服务器上使用如果后续修改了 root 或 monitor 密码需要同步修改对应 alias