• TDengine3.0 基础操作


    上周TDengine3.0 开了发布会,今天终于有时间全面的尝鲜体验一番。
    感触颇多,见《TDengine3.0 踩坑实录》。
    下面简单的介绍一下基础操作。
    详细资料请查看官方文档

    环境:经典的3节点 (2C/4G CentOS 7.9)

    192.168.0.14    c0-14
    192.168.0.15    c0-15
    192.168.0.16    c0-16
    
    • 1
    • 2
    • 3

    目录规划

    目录路径
    dataDir/taos/data
    logDir/taos/log
    tempDir/taos/tmp
    软件目录/taos/soft
    core目录/taos/core

    1.安装

    安装包下载地址:https://docs.taosdata.com/get-started/package/

    安装包介绍
    TDengine-server-3.0.0.1-Linux-x64.tar.gz服务端安装包,1个顶3个,包里啥都有
    TDengine-client-3.0.0.1-Linux-x64.tar.gz客户端安装包
    taosTools-2.1.2-Linux-x64.tar.gz工具包,包含备份恢复工具taosdump和压测工具taosBenchmark,不能单独使用,需要先安装客户端。

    1.1.配置地址解析

    vi /etc/hosts
    192.168.0.14    c0-14
    192.168.0.15    c0-15
    192.168.0.16    c0-16
    
    • 1
    • 2
    • 3
    • 4

    1.2.创建相关目录

    mkdir -p /taos/{data,log,tmp,core,soft}
    
    • 1

    1.3.安装 TDengine Server

    安装步骤和2.x一样,还是原来的三板斧。

    cd /taos/soft/
    tar xzf TDengine-server-3.0.0.1-Linux-x64.tar.gz
    cd TDengine-server-3.0.0.1
    ./install.sh -e no
    
    • 1
    • 2
    • 3
    • 4

    1.4.配置 taos.cfg

    mv taos.cfg taos.cfg.bak
    vi taos.cfg
    
    • 1
    • 2

    因为只是尝鲜试用,配置几个参数就够了。
    TDengine 3.0 很多参数都发生了变化,有兴趣的可以去看官方文档。
    没啥兴趣的可以看《TDengine3.0 踩坑实录

    firstEp         c0-14:6030
    secondEp        c0-15:6030
    fqdn            c0-14
    dataDir         /taos/data
    logDir          /taos/log
    tempDir         /taos/tmp
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    1.5.设置core目录

    不管是生产还是测试环境,这个一定要设置的。不然把根目录撑爆了不要怪别人。

    [root@c0-14 ]# set_core /taos/core
    kernel.core_pattern = /taos/core/core-%e-%p
    /taos/core/core-%e-%p
    
    • 1
    • 2
    • 3

    1.6.启动 TDengine 服务

    systemctl start taosd
    
    • 1

    2.创建集群

    添加节点的命令没有变化,和 2.6 一样。

    CREATE DNODE "fqdn:port";
    
    • 1
    [root@c0-14 taos]# taos
    Welcome to the TDengine Command Line Interface, Client Version:3.0.0.1
    Copyright (c) 2022 by TDengine, all rights reserved.
    
    Server is Community Edition.
    
    taos> show dnodes;
         id      |            endpoint            | vnodes | support_vnodes |   status   |       create_time       |              note              |
    =================================================================================================================================================
               1 | c0-14:6030                     |      0 |              4 | ready      | 2022-08-24 11:26:31.343 |                                |
    Query OK, 1 rows in database (0.001536s)
    
    taos> create dnode "c0-15:6030";
    Query OK, 0 of 0 rows affected (0.000694s)
    
    taos> create dnode "c0-16:6030";
    Query OK, 0 of 0 rows affected (0.000651s)
    
    taos> show dnodes;
         id      |            endpoint            | vnodes | support_vnodes |   status   |       create_time       |              note              |
    =================================================================================================================================================
               1 | c0-14:6030                     |      0 |              4 | ready      | 2022-08-24 11:26:31.343 |                                |
               2 | c0-15:6030                     |      0 |              4 | ready      | 2022-08-24 11:26:55.594 |                                |
               3 | c0-16:6030                     |      0 |              4 | ready      | 2022-08-24 11:26:59.504 |                                |
    Query OK, 3 rows in database (0.001595s)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    细心的小朋友会发现show dnodes的输出里面多了个support_vnodes列,这个列说明了对应节点允许创建的 vnode 个数。

    3.创建数据库

    taos> create database test replica 3;
    Query OK, 0 of 0 rows affected (8.369874s)
    
    taos> show databases;
                  name              |
    =================================
     information_schema             |
     performance_schema             |
     test                           |
    Query OK, 3 rows in database (0.001277s)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    和 2.x 最大的区别就是多了information_schemaperformance_schema两张表,对于熟悉 MySQL 的同学,是不是有点眼熟了。

    TDengine 3.0 的建库语句也发生了很大变化,通过show create database 可要看到建库的参数越来越陌生了。

    taos> show create database test\G;
    *************************** 1.row ***************************
           Database: test
    Create Database: CREATE DATABASE `test` BUFFER 96 CACHEMODEL 'none' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 3 STRICT 'off' WAL_LEVEL 1 VGROUPS 2 SINGLE_STABLE 0
    Query OK, 1 rows in database (0.000644s)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4.创建表/超级表

    建表命令变化不大,不管是超级表还是子表都能用原来的命令创建。

    taos> create stable stb(ts timestamp,v1 int) tags(t1 int,t2 nchar(100));
    Query OK, 0 of 0 rows affected (0.007377s)
    
    taos> show stables;
              stable_name           |
    =================================
     stb                            |
    Query OK, 1 rows in database (0.001822s)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    taos> create table t1 using stb tags(1,'tag1');
    Query OK, 0 of 0 rows affected (0.002435s)
    
    taos> show tables;
               table_name           |
    =================================
     t1                             |
    Query OK, 1 rows in database (0.004632s)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    5.写入/查询数据

    还好,还是原来的味道。

    taos> insert into t1 values(now,1);
    Query OK, 1 of 1 rows affected (0.001821s)
    
    taos> insert into t1 values(now,2);
    Query OK, 1 of 1 rows affected (0.001061s)
    
    taos> insert into t1 values(now,3);
    Query OK, 1 of 1 rows affected (0.001234s)
    
    taos> select * from t1;
               ts            |     v1      |
    ========================================
     2022-08-24 11:31:56.354 |           1 |
     2022-08-24 11:31:58.600 |           2 |
     2022-08-24 11:32:00.849 |           3 |
    Query OK, 3 rows in database (0.001667s)
    
    taos> select * from stb;
               ts            |     v1      |     t1      |               t2               |
    =======================================================================================
     2022-08-24 11:31:56.354 |           1 |           1 | tag1                           |
     2022-08-24 11:31:58.600 |           2 |           1 | tag1                           |
     2022-08-24 11:32:00.849 |           3 |           1 | tag1                           |
    Query OK, 3 rows in database (0.002319s)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    6.taosBenchmark

    [root@c0-14 taos]# taosBenchmark -y
    [08/24 11:33:01.896648] INFO: taos client version: 3.0.0.1
    [08/24 11:33:02.939009] INFO: create database: <CREATE DATABASE IF NOT EXISTS test precision 'ms';>
    [08/24 11:33:04.941904] INFO: stable meters does not exist, will create one
    [08/24 11:33:04.942265] INFO: create stable: <CREATE TABLE IF NOT EXISTS test.meters (ts TIMESTAMP,current float,voltage int,phase float) TAGS (groupid int,location binary(16))>
    [08/24 11:33:04.944294] INFO: generate stable<meters> columns data with lenOfCols<80> * prepared_rand<10000>
    [08/24 11:33:04.953617] INFO: generate stable<meters> tags data with lenOfTags<54> * childTblCount<10000>
    [08/24 11:33:04.956969] INFO: start creating 10000 table(s) with 8 thread(s)
    [08/24 11:33:04.959901] INFO: thread[0] start creating table from 0 to 1249
    [08/24 11:33:04.960719] INFO: thread[1] start creating table from 1250 to 2499
    [08/24 11:33:04.961634] INFO: thread[2] start creating table from 2500 to 3749
    [08/24 11:33:04.962011] INFO: thread[3] start creating table from 3750 to 4999
    [08/24 11:33:04.962637] INFO: thread[4] start creating table from 5000 to 6249
    [08/24 11:33:04.963563] INFO: thread[5] start creating table from 6250 to 7499
    [08/24 11:33:04.964074] INFO: thread[6] start creating table from 7500 to 8749
    [08/24 11:33:04.966660] INFO: thread[7] start creating table from 8750 to 9999
    [08/24 11:33:06.038676] INFO: Spent 1.0820 seconds to create 10000 table(s) with 8 thread(s), already exist 0 table(s), actual 10000 table(s) pre created, 0 table(s) will be auto created
    [08/24 11:33:06.038705] INFO: record per request (30000) is larger than insert rows (10000) in progressive mode, which will be set to 10000
    [08/24 11:33:06.051761] INFO: Estimate memory usage: 11.74MB
    
    ................
    
    [08/24 11:37:14.542688] INFO: thread[3] completed total inserted rows: 12500000, 50808.82 records/second
    [08/24 11:37:16.653293] INFO: thread[4] completed total inserted rows: 12500000, 50377.97 records/second
    [08/24 11:37:17.576138] INFO: thread[1] completed total inserted rows: 12500000, 50185.57 records/second
    [08/24 11:37:17.926826] INFO: thread[5] completed total inserted rows: 12500000, 50120.61 records/second
    [08/24 11:37:18.003390] INFO: thread[6] completed total inserted rows: 12500000, 50100.36 records/second
    [08/24 11:37:18.115691] INFO: thread[2] completed total inserted rows: 12500000, 50078.72 records/second
    [08/24 11:37:18.904192] INFO: thread[0] completed total inserted rows: 12500000, 49922.57 records/second
    [08/24 11:37:19.122251] INFO: thread[7] completed total inserted rows: 12500000, 49878.25 records/second
    [08/24 11:37:19.124718] INFO: Spent 253.069134 seconds to insert rows: 100000000 with 8 thread(s) into test 395148.94 records/second
    [08/24 11:37:19.124737] INFO: insert delay, min: 17.99ms, avg: 199.27ms, p90: 526.29ms, p95: 640.49ms, p99: 3429.31ms, max: 7109.14ms
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    taos> select count(*) from test.meters;
           count(*)        |
    ========================
                 100000000 |
    Query OK, 1 rows in database (0.415701s)
    
    taos> use test;
    Database changed.
    
    taos> show stables;
              stable_name           |
    =================================
     meters                         |
    Query OK, 1 rows in database (0.001924s)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    想查看超级表下有多少子表,show stables 已经不能胜任了。
    TDengine 3.0 只能用以下两种方法:

    taos> select count(*) from information_schema.ins_tables where stable_name='meters' and db_name='test';
           count(*)        |
    ========================
                     10000 |
    Query OK, 1 rows in database (0.027683s)
    
    taos> select count(*) from (select distinct tbname from meters);
           count(*)        |
    ========================
                     10000 |
    Query OK, 1 rows in database (0.019055s)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    7.数据备份恢复

    TDengine 3.0 的备份恢复工具还是taosdump
    试用了一遍,效率还是那么喜人。

    7.1.备份数据

    创建备份目录

    mkdir /taos/dump
    
    • 1

    备份数据库 test

    taosdump -o /taos/dump/ -D test 
    
    
    • 1
    • 2
    [root@c0-14 taos]# cat dump_result.txt 
    ========== arguments config =========
    taosdump version 2.1.2, commit: d237772
    host: (null)
    user: root
    port: 0
    outpath: /taos/dump//
    inpath: 
    resultFile: ./dump_result.txt
    all_databases: false
    databases: true
    databasesSeq: test
    schemaonly: false
    with_property: true
    answer_yes: false
    avro codec: snappy
    data_batch: 16383
    thread_num: 8
    allow_sys: false
    escape_char: true
    loose_mode: false
    isDumpIn: false
    arg_list_len: 0
    debug_print: 0
    ========== DUMP OUT ========== 
    # DumpOut start time:                   2022-08-24 11:41:13
    
    #### database:                       test
    # super table counter:               1
    
    ============================== TOTAL STATISTICS ============================== 
    # total database count:     1
    # total super table count:  1
    # total child table count:  10000
    # total row count:          100000000
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    7.2.删除数据库

    taos> drop database test;
    Query OK, 0 of 0 rows affected (0.913180s)
    
    taos> show databases;
                  name              |
    =================================
     information_schema             |
     performance_schema             |
    Query OK, 2 rows in database (0.001922s)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    7.3.恢复数据

    [root@c0-14 taos]# taosdump -i /taos/dump
    ==============================
    ========== arguments config =========
    taosdump version 2.1.2
    host: (null)
    user: root
    port: 0
    outpath: 
    inpath: /taos/dump
    resultFile: ./dump_result.txt
    all_databases: false
    databases: false
    databasesSeq: (null)
    schemaonly: false
    with_property: true
    answer_yes: false
    avro codec: snappy
    data_batch: 16383
    thread_num: 8
    allow_sys: false
    escape_char: true
    loose_mode: false
    isDumpIn: true
    arg_list_len: 0
    [0]: Restoring from test.3322624946919.1.avro-tbtags ...
    ............
    [6]:100%
    OK: [1] 10000 row(s) of file(test.3322625031319.6565.avro) be successfully dumped in!
    .OK: [2] 10000 row(s) of file(test.3322625048330.7970.avro) be successfully dumped in!
    .OK: [3] 10000 row(s) of file(test.3322625065322.623.avro) be successfully dumped in!
    .OK: [1] 10000 row(s) of file(test.3322625031327.5310.avro) be successfully dumped in!
    .OK: [2] 10000 row(s) of file(test.3322625048322.4216.avro) be successfully dumped in!
    .OK: [3] 10000 row(s) of file(test.3322625065338.1873.avro) be successfully dumped in!
    [3]:100%
    OK: [1] 10000 row(s) of file(test.3322625031335.9059.avro) be successfully dumped in!
    [1]:100%
    OK: [2] 10000 row(s) of file(test.3322625048335.464.avro) be successfully dumped in!
    .OK: [2] 10000 row(s) of file(test.3322625048339.9216.avro) be successfully dumped in!
    [2]:100%
    OK: 100000000 row(s) dumped in!
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    7.4.校验数据

    taos> select count(*) from meters;
           count(*)        |
    ========================
                 100000000 |
    Query OK, 1 rows in database (19.131576s)
    
    taos> select count(*) from (select distinct tbname from meters);
           count(*)        |
    ========================
                     10000 |
    Query OK, 1 rows in database (0.173748s)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    uniapp小程序接入腾讯云【增强版人脸核身接入】
    如何用ATECLOUD芯片测试系统测试电源芯片的振荡频率?
    基于鸽群算法优化最小二乘支持向量机lssvm实现预测附matlab代码
    Node.js
    团队难带测试管理太难做?十多位名企测试专家带你成为优秀管理
    BAT大厂Java面试,如何抓住面试重点知识?收割大厂offer
    企业移动设备管理(MDM)概述
    C语言,输入时间时分秒,将将24小时转为12小时
    SpringMvc中的请求转发和重定向
    【OpenCV】-仿射变换
  • 原文地址:https://blog.csdn.net/weixin_43700866/article/details/126502760