尝鲜了一把 TDengine 3.0,坑还是不少,很多地方不能套用 2.x 的经验了。
以下是踩过的一些坑。

目录

  • 1.mnode 去那里了?
  • 2.CREATE DATABASE 不成功
  • 3.数据库和超级表的详细信息怎么看?
  • 4.RESTful 不兼容
  • 5.无法修改副本数
  • 6.Out of dnodes
  • 7.消失的时间戳
  • 8.debugflag 修改不了
  • 更新中.................

1.mnode 去那里了?

用过 TDengine 2.x 的都知道,多节点 TDengine 集群,mnode 必须配置多个(2~3)才能保证高可用。
mnode 数量受 numOfMnodes 参数控制。
但是 TDengine 3.0 这个参数已经消失了。

[root@c0-14 taos]# grep -i mnode /etc/taos/taos.cfg.new
# The interval of dnode reporting status to mnode
# The interval for taos shell to send heartbeat to mnode

对于新建的集群(见《TDengine3.0基础操作》),mnode 只有一个。


taos> show mnodes;id      |            endpoint            |     role     |  status   |       create_time       |
====================================================================================================1 | c0-14:6030                     | leader       | ready     | 2022-08-24 11:26:31.344 |
Query OK, 1 rows in database (0.002213s)

查看了官方文档,原来 mnode 是需要集群创建好以后,手动创建的。
这无形中给爱偷懒的小朋友们增加难度了。

taos> create mnode on dnode 2;
Query OK, 0 of 0 rows affected (8.146043s)taos> create mnode on dnode 3;
Query OK, 0 of 0 rows affected (0.606264s)taos> show mnodes;id      |            endpoint            |     role     |  status   |       create_time       |
====================================================================================================1 | c0-14:6030                     | leader       | ready     | 2022-08-24 11:26:31.344 |2 | c0-15:6030                     | follower     | ready     | 2022-08-24 13:30:14.651 |3 | c0-16:6030                     | follower     | ready     | 2022-08-24 13:30:26.463 |
Query OK, 3 rows in database (0.001666s)

2.CREATE DATABASE 不成功

taos> create database db01 replica 2 days 1 keep 30 blocks 27;DB error: syntax error near "days 1 keep 30 blocks 27;" (0.000144s)

按照 2.x 的命令创建数据,直接报 DB error: syntax error,查看官方文档才知道,相关参数已经改的他妈都不认识了。

以下是官方介绍:

参数说明
BUFFER: 一个 VNODE 写入内存池大小,单位为 MB,默认为 96,最小为 3,最大为 16384。
CACHEMODEL:表示是否在内存中缓存子表的最近数据。默认为 none。
none:表示不缓存。
last_row:表示缓存子表最近一行数据。这将显著改善 LAST_ROW 函数的性能表现。
last_value:表示缓存子表每一列的最近的非 NULL 值。这将显著改善无特殊影响(WHERE、ORDER BY、GROUP BY、INTERVAL)下的 LAST 函数的性能表现。
both:表示同时打开缓存最近行和列功能。
CACHESIZE:表示每个 vnode 中用于缓存子表最近数据的内存大小。默认为 1 ,范围是[1, 65536],单位是 MB。
COMP:表示数据库文件压缩标志位,缺省值为 2,取值范围为 [0, 2]。
0:表示不压缩。
1:表示一阶段压缩。
2:表示两阶段压缩。
DURATION:数据文件存储数据的时间跨度。可以使用加单位的表示形式,如 DURATION 100h、DURATION 10d 等,支持 m(分钟)、h(小时)和 d(天)三个单位。不加时间单位时默认单位为天,如 DURATION 50 表示 50 天。
WAL_FSYNC_PERIOD:当 WAL 参数设置为 2 时,落盘的周期。默认为 3000,单位毫秒。最小为 0,表示每次写入立即落盘;最大为 180000,即三分钟。
MAXROWS:文件块中记录的最大条数,默认为 4096 条。
MINROWS:文件块中记录的最小条数,默认为 100 条。
KEEP:表示数据文件保存的天数,缺省值为 3650,取值范围 [1, 365000],且必须大于或等于 DURATION 参数值。数据库会自动删除保存时间超过 KEEP 值的数据。KEEP 可以使用加单位的表示形式,如 KEEP 100h、KEEP 10d 等,支持 m(分钟)、h(小时)和 d(天)三个单位。也可以不写单位,如 KEEP 50,此时默认单位为天。
PAGES:一个 VNODE 中元数据存储引擎的缓存页个数,默认为 256,最小 64。一个 VNODE 元数据存储占用 PAGESIZE * PAGES,默认情况下为 1MB 内存。
PAGESIZE:一个 VNODE 中元数据存储引擎的页大小,单位为 KB,默认为 4 KB。范围为 1 到 16384,即 1 KB 到 16 MB。
PRECISION:数据库的时间戳精度。ms 表示毫秒,us 表示微秒,ns 表示纳秒,默认 ms 毫秒。
REPLICA:表示数据库副本数,取值为 1 或 3,默认为 1。在集群中使用,副本数必须小于或等于 DNODE 的数目。
RETENTIONS:表示数据的聚合周期和保存时长,如 RETENTIONS 15s:7d,1m:21d,15m:50d 表示数据原始采集周期为 15 秒,原始数据保存 7 天;按 1 分钟聚合的数据保存 21 天;按 15 分钟聚合的数据保存 50 天。目前支持且只支持三级存储周期。
STRICT:表示数据同步的一致性要求,默认为 off。
on 表示强一致,即运行标准的 raft 协议,半数提交返回成功。
off 表示弱一致,本地提交即返回成功。
WAL_LEVEL:WAL 级别,默认为 1。
1:写 WAL,但不执行 fsync。
2:写 WAL,而且执行 fsync。
VGROUPS:数据库中初始 vgroup 的数目。
SINGLE_STABLE:表示此数据库中是否只可以创建一个超级表,用于超级表列非常多的情况。
0:表示可以创建多张超级表。
1:表示只可以创建一张超级表。
WAL_RETENTION_PERIOD:wal 文件的额外保留策略,用于数据订阅。wal 的保存时长,单位为 s。默认为 0,即落盘后立即删除。-1 表示不删除。
WAL_RETENTION_SIZE:wal 文件的额外保留策略,用于数据订阅。wal 的保存的最大上限,单位为 KB。默认为 0,即落盘后立即删除。-1 表示不删除。
WAL_ROLL_PERIOD:wal 文件切换时长,单位为 s。当 wal 文件创建并写入后,经过该时间,会自动创建一个新的 wal 文件。默认为 0,即仅在落盘时创建新文件。
WAL_SEGMENT_SIZE:wal 单个文件大小,单位为 KB。当前写入文件大小超过上限后会自动创建一个新的 wal 文件。默认为 0,即仅在落盘时创建新文件。

那么建库语句就需要修改为:

create database db01 replica 2 duration 1d keep 30 buffer 432;
taos> create database db01 replica 2 duration 1d keep 30 buffer 432;DB error: Invalid option replications: 2, only 1, 3 allowed (0.000341s)

居然不支持两副本了。

taos> create database db01 replica 3 duration 1d keep 30 buffer 432;
Query OK, 0 of 0 rows affected (8.826758s)

3.数据库和超级表的详细信息怎么看?

2.x 的时候,查看数据和超极表的详细信息,直接show databases;show stables 就可以了。
如下:

taos> show databases;name              |      created_time       |   ntables   |   vgroups   | replica | quorum |  days  |    keep0,keep1,keep2     |  cache(MB)  |   blocks    |   minrows   |   maxrows   | wallevel |    fsync    | comp | cachelast | precision | update |   status   |
====================================================================================================================================================================================================================================================================================log                            | 2022-08-12 10:55:05.425 |         774 |           1 |       3 |      1 |     10 | 30,30,30                 |           1 |           3 |         100 |        4096 |        1 |        3000 |    2 |         1 | us        |      2 | ready      |db12                           | 2022-08-15 08:47:22.087 |           1 |           1 |       1 |      1 |     10 | 3650,3650,3650           |          16 |           6 |         100 |        4096 |        1 |        3000 |    2 |         1 | ms        |      2 | ready      |test2                          | 2022-08-23 15:00:42.796 |           1 |           1 |       1 |      1 |     10 | 3650,3650,3650           |          16 |           6 |         100 |        4096 |        1 |        3000 |    2 |         1 | ms        |      2 | ready      |loga                           | 2022-08-18 15:21:32.743 |      534813 |         324 |       1 |      1 |     10 | 3650,3650,3650           |          16 |           6 |         100 |        4096 |        1 |        3000 |    2 |         1 | ns        |      2 | ready      |logb                           | 2022-08-19 09:57:02.411 |      293892 |         294 |       1 |      1 |     10 | 3650,3650,3650           |          16 |           6 |         100 |        4096 |        1 |        3000 |    2 |         1 | ns        |      2 | ready      |Query OK, 5 row(s) in set (0.001839s)taos> use loga;
Database changed.taos> show stables;name              |      created_time       | columns |  tags  |   tables    |
============================================================================================stb                            | 2022-08-18 15:22:32.509 |       2 |      1 |      534813 |
Query OK, 1 row(s) in set (0.001207s)

可是到了 3.0,显示的信息简单的不得了。

taos> show databases;name              |
=================================information_schema             |performance_schema             |db01                           |test                           |
Query OK, 4 rows in database (0.001982s)taos> show stables;stable_name           |
=================================meters                         |
Query OK, 1 rows in database (0.001461s)

如果要查看详细信息,只能到 informaiont_schema 这个库去找了,这个数据库是 3.0 新增的,专门用来存储数据库相关信息。

taos> use information_schema;
Database changed.taos> show tables;table_name           |
=================================ins_dnodes                     |ins_mnodes                     |ins_modules                    |ins_qnodes                     |ins_cluster                    |ins_databases                  |ins_functions                  |ins_indexes                    |ins_stables                    |ins_tables                     |ins_tags                       |ins_users                      |ins_grants                     |ins_vgroups                    |ins_configs                    |ins_dnode_variables            |
Query OK, 16 rows in database (0.001992s)

查询数据库相关信息

taos> select * from ins_databases;name              |       create_time       |   vgroups   |        ntables        | replica | strict |  duration  |              keep              |   buffer    |  pagesize   |    pages    |   minrows   |   maxrows   | comp | precision |   status   |           retentions           | single_stable | cachemodel  |  cachesize  | wal_level | wal_fsync_period | wal_retention_period |  wal_retention_size   | wal_roll_period |   wal_segment_size    |
=============================================================================================================================================================================================================================================================================================================================================================================================================================================================================information_schema             | NULL                    |        NULL |                    16 |    NULL | NULL   | NULL       | NULL                           |        NULL |        NULL |        NULL |        NULL |        NULL | NULL | NULL      | ready      | NULL                           | NULL          | NULL        |        NULL |      NULL |             NULL |                 NULL |                  NULL |            NULL |                  NULL |performance_schema             | NULL                    |        NULL |                     9 |    NULL | NULL   | NULL       | NULL                           |        NULL |        NULL |        NULL |        NULL |        NULL | NULL | NULL      | ready      | NULL                           | NULL          | NULL        |        NULL |      NULL |             NULL |                 NULL |                  NULL |            NULL |                  NULL |db01                           | 2022-08-24 14:08:06.262 |           2 |                     0 |       3 | off    | 1440m      | 43200m,43200m,43200m           |         432 |           4 |         256 |         100 |        4096 |    2 | ms        | ready      | NULL                           |         false | none        |           1 |         1 |             3000 |               345600 |                    -1 |           86400 |                     0 |test                           | 2022-08-24 11:47:26.251 |           2 |                 10000 |       1 | off    | 14400m     | 5256000m,5256000m,5256000m     |          96 |           4 |         256 |         100 |        4096 |    2 | ms        | ready      | NULL                           |         false | none        |           1 |         1 |             3000 |               345600 |                    -1 |           86400 |                     0 |
Query OK, 4 rows in database (0.003543s)

查询超级表相关信息

taos> select * from ins_stables;stable_name           |            db_name             |       create_time       |   columns   |    tags     |       last_update       |         table_comment          |           watermark            |           max_delay            |             rollup             |
======================================================================================================================================================================================================================================================================================meters                         | test                           | 2022-08-24 11:47:26.940 |           4 |           2 | 2022-08-24 11:47:26.940 | NULL                           | 5000a,5000a                    | -1a,-1a                        |                                |
Query OK, 1 rows in database (0.002185s)

虽然查询起来麻烦一些,但是也有一些好的地方,比如过可以做数据过滤了,这在show时代可是不支持的。

taos> select stable_name,create_time from ins_stables where db_name='test';stable_name           |       create_time       |
===========================================================meters                         | 2022-08-24 11:47:26.940 |
Query OK, 1 rows in database (0.001809s)

4.RESTful 不兼容

用之前编写的一个python程序连接TDengine3.0 直接报错:

Traceback (most recent call last):File "ptaos.py", line 72, in <module>if qr != 2 and qr['status'] == 'succ':
KeyError: 'status'

排查发现 3.0 和 2.x 的 RESTful 返回数据格式已经变了。
2.x 返回如下:

3.0 返回如下:

5.无法修改副本数

在新版本3.0.2.0 已经可以修改副本数了。

taos> alter database test replica 3;DB error: syntax error near "replica 3;" (0.000048s)

查看官网,发现已经不支持修改副本了,不只是副本,很多参数都不支持修改了。

6.Out of dnodes

创建数据库报错 Out of dnodes,明明是3节点集群,缺无法创建3副本数据库。

DB error: Out of dnodes (0.000401s)
taos> show dnodes;id      |            endpoint            | vnodes | support_vnodes |   status   |       create_time       |              note              |
=================================================================================================================================================1 | c0-14:6030                     |      2 |              4 | ready      | 2022-08-24 11:26:31.343 |                                |2 | c0-15:6030                     |      3 |              4 | ready      | 2022-08-24 11:26:55.594 |                                |3 | c0-16:6030                     |      3 |              4 | ready      | 2022-08-24 11:26:59.504 |                                |
Query OK, 3 rows in database (0.001667s)

TDengine 3.0 有个神奇的参数supportVnodes,决定了1个节点上最大的vnode数量,默认是CPU的2倍。
同时呢,默认创建1个数据库会创建2个vnode,因此创建个3副本的数据库,那么需要创建6个vnode。上图只剩4个份额,因此无法创建成功。
验证如下:
将supportVnodes 修改为100,重启集群。

taos> show dnodes;id      |            endpoint            | vnodes | support_vnodes |   status   |       create_time       |              note              |
=================================================================================================================================================1 | c0-14:6030                     |      3 |            100 | ready      | 2022-08-24 11:26:31.343 |                                |2 | c0-15:6030                     |      4 |            100 | ready      | 2022-08-24 11:26:55.594 |                                |3 | c0-16:6030                     |      3 |            100 | ready      | 2022-08-24 11:26:59.504 |                                |
Query OK, 3 rows in database (0.002099s)taos> create database db13 replica 3;
Query OK, 0 of 0 rows affected (7.367844s)taos> show dnodes;id      |            endpoint            | vnodes | support_vnodes |   status   |       create_time       |              note              |
=================================================================================================================================================1 | c0-14:6030                     |      5 |            100 | ready      | 2022-08-24 11:26:31.343 |                                |2 | c0-15:6030                     |      6 |            100 | ready      | 2022-08-24 11:26:55.594 |                                |3 | c0-16:6030                     |      5 |            100 | ready      | 2022-08-24 11:26:59.504 |                                |
Query OK, 3 rows in database (0.001851s)

(5+6+5)-(3+4+4)=6

7.消失的时间戳

对于时序数据,我们经常会进行窗口查询,比如统计每秒的数据量。

taos> select count(*) from test.meters interval(1s);count(*)        |
========================10000000 |10000000 |10000000 |10000000 |10000000 |10000000 |10000000 |10000000 |10000000 |10000000 |
Query OK, 10 rows in database (4.784640s)

结果,我的时间戳去哪里了? 被谁吃掉了?? 难道必须带出来吗?

没有时间戳我要这数据有啥用??

taos> select ts,count(*) from test.meters interval(1s);DB error: No valid function in window query (0.000534s)

什么情况!!!!

继续翻文档,原来还有TMD 伪列 这么个鬼。

taos> select _wstart,count(*) from test.meters interval(1s);_wstart         |       count(*)        |
==================================================2017-07-14 10:40:00.000 |              10000000 |2017-07-14 10:40:01.000 |              10000000 |2017-07-14 10:40:02.000 |              10000000 |2017-07-14 10:40:03.000 |              10000000 |2017-07-14 10:40:04.000 |              10000000 |2017-07-14 10:40:05.000 |              10000000 |2017-07-14 10:40:06.000 |              10000000 |2017-07-14 10:40:07.000 |              10000000 |2017-07-14 10:40:08.000 |              10000000 |2017-07-14 10:40:09.000 |              10000000 |
Query OK, 10 rows in database (4.847837s)

谁琢磨出来的,站出来,我保证不打死他。

补充一下伪列的说明《TDengine中的伪列》

8.debugflag 修改不了

用过 2.x 的同学,应该对 debugflag 都不陌生,遇到点问题都需要调整日志级别,在 2.x 中可以使用命令 alter dnode DNODE_ID debugflag DEBUG_LEVEL; 动态调整。

本以为 3.0 也是这样,结果

TDengine3.0 踩keng实录相关推荐

  1. JAVA发布栅格图层_基于 WebGL实现自定义栅格图层踩坑实录

    以下内容转载自totoro的文章<WebGL-Y轴翻转踩坑实录> 作者:totoro 链接:blog.totoroxiao.com/webgl-flipY- 来源:blog.totorox ...

  2. PAT乙级题库踩坑实录

    PAT乙级题库踩坑实录 [截止2021.7.28乙级题库已经全部AC] 题目名称: 1030 完美数列 (25 分) 测试点3踩坑 每次取m后,不用从m后第一个元素开始判断是否大于mp,直接从m后第m ...

  3. iOS 入门开发踩坑实录

    其实人生也没有什么道理可讲,但是我们不必丧气,还是要期待,人生有奇遇. 前言 苹果开发者:iOS Developer 最近因为工作需要要开始搞iOS了,简单记录下我收集和学习的过程. 学习资料准备 组 ...

  4. HP Zbook 15重装ubantu18后,安装Nvidia驱动(踩坑实录,不推荐尝试)

    电脑型号:HP Zbook 15  G6 显卡:nvidia Quadro T1000 安装方式: 使用官方的NVIDIA驱动进行手动安装(经过安装方式和结果对比,强烈不推荐手动安装的方式,这就是一篇 ...

  5. MMDetectionV2 + Colab 超详细教程及踩坑实录

    文章目录 前言 一.环境配置 二.准备自己的数据集 Aug.14更新 三:修改config文件 3.1 文件结构 3.2 (本地)修改config文件 3.2.1 (本地)构造自己模型的权重文件 3. ...

  6. RIME(小狼毫)踩坑实录(常见问题)

    目录 RIME(小狼毫)踩坑实录 适合谁使用 配置文件规则 文件目录 命名格式 yaml语法 踩坑 配置微软双拼 增加词典 GUI方式(不推荐) 编写yaml文件方式 符号上屏 总结 RIME(小狼毫 ...

  7. Chromium内核浏览器编译记(一)踩坑实录

    转载请注明出处:https://blog.csdn.net/kong_gu_you_lan/article/details/123862868 本文出自 容华谢后的博客 往期回顾: Chromium内 ...

  8. Unity3D学习之旅5-RPG游戏-更新与踩坑实录

    踩坑实录 设定了位置的物体突然位置变成坐标原点(0,0,0) 由于我使用了Unity自带的导航系统AI-Navication,当我把游戏人物传送到一个新地点时,该地点未被烘焙上,导致游戏人物位置(po ...

  9. Win 10 + Ubuntu 18.04 双系统安装与深度学习环境配置安装踩坑实录(上篇)

    Win 10 + Ubuntu 18.04 双系统安装与深度学习环境配置安装踩坑实录(上篇) 折腾了两三天总算顺利在电脑上完成了装x的双系统安装,一路走来还比较顺利,主要在ubuntu的显卡设置上躺了 ...

最新文章

  1. 马云都退休20天了,2019年剩下不到100天了:你还没掌握Python 编程思维吗?
  2. Takeown--夺取文件or文件夹所有权
  3. C++中的 :: 用法
  4. 哪有那么多「能力问题」,在你牛到一定程度前,全是「态度问题」
  5. objectC时间用法
  6. 怎么搭建服务器集成环境配置文件,怎么搭建服务器集成环境配置文件
  7. Qt安装与使用(小白专用教程)
  8. 第三方验收测试-功能测试方案
  9. javaweb实现不刷新网页更改页面内容
  10. python ocr文字识别竖排繁体_古籍族谱繁体竖排中文识别图文攻略-千百OCR
  11. 零点起算法44求最小值C语言,【算法链表面试题】面试问题:C语言实现“关… - 看准网...
  12. 如何批量在图片上加文字?
  13. 史上超级详细:银行外包java面试题目
  14. 分治算法解决问题(c语言)
  15. tkinter标签Lable组件的详细讲解
  16. 服务器账套信息链接失败,账套服务器数据库建立不正确
  17. 查看计算机计划,win10系统查看任务计划的具体办法
  18. Snow Footprints
  19. 教招教资笔记整理(四)
  20. 员工管理系统,基于SSM实现的员工管理系统

热门文章

  1. win10拨号上网不能开启移动热点 解决方案
  2. 网商大智慧:走出淘宝创业迷局
  3. 运动类计算公式----卡路里计算
  4. 奔富葡萄酒全新沉浸式体验馆亮相上海;爱莉安娜-格兰德推出全新个人香水R.E.M. | 美通企业日报...
  5. 对称锥规划:锥与对称锥
  6. 基于51单片机的温度控制proteus仿真原理图PCB
  7. html表格最大显示行数6,table表格(支持条件格式、排序、格式化、链接、统计等一堆功能)...
  8. python中divmod_python内置函数 divmod()
  9. THINPAD E480可以支持超过32G内存,最大可以64G?
  10. aspire鹦鹉螺_Aspire 鹦鹉螺 X 雾化器使用评测