TDengine 社区问题双周精选 | 第三期

Hi,大家好,为防止过多的共性问题困扰用户,方便用户学习、吸收经验,我们会对近期社区内用户遇到的共性问题进行精选、汇总,以专栏的形式给大家带来分享。这是本专栏的第三期内容,分享的内容如下:

内容预览

  1. 为何批量写入数据时,时间戳使用 NOW 函数拼接会导致数据丢失?
  2. 如何给集群平滑扩容?
  3. 集群扩容后,DNode 状态为 Offline 该如何排查?
  4. 如何给集群平滑缩容?
  5. 新手小福利:快速上手 TDengine 建模。

1. 为何批量写入数据时,时间戳使用 NOW 函数拼接会导致数据丢失?

回答这个问题首先需要强调一个概念,TDengine 作为一个时序数据库(Time-Series Database),首个时间戳字段起到主键的作用,内存索引的构建、磁盘数据的存储与其密切相关,不能有重复的时间戳。

NOW 函数(以及 NOW 关键字)返回客户端当前时间。当执行批量写入时,若首列时间戳给的值都是 NOW,在数据库默认毫秒的时间级别下是区分不开的,后续写入的重复时间戳将会丢失或更新,处理重复时间戳的具体逻辑由在 TDengine 中建库(Database)时的 Update 参数决定。

2. 如何给集群平滑扩容?

对集群进行扩容需要手动添加节点。具体操作步骤如下:

  1. 第一个节点部署成功后,为后续待添加的节点依次安装 TDengine 服务端程序,编辑 /etc/hosts,将集群所有节点的域名解析添加进去(如已部署 DNS server,则无需编辑)。
  2. 将第一个节点的配置文件 taos.cfg 复制到待添加的节点中,将其中的 fqdn 参数改为节点自身的 fqdn (hostname)。
  3. 启动待添加节点的 taosd 服务,然后进入 taos 命令行执行下面语句将待添加节点添加进集群:CREATE DNode ‘Node2:6030’ 。
  4. 执行 SHOW DNodes 查看数据节点的状态是否为 Ready。为 Ready 代表集群扩容成功。

3. 集群扩容后,DNode 状态为 Offline 该如何排查?

新的节点正常加入集群后,数据节点列表中会显示该节点处于 Ready 状态。若该节点状态为 Offline,可按照如下内容进行排查:

  1. 查看该节点 taosd 是否已启动、防火墙是否关闭;
  2. 确认待加入节点的数据文件夹是否清空;
  3. 检查所有节点 /etc/hosts 域名解析是否完整、有效(需要有所有节点的解析,包括 arbitrator);
  4. 该节点 firstEP、fqdn 参数是否正确配置。

4. 如何给集群平滑缩容?

集群缩容是通过 DROP DNode 删除节点来实现的,直接停止指定 DNode 的 taosd 进程只会让该节点 Offline,但不能完成缩容的效果。具体操作步骤如下:

  1. 进入 taos 命令行,执行 SHOW DNodes 查看待删除节点的状态,若是 ready 则可进行下一步;
  2. 从当前集群中删除指定节点 DROP DNode ‘Node2:6030’ 或者 DROP DNode <DNodeId>。
  3. 执行 SHOW DNodes 查看集群节点信息,最后确认待删除节点的信息已从列表中消失。

注意:删除节点完成之前,集群会将该 DNode 的数据迁移到其他节点上,完成速度取决于网络的带宽、磁盘的 IO,在完成之前千万不要停止待删除节点的 taosd 服务。

5. 新手小福利:快速上手 TDengine 建模。

在社区支持的过程中,能发现很多新手小伙伴在部署 TDengine 后不知道如何进一步体验,我们的建议是跑一跑官网文档的语句,但文档内容较多,为了方便社区小伙伴快速上手,我们将官网文档的示例模型浓缩、汇总了一下,让用户尽可能快的了解 TDengine 建模方法:[建模入门]

结尾语

感谢您阅读本期问题精选,希望以上内容对您有帮助。您在使用 TDengine 这款 TIme-Series Database 的过程中,若遇到棘手的问题或对 TDengine 有改进意见,欢迎在 GitHub 上给我们提 Issue ,内容越详细越好,也可微信扫下方二维码加入社区,与大家进行交流 ~ 最后,感谢使用 TDengine!

TDengine Database 小T二维码
加小 T 为好友,立即加入到物联网大数据技术交流群