TDengine 服务无法启动常见原因

taosd 是 TDengine 的核心服务进程,如果无法启动将导致整个数据库无法使用,了解常导致无法启动的原因,可以帮你快速解决问题。

1. 如何查找日志

无法启动的原因记录在日志中,日志文件默认在 /var/log/taos 的 taosdlog.0 或者 tasdlog.1 文件,当前使用的是哪个看最后修改日期。

通常查看日志结尾为 ERROR 类日志即可快速查找出错误原因,可以使用以下脚本快速查找:

tail -n 1000 /var/log/taos/taosdlog.0 | grep ERROR

2. 常见原因

2.1 配置文件不正确

1. FQDN 不正确

现象:

示例在 taos.cfg 中的 fqdn 配置为一个不合法的名称: abcdef,启动 taosd 会失败,报如下错:

解决方法:

配置正确的 FQDN, 正确的 FQDN 必须是能 ping 通并显示的是预期 IP 地址。

配置 fqdn 在 linux 是在 /etc/hosts 中。

注意:

taos.cfg 中的 FQDN 只在 taosd 服务第一次启动时读取使用,启动成功后会保存 dataDir 指向的数据存储目录下的 dnode/dnode.json 文件中,下次再启动不再使用 taos.cfg 配置文件中,而会直接使用 dnode.json 中保存的 FQDN。

如果 dnode.json 已创建,若要修改 FQDN,需要 taos.cfg 及 dnode.json 两处都修改方可生效。

2. serverPort 不正确

示例在 taos.cfg 中的 serverPort 配置为一个超出范围的不合法端口:65539,启动 taosd 会失败,报如下错:

解决方法:

确保 serverPort 端口在指定范围内并且不被其它程序占用。

注意:

serverPort 端口修改同上面 FQDN 相同

3. dataDir 配置

dataDir 是配置数据库的存储目录,目录无访问权限或不可写会导致服务启动失败。

2.2 WAL 损坏

WAL 文件在数据写入过程中使用频繁,当突然断电再重启后最容易出现 WAL 损坏的现象。

现象:

解决方法:

把日志中提示损坏的 WAL 文件移出当前目录并备份到一个安全的地方,重新启动 taosd 即可。

WAL 中记录着已落或未落盘的数据,移除 WAL 后可能会导致部分数据丢失。

如果数据非常重要,联系涛思数据技术人员尝试修复损坏的 WAL 文件,但数据不一定能修复回来。

2.3 数据版本不兼容,如降版本操作

版本升级,老版本数据可以在新版本中完全兼容,但新版本数据在老版本中有可能会无法识别,以下是降版本后导致的 taosd 无法启动的现象:

现象:

上面的报错仅是其中一种,数据不兼容可能会报各种错误,识别的方式即看是否有降版本操作。

解决方法:

卸载老版本,再安装回原来版本即可。

2.4 端口被占用

taosd 启动过程中,taos.cfg 中的 serverPort 端口被其它程序占用后,会导致启动失败。

现象:

如下是指定的 serverPort 为 9100 的端口被其它应用占用:

解决方法:

更换其它未使用的端口或停止占用端口的应用均可解决

2.5 dataDir 损坏

在突然断电或关机的情况下,可能会导致正在写入数据损坏,再启动 taosd 服务时,会遇到无法启动的现象

现象:

以下示例是数据文件 v2f1736ver3.data 丢失,导致 taosd 无法启动

解决方法:

如果数据非常重要,联系涛思数据技术人员尝试修复损坏的文件。

如果只是测试数据,仅想把 taosd 启动起来,可以根据报错的文件,删除报错文件所在 vnode 目录下的 tsdb 目录即可。如上例中,删除 /var/lib/taos/vnode/vnode2/tsdb 目录,即可重新启动 taosd。

2.6 磁盘空间不足

TDengine 当存放数据磁盘空间小于 2G 时,会拒绝写入请求并告警磁盘空间不足,此时 taosd 服务仍然可以正常启动和工作,当磁盘空间继续减小,全部被占满后,taosd 服务将无法再启动。

现象:

解决方法:

清理出磁盘空间或增加磁盘

2.7 已有实例运行

taosd 服务是单进程工作模式,一台机器上只允许运行一个实例,如果前面已有实例在运行,再启动新实例会报启动失败错误,提示日志为尝试多次锁定 .running 失败,如下:

现象:

解决方法:

ps aux | grep taosd 查看具体占用实例进程,KILLL 后再启动即可

2.8 正在数据同步

启动 taosd 后,日志长时间显示进行 restore ,无法进入服务状态。

这个现象一般出现在集群中,当集群中某个节点上的 taosd 服务停止了一段时间,集群正在大量写入数据中,再启动已停止的节点时会出现此现象。

原因是在做数据同步,停止节点上的数据和正在运行集群中的数据有了一段差距,需要更新到与集群数据相同才可接入集群。

当需要同步数据比较多时,启动时间就会比较长,日志如下:

现象:

解决方法:

  1. 等待,等到与集群数据同步后即会进入服务状态

  2. 如果集群仍在大量数据写入,可以暂停集群数据写入,让落后节点尽快赶上来,再启动集群数据写入。

2.9不支持的平台

TDengine 服务端支持平台列表如下, 非列表中的平台,服务启动会报 0x8000013A 错误,表示不支持此平台。

|----------------|-----------|-------|-----|
| 版本 | X64 64bit | ARM64 | |
| CentOS | 7.9 以上 | ● | ● |
| Ubuntu | 18 以上 | ● | ● |
| RedHat | RHEL 7 以上 | ● | ● |
| Debian | 6.0 以上 | ● | ● |
| FreeBSD | 12 以上 | ● | ● |
| OpenSUSE | 全部版本 | ● | ● |
| SUSE Linux | 11 以上 | ● | ● |
| Fedora | 21 以上 | ● | ● |
| Windows Server | 2016 以上 | ●/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 | 11.0 以上 | | ● |

注:

  1. ● 表示经过官方测试验证, ○ 表示非官方测试验证,E 表示仅企业版支持。

  2. 社区版仅支持主流操作系统的较新版本,包括 Ubuntu 18+/CentOS 7+/CentOS Stream/RedHat/Debian/CoreOS/FreeBSD/OpenSUSE/SUSE Linux/Fedora/macOS 等。

访问官网

更多内容欢迎访问 TDengine 官网

相关推荐
24k小善3 小时前
flink集成tidb cdc
大数据·flink·tidb
kngines5 小时前
【实战ES】实战 Elasticsearch:快速上手与深度实践-3.2.3 案例:新闻搜索引擎的相关性优化
大数据·elasticsearch·搜索引擎
秦南北6 小时前
国内领先的宠物类电商代运营公司品融电商
大数据·人工智能·电商
problc8 小时前
Manus AI 全球首款通用型 Agent,中国制造
大数据·人工智能·制造
*星星之火*10 小时前
【Flink银行反欺诈系统设计方案】3.欺诈的7种场景和架构方案、核心表设计
大数据·架构·flink
黑客KKKing11 小时前
Refreshtoken 前端 安全 前端安全方面
大数据·前端·网络·安全·web安全
永洪科技11 小时前
共绘智慧升级,看永洪科技助力由由集团起航智慧征途
大数据·数据分析·数据可视化·bi
好记性+烂笔头11 小时前
Hadoop八股
大数据·hadoop·分布式
Python数据分析与机器学习11 小时前
《基于Hadoop的出租车需求预测系统设计与实现》开题报告
大数据·hadoop·分布式·python·算法·数据挖掘·数据分析
StableAndCalm11 小时前
什么是hadoop
大数据·hadoop·分布式