TDengine3.0 踩keng实录
尝鲜了一把 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实录相关推荐
- JAVA发布栅格图层_基于 WebGL实现自定义栅格图层踩坑实录
以下内容转载自totoro的文章<WebGL-Y轴翻转踩坑实录> 作者:totoro 链接:blog.totoroxiao.com/webgl-flipY- 来源:blog.totorox ...
- PAT乙级题库踩坑实录
PAT乙级题库踩坑实录 [截止2021.7.28乙级题库已经全部AC] 题目名称: 1030 完美数列 (25 分) 测试点3踩坑 每次取m后,不用从m后第一个元素开始判断是否大于mp,直接从m后第m ...
- iOS 入门开发踩坑实录
其实人生也没有什么道理可讲,但是我们不必丧气,还是要期待,人生有奇遇. 前言 苹果开发者:iOS Developer 最近因为工作需要要开始搞iOS了,简单记录下我收集和学习的过程. 学习资料准备 组 ...
- HP Zbook 15重装ubantu18后,安装Nvidia驱动(踩坑实录,不推荐尝试)
电脑型号:HP Zbook 15 G6 显卡:nvidia Quadro T1000 安装方式: 使用官方的NVIDIA驱动进行手动安装(经过安装方式和结果对比,强烈不推荐手动安装的方式,这就是一篇 ...
- MMDetectionV2 + Colab 超详细教程及踩坑实录
文章目录 前言 一.环境配置 二.准备自己的数据集 Aug.14更新 三:修改config文件 3.1 文件结构 3.2 (本地)修改config文件 3.2.1 (本地)构造自己模型的权重文件 3. ...
- RIME(小狼毫)踩坑实录(常见问题)
目录 RIME(小狼毫)踩坑实录 适合谁使用 配置文件规则 文件目录 命名格式 yaml语法 踩坑 配置微软双拼 增加词典 GUI方式(不推荐) 编写yaml文件方式 符号上屏 总结 RIME(小狼毫 ...
- Chromium内核浏览器编译记(一)踩坑实录
转载请注明出处:https://blog.csdn.net/kong_gu_you_lan/article/details/123862868 本文出自 容华谢后的博客 往期回顾: Chromium内 ...
- Unity3D学习之旅5-RPG游戏-更新与踩坑实录
踩坑实录 设定了位置的物体突然位置变成坐标原点(0,0,0) 由于我使用了Unity自带的导航系统AI-Navication,当我把游戏人物传送到一个新地点时,该地点未被烘焙上,导致游戏人物位置(po ...
- Win 10 + Ubuntu 18.04 双系统安装与深度学习环境配置安装踩坑实录(上篇)
Win 10 + Ubuntu 18.04 双系统安装与深度学习环境配置安装踩坑实录(上篇) 折腾了两三天总算顺利在电脑上完成了装x的双系统安装,一路走来还比较顺利,主要在ubuntu的显卡设置上躺了 ...
最新文章
- 马云都退休20天了,2019年剩下不到100天了:你还没掌握Python 编程思维吗?
- Takeown--夺取文件or文件夹所有权
- C++中的 :: 用法
- 哪有那么多「能力问题」,在你牛到一定程度前,全是「态度问题」
- objectC时间用法
- 怎么搭建服务器集成环境配置文件,怎么搭建服务器集成环境配置文件
- Qt安装与使用(小白专用教程)
- 第三方验收测试-功能测试方案
- javaweb实现不刷新网页更改页面内容
- python ocr文字识别竖排繁体_古籍族谱繁体竖排中文识别图文攻略-千百OCR
- 零点起算法44求最小值C语言,【算法链表面试题】面试问题:C语言实现“关… - 看准网...
- 如何批量在图片上加文字?
- 史上超级详细:银行外包java面试题目
- 分治算法解决问题(c语言)
- tkinter标签Lable组件的详细讲解
- 服务器账套信息链接失败,账套服务器数据库建立不正确
- 查看计算机计划,win10系统查看任务计划的具体办法
- Snow Footprints
- 教招教资笔记整理(四)
- 员工管理系统,基于SSM实现的员工管理系统
热门文章
- win10拨号上网不能开启移动热点 解决方案
- 网商大智慧:走出淘宝创业迷局
- 运动类计算公式----卡路里计算
- 奔富葡萄酒全新沉浸式体验馆亮相上海;爱莉安娜-格兰德推出全新个人香水R.E.M. | 美通企业日报...
- 对称锥规划:锥与对称锥
- 基于51单片机的温度控制proteus仿真原理图PCB
- html表格最大显示行数6,table表格(支持条件格式、排序、格式化、链接、统计等一堆功能)...
- python中divmod_python内置函数 divmod()
- THINPAD E480可以支持超过32G内存,最大可以64G?
- aspire鹦鹉螺_Aspire 鹦鹉螺 X 雾化器使用评测