0%

tdengine

tdengine

TDengine 是一款开源、云原生的时序数据库,专为物联网、工业互联网、金融、IT 运维监控等场景设计并优化。它能让大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据得到高效实时的处理,对业务的运行状态进行实时的监测、预警,从大数据中挖掘出商业价值。

官网:https://www.taosdata.com/

github: https://github.com/taosdata/TDengine

tdengine组成

tdengine服务器端有三个核心组件,分别为:taosd、taosadapter、taoskeeper

taosd:

1
2
3
taosd是TDengine数据库的核心服务组件,也称为TDengine服务器。
taosd负责处理客户端的连接请求,接收和处理SQL查询、数据写入等操作。
它管理数据的存储、索引和查询执行,确保高性能和高可用性。

taosAdapter:

1
2
3
4
5
taosAdapter 是一个 TDengine 的配套工具,是 TDengine 集群和应用程序之间的桥梁和适配器。它提供了一种易于使用和高效的方式来直接从数据收集代理软件(如 Telegraf、StatsD、collectd 等)摄取数据。它还提供了 InfluxDB/OpenTSDB 兼容的数据摄取接口,允许 InfluxDB/OpenTSDB 应用程序无缝移植到 TDengine。
taosadapter是一个用于连接和集成TDengine数据库的软件组件。
taosadapter提供了与TDengine的交互接口,允许应用程序通过标准的数据库连接方式与TDengine进行通信。
它封装了与TDengine的通信细节,简化了应用程序与数据库之间的集成过程。
taosadapter充当应用程序和TDengine之间的中间层,提供了连接管理、数据传输和查询执行等功能。

taoskeeper:

1
2
taosKeeper 是 TDengine 3.0 版本监控指标的导出工具,通过简单的几项配置即可获取 TDengine 的运行状态。
taosKeeper 使用 TDengine RESTful 接口,所以不需要安装 TDengine 客户端即可使用,需要通过taosadapter来连接taosd。

这里需要注意的是默认情况下部署tdengine都会部署上述三个组件,其监听端口分别为:6030(taosd)、6041(taosAdapter)、6043(taoskeeper)。其中在生产使用中taosd和taosAdapter是必要启动项,taosd做为服务器端程序必须启动,而taosAdapter做为大部分程序服务连接taosd的接口程序也必须启动。taoskeeper作为监控服务为可选启动项。

部署

二进制部署

环境要求:

1
2
3
4
5
6
linux 内核版本 - 3.10.0-1160.83.1.el7.x86_64;
glibc 版本 - 2.17;

如果通过clone源码进行编译安装,还需要满足:
cmake版本 - 3.26.4或以上;
gcc 版本 - 9.3.1或以上;

部署包下载可以在 官网-》文档-》发布历史 中找到,选择对应的版本号以及适合服务器的包,一般linux(centos)可以下载rpm包或者tar.gz压缩包

点击对应包会出现弹框,输入电子邮箱后点击下载官方会将安装包发送至邮箱,需要手动登录邮箱下载并上传至服务器。

image-20230717141111840

1
2
3
4
5
6
但上面的方式太麻烦了,每次下载包都需要发邮件,由于这里官方的下载链接是固定的,所以可以直接拼接下载url链接下载。
例如我这里下载3.0.7.1的包下载地址为:
https://www.taosdata.com/assets-download/3.0/TDengine-server-3.0.7.1-Linux-x64.rpm
https://www.taosdata.com/assets-download/3.0/TDengine-server-3.0.7.1-Linux-x64.tar.gz
则这里可以得出3.x的tdengine下载地址为:https://www.taosdata.com/assets-download/3.0/包名
这样就无需每次都通过发送到邮箱这种麻烦的方式来部署。

下面是部署流程:

1
2
3
4
5
6
7
8
9
10
rpm部署:
wget https://www.taosdata.com/assets-download/3.0/TDengine-server-3.0.7.1-Linux-x64.rpm
rpm -ivh TDengine-server-3.0.7.1-Linux-x64.rpm
压缩包部署:
wget https://www.taosdata.com/assets-download/3.0/TDengine-server-3.0.7.1-Linux-x64.tar.gz
tar -xvf TDengine-server-3.0.7.1-Linux-x64.tar.gz
cd TDengine-server-3.0.7.1 && bash install.sh #执行部署脚本会提示加入集群节点以及邮箱,如果是单节点直接跳过就行。(也可以部署了以后再加入集群)
启动:
systemctl start taosd #tdengine服务器端
systemctl start taosadapter #tdengine的API接口服务

docker部署

1
2
3
4
5
镜像这里直接使用官方镜像部署: tdengine/tdengine:version
挂载端口至少需要挂载两个端口: 6030(taosd端口)和6041(taosadapter端口) ,taosd和taosadapter端口这两个服务是tdengine官方镜像默认启动的服务,所以启动这里除了监听端口无需其他操作。(taoskeeper官方镜像默认不启动)
挂载目录需要挂载tdengine日志目录/var/log/taos(非必须)和tdengine数据目录/var/lib/taos(必须)。

部署启动命令:docker run -d --name tdengine -p 6041:6041 -p 6030:6030 -v $PWD/log:/var/log/taos -v $PWD/lib:/var/lib/taos tdengine/tdengine:3.0.7.1

k8s部署

yaml部署

通过yaml文件部署,这里storageClassName需要修改为自己集群对应的storageclass,镜像版本这里部署为3.0.7.1,如有不同需要手动修改。

tdengine.yaml:

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
---
apiVersion: v1
kind: Service
metadata:
name: "taosd"
labels:
app: "tdengine"
spec:
ports:
- name: tcp6030
protocol: "TCP"
port: 6030
- name: tcp6041
protocol: "TCP"
port: 6041
selector:
app: "tdengine"
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: "tdengine"
labels:
app: "tdengine"
spec:
serviceName: "taosd"
replicas: 1
updateStrategy:
type: RollingUpdate
selector:
matchLabels:
app: "tdengine"
template:
metadata:
name: "tdengine"
labels:
app: "tdengine"
spec:
containers:
- name: "tdengine"
image: tdengine/tdengine:3.0.7.1
imagePullPolicy: "IfNotPresent"
ports:
- name: tcp6030
protocol: "TCP"
containerPort: 6030
- name: tcp6041
protocol: "TCP"
containerPort: 6041
- name: tcp6043
protocol: "TCP"
containerPort: 6043
env:
# POD_NAME for FQDN config
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
# SERVICE_NAME and NAMESPACE for fqdn resolve
- name: SERVICE_NAME
value: "taosd"
- name: STS_NAME
value: "tdengine"
- name: STS_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
# TZ for timezone settings, we recommend to always set it.
- name: TZ
value: "Asia/Shanghai"
# TAOS_ prefix will configured in taos.cfg, strip prefix and camelCase.
- name: TAOS_SERVER_PORT
value: "6030"
# Must set if you want a cluster.
- name: TAOS_FIRST_EP
value: "$(STS_NAME)-0.$(SERVICE_NAME).$(STS_NAMESPACE).svc.cluster.local:$(TAOS_SERVER_PORT)"
# TAOS_FQND should always be set in k8s env.
- name: TAOS_FQDN
value: "$(POD_NAME).$(SERVICE_NAME).$(STS_NAMESPACE).svc.cluster.local"
volumeMounts:
- name: taosdata
mountPath: /var/lib/taos
- name: taoslog
mountPath: /var/log/taos
volumeClaimTemplates:
- metadata:
name: taosdata
spec:
storageClassName: "nfs-storage"
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "100Gi"
- metadata:
name: taoslog
spec:
storageClassName: "nfs-storage"
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "100Gi"

helm方式部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
wget https://github.com/taosdata/TDengine-Operator/raw/3.0/helm/tdengine-3.0.2.tgz
tar -xvf https://github.com/taosdata/TDengine-Operator/raw/3.0/helm/tdengine-3.0.2.tgz
cd tdengine
vi values.yaml
###下面是values.yaml中需要配置的配置项
replicaCount: 1 #tdengine pod的副本个数
image:
tag: "3.0.7.1" #版本号
storage:
className: "nfs-storage" #storageclass指定
dataSize: "100Gi" #数据目录大小
logSize: "10Gi" #日志目录大小
###
helm install tdengine . -n dev #-n后面指定名称空间

客户端

部署

1
2
3
4
5
6
7
8
9
10
客户端部署方式:
1.部署服务器端:当部署了服务器端以后服务器端是自带client端的
2.单独部署客户端: 和上面部署服务器端一样,在官网发布历史中除了服务器端的包以外,还可以看到客户端的部署安装包。这里也可以通过以下命令部署
wget https://www.taosdata.com/assets-download/3.0/TDengine-client-3.0.7.1-Linux-x64.tar.gz #这里是linux 3.0.7.1如果版本主机系统不同,可以在官网找到自己对应的包,然后将包名复制到官方下载的url后面如:https://www.taosdata.com/assets-download/3.0/包名
tar -xvf TDengine-client-3.0.7.1-Linux-x64.tar.gz && cd TDengine-client-3.0.7.1/ && bash install_client.sh
部署成功以后屏幕会打印如下信息:
Start to install TDengine client...

TDengine client is installed successfully!

客户端使用

登录

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
tdengine的客户端命令为taos,使用上与mysql类似。taos的参数如下:

-h HOST: 要连接的 TDengine 服务端所在服务器的 FQDN, 默认为连接本地服务
-P PORT: 指定服务端所用端口号
-u USER: 连接时使用的用户名
-p PASSWORD: 连接服务端时使用的密码
-?, --help: 打印出所有命令行参数

还有更多其他参数:
-a AUTHSTR: 连接服务端的授权信息
-A: 通过用户名和密码计算授权信息
-c CONFIGDIR: 指定配置文件目录,Linux 环境下默认为 /etc/taos,该目录下的配置文件默认名称为 taos.cfg
-C: 打印 -c 指定的目录中 taos.cfg 的配置参数
-d DATABASE: 指定连接到服务端时使用的数据库
-E dsn: 使用 WebSocket DSN 连接云服务或者提供 WebSocket 连接的服务端
-f FILE: 以非交互模式执行 SQL 脚本文件。文件中一个 SQL 语句只能占一行
-k: 测试服务端运行状态,0: unavailable,1: network ok,2: service ok,3: service degraded,4: exiting
-l PKTLEN: 网络测试时使用的测试包大小
-n NETROLE: 网络连接测试时的测试范围,默认为 client, 可选值为 client、server
-N PKTNUM: 网络测试时使用的测试包数量
-r: 将时间输出出无符号 64 位整数类型(即 C 语音中 uint64_t)
-R: 使用 RESTful 模式连接服务端
-s COMMAND: 以非交互模式执行的 SQL 命令
-t: 测试服务端启动状态,状态同-k
-w DISPLAYWIDTH: 客户端列显示宽度
-z TIMEZONE: 指定时区,默认为本地时区
-V: 打印出当前版本号

上面是所有参数,常用的有: -u -p -P -h
例如连接tdengine服务器为192.168.110.1的6030端口,则: taos -h 192.168.110.1 -P 6030 -u root -p
这里需要注意的是taos命令的参数有缺省值,例如服务器端口-P默认为6030,服务器地址-h默认为127.0.0.1,用户名-u默认为root,密码-p默认为taosdata。
所以在登陆本地服务器的情况下,默认使用taos不用跟任何参数就可以登陆(由于传入默认缺省值的原因),如何要登陆其他服务器,只需要跟上-h即可,除非端口或者账号密码有改过。
还有个需要注意的点是如果需要手动指定-p参数输入密码,是不能直接在后面跟上密码登录的,taos像mysql一样指定了-p参数后会弹出输入密码的交互命令行,输入以后认证成功才能进入taos命令行界面

taos命令行

登录后的命令界面如下,界面和操作基本类似于mysql。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
locale not configured, set to system default:en_US.UTF-8
Welcome to the TDengine Command Line Interface, Client Version:3.0.4.1
Copyright (c) 2022 by TDengine, all rights reserved.

****************************** Tab Completion **********************************
* The TDengine CLI supports tab completion for a variety of items, *
* including database names, table names, function names and keywords. *
* The full list of shortcut keys is as follows: *
* [ TAB ] ...... complete the current word *
* ...... if used on a blank line, display all supported commands *
* [ Ctrl + A ] ...... move cursor to the st[A]rt of the line *
* [ Ctrl + E ] ...... move cursor to the [E]nd of the line *
* [ Ctrl + W ] ...... move cursor to the middle of the line *
* [ Ctrl + L ] ...... clear the entire screen *
* [ Ctrl + K ] ...... clear the screen after the cursor *
* [ Ctrl + U ] ...... clear the screen before the cursor *
**************************************************************************************

Server is Community Edition.

taos>
节点管理

查看数据节点: show dnodes;.
查看管理节点: show mondes;
添加数据节点: create dnode “ms05.dyq.com:6030” ;
删除数据节点: drop dnode “ms05.dyq.com:6030”;

用户管理

添加用户: create user test1 pass ‘test1’;
删除用户: drop user test1;
查看用户: show users;
修改用户密码: alter user test1 pass ‘test2’;
修改用户权限: alter user test1 privilege read;

数据库管理

查看数据库: show database; 或者 show databases\G;
删除数据库: drop database test;
修改数据库参数:
alter database testdb database_options;
修改testdb数据库的参数,database_options为参数以及参数值。常用option:quorum、replica 、keep 、quorum 、blocks 。

​ 修改数据库文件压缩标志位: alter database 库名 comp 位数;

​ 修改数据库副本数: alter database 库名 replica 数量;

​ 修改数据文件保存的天数: alter database 库名 keep 天数;

​ 修改数据写入成功所需要的确认数: alter database 库名 quorum 数目;

​ 修改每个VNODE (TSDB) 中有多少cache大小的内存块: alter database 库名 blocks 大小;

表操作
超级表

创建超级表: creates stable if not exists st(time timestamp, column_name int) tags (t1 nchar(50), t2 nchar(100));

1
2
3
4
5
创建STable, 与创建表的SQL语法相似,但需指定TAGS字段的名称和类型。说明:
  1) TAGS 列的数据类型不能是timestamp类型;
  2) TAGS 列名不能与其他列名相同;
  3) TAGS 列名不能为预留关键字;
  4) TAGS 最多允许128个,可以0个,总长度不超过16k个字符

查看超级表: show stables

​ 查询包含某字符串的超级表: show stables like ‘%event%’;

显示超级表的创建语句: SHOW CREATE STABLE stb_name;

获取超级表的结构信息: DESCRIBE [db_name.]stb_name;

获取超级表中所有子表的标签信息: SHOW TABLE TAGS FROM stbname;

删除超级表: DROP STABLE [IF EXISTS] [db_name.]stb_name #删除 STable 会自动删除通过 STable 创建的子表以及子表中的所有数据。

修改超级表:

1
2
3
4
5
6
7
8
9
10
11
12
13
修改超级表的结构会对其下的所有子表生效。无法针对某个特定子表修改表结构。标签结构的修改需要对超级表下发,TDengine 会自动作用于此超级表的所有子表。
超级表增加列:
ALTER STABLE stb_name ADD COLUMN col_name column_type;
超级表删除列:
ALTER STABLE stb_name DROP COLUMN col_name;
添加标签:
ALTER STABLE stb_name ADD TAG tag_name tag_type;
删除标签:
ALTER STABLE stb_name DROP TAG tag_name;
修改标签名:
ALTER STABLE stb_name RENAME TAG old_tag_name new_tag_name;
修改子表标签值(TAG):
alter table item_table_name set tag column_key = “value”;
普通表

创建普通表: CREATE TABLE IF NOT EXISTS a(c timestamp,b int)

根据超级表创建子表: create table table_name using super_table tags (column_value,column_value……); #这样建表之后,子表会复制除去超级表里面的tags字段外的所有字段;

删除数据表: drop table if exists 表名;

显示当前数据库下的所有数据表信息: show tables; show tables like “%table_name%”;

获取表的结构信息: describe 表名;

表增加列: alter table mytable add column addfield int;

表删除列: alter table mytable drop column addfield;

grafana监控展示

taoskeeper

通过tdengine的taosKeeper 组件收集tdengine server服务的监控指标,然后将其在grafana上面展示出来。

首先这里要启动taoskeeper,在二进制部署的情况下,安装tdengine服务器端的时候会自动安装taoskeeper组件。但还需要做一些配置。

在运行 taosKeeper 之前要确保 TDengine 集群与 taosAdapter 已经在正确运行(因其taoskeeper是通过taosAdapter与tdengine集群进行通信)。

首先是tdengine集群的配置,修改taosd配置文件taos.cfg,在配置文件中添加以下两行配置(添加了配置以后需要重启taosd)

1
2
monitor 1
monitorFqdn localhost # taoskeeper 服务的 FQDN,如果是本地可以用localhost,如果是远程需要指定taoskeeper的fqdn,否则无法正常监控。

配置完毕以后启动taoskeeper

1
systemctl start taoskeeper

如果是本机监控的话(taosd和taoskeeper处于同一服务器),无需修改taoskeeper配置文件的任何配置,可以直接启动,但如果是远程监控的话,还需要在配置文件中(/etc/taos/taoskeeper.toml)指定taosd(tdengine)和taosAdapter的地址以及登录验证信息。如下为默认配置:

1
2
3
4
5
6
7
[tdengine]
host = "tdengine"
port = 6041
username = "root"
password = "taosdata"
[taosAdapter]
address = ["tdengine:6041"]

启动以后如果taoskeeper能正常打印以下日志说明服务与taosd连接是正常的

1
[GIN] 2023/07/19 - 06:25:27 | 200 |   2.31681246s |     10.42.3.146 | POST     "/report"

如果只有启动成功而没有post /report日志信息打印说明其连接taosd服务有问题或者taosd服务monitor配置有问题。如果是taosd与taoskeeper非同一主机部署还需要注意防火墙配置。

在服务启动成功以后,taoskeeper会导出tdengine的监控数据,并将其写入到tdengine的库里面,grafana通过读取tdengine指定的库来进行查询数据并展示页面。默认的库为log库,启动成功以后可以连接tdengine服务查看到。

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> show databases;
name |
=================================
information_schema |
performance_schema |
log |
Query OK, 6 row(s) in set (0.002686s)
taos> use log;
Database changed.
taos> show stables;
stable_name |
=================================
logs |
log_dir |
keeper_monitor |
data_dir |
taosadapter_restful_http_re... |
m_info |
cluster_info |
taosadapter_system_cpu_percent |
vgroups_info |
d_info |
taosadapter_restful_http_re... |
taosadapter_restful_http_re... |
taosadapter_restful_http_re... |
dnodes_info |
taosadapter_system_mem_percent |
log_summary |
vnodes_role |
temp_dir |
grants_info |
Query OK, 19 row(s) in set (0.003757s)

但这里需要注意的是,如果taoskeeper成功连接到了taosd服务并且写入了表结构数据,说明taosd、taosAdapter、taoskeeper都是正常的,但这个时候如果还是没有打印 POST “/report” 日志输出字样,说明taosd服务的monitor配置有问题(一般都是monitorFqdn有误)

grafana

确认一切服务正常以后,还需要在grafana中部署一个tdengine的插件

如果服务器访问外部网络正常,在 Grafana 管理界面中的 Configurations > Plugins 页面直接搜索并按照提示安装 TDengine。

Search tdengine in grafana plugins

或者手动下载模块安装也可以

1
2
3
4
5
6
GF_VERSION=3.3.1
# from GitHub
wget https://github.com/taosdata/grafanaplugin/releases/download/v$GF_VERSION/tdengine-datasource-$GF_VERSION.zip
# from Grafana
wget -O tdengine-datasource-$GF_VERSION.zip https://grafana.com/api/plugins/tdengine-datasource/versions/$GF_VERSION/download
sudo unzip tdengine-datasource-$GF_VERSION.zip -d /var/lib/grafana/plugins/

安装完以后在Configurations > Data sources 中点击add data source添加数据源,搜索找到tdengine数据源

image-20230719150444183

填入tdengine服务器的地址以及账号密码

image-20230719150510387

添加完数据源以后在Dashboards > Browse > New > import 中导入监控图形模板

image-20230719150659006

输入18180点击Load

image-20230719150759624

选择添加的数据源并点击Import导入

image-20230719150826729

模板页面展示效果:

image-20230719150842945

docker以及k8s部署的tdengine

对于docker或在k8s部署的tdengine,在默认的官方镜像中,启动的时候仅启动taosd以及taosAdapter服务,默认不启动taoskeeper服务。这里如果想启动taoskeeper只能修改官方镜像添加一个taoskeeper的启动命令,但这里不推荐修改官方镜像的做法。这里推荐的部署方法是单独再部署一个taoskeeper。

首先需要构建一个taoskeeper的镜像,进入taoskeeper的官方github:https://github.com/taosdata/taoskeeper

构建taoskeeper镜像

1
2
3
4
5
git clone https://github.com/taosdata/taoskeeper.git #如果服务器没有通外网的话可以通过浏览器下载源码zip到服务器
cd taoskeeper/
sed -i 's/golang:1.17.6-alpine/golang:1.18-alpine/g' Dockerfile #如果是taoskeeper3.0需要将官方dockerfile里面的基础镜像改成1.18,否则构建会报错。
docker build . -f Dockerfile -t docker-registry.finsiot.com/finsiot/taoskeeper #使用官方的dockerfile构建镜像

docker部署

1
2
docker run -d --name taoskeeper -v $PWD/config:/etc/taos/  -p 6043:6043 docker-registry.finsiot.com/finsiot/taoskeeper
需要提前修改taoskeeper.toml中taosd以及taosAdapter的连接信息,这里是在taoskeeper的源码目录下面,其配置文件位于config/taoskeeper.toml,所以修改并挂载该目录即可。

k8s部署

下面直接附上部署yaml文件,镜像为上面构建的docker镜像,需要根据自身环境情况修改taoskeeper.toml配置文件中taosd以及taosAdapter的连接信息。

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
---
apiVersion: v1
kind: Service
metadata:
name: "tdengine-taoskeeper"
labels:
app: "tdengine-taoskeeper"
spec:
ports:
- name: tcp6043
protocol: "TCP"
port: 6043
selector:
app: "tdengine-taoskeeper"
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: "tdengine-taoskeeper"
labels:
app: "tdengine-taoskeeper"
spec:
serviceName: "taosd"
replicas: 1
updateStrategy:
type: RollingUpdate
selector:
matchLabels:
app: "tdengine-taoskeeper"
template:
metadata:
name: "tdengine-taoskeeper"
labels:
app: "tdengine-taoskeeper"
spec:
containers:
- name: "tdengine-taoskeeper"
image: docker-registry.finsiot.com/finsiot/taoskeeper
imagePullPolicy: "IfNotPresent"
ports:
- name: tcp6043
protocol: "TCP"
containerPort: 6043
volumeMounts:
- name: taoskeeper
mountPath: /etc/taos/taoskeeper.toml
subPath: taoskeeper.toml
volumes:
- name: taoskeeper
configMap:
name: taoskeeper
---
apiVersion: v1
data:
taoskeeper.toml: |
debug = true
port = 6043
loglevel = "info"
gopoolsize = 50000
RotationInterval = "1s"
[tdengine]
host = "tdengine"
port = 6041
username = "root"
password = "taosdata"
[taosAdapter]
address = ["tdengine:6041"]
[metrics]
prefix = "taos"
database = "log"
tables = []
[metrics.databaseoptions]
cachemodel = "none"
[environment]
incgroup = false
kind: ConfigMap
metadata:
name: taoskeeper

这里docker以及K8s的部署除了taoskeeper本身的配置文件的配置以外,还需要在taosd服务(/etc/taos/taos.conf)中添加monitor配置,例如我这里在K8s的部署方式下,taosd服务的monitor配置如下:

1
2
monitor                   1
monitorFqdn tdengine-taoskeeper

备份与恢复

tdengine一般情况下使用taosdump工具来进行备份以及恢复。

taosdump 有两种安装方式:

  • 安装 taosTools 官方安装包, 请从发布历史页面页面找到 taosTools 并下载安装。
  • 单独编译 taos-tools 并安装, 详情请参考 taos-tools 仓库。

这里部署的时候在官方发布历史页面找到对应版本的包,部署方式与tdengine server一样,这里不再赘述。这里针对taos-tools仍然可以使用域名拼接的方式直接下载而不用每次都发送邮箱,下面以最新的工具包部署为例:

1
2
3
wget https://www.taosdata.com/assets-download/3.0/taosTools-2.5.2-Linux-x64-comp3.tar.gz
tar -xvf taosTools-2.5.2-Linux-x64-comp3.tar.gz
cd taosTools-2.5.2/ && bash install-tools.sh

这里需要注意的是,如果是docker镜像部署的tdengine,其服务器端是自带taos-tools工具包的。

taosdump主要参数:

1
2
3
4
5
6
7
8
9
10
-o:指定输出文件的路径。文件会自动生成。一个dbs.sql文件,导出数据库、超级表;若干个XXX_tables.N.sql文件,文件名的规则:XXX是数据库名称,N是数字,从0开始递增
-u:用户名。
-p:密码。
-A:指示导出所有数据库的数据。
-D:表示指定数据库。
-i:表示输入目录。
-s:表示导出schema。
-t:指定导入到一个文件的表的个数。该参数可以控制输出文件的大小。(网上很多博客里面都有记录这个参数,但是好像taosdump已经不用这个参数了)
-B:指定一条import语句中包含记录的条数。注意:不要让sql语句超过64k,否则后续导入会出错。该参数为了后续导入时,提高导入速率。
-T: 指定导出数据时,启动的线程数。建议设置成机器上core的2倍。

备份

备份库

1
2
3
4
5
6
7
8
9
10
taosdump -u 用户名 -p(输入密码) -h 服务器地址 -D 数据库名 -P 6030 -o 备份的路径
-u、-p、-h、-P本身和taos客户端连接一样,如果是本地且默认账号密码可以直接执行无需这些参数,例如:
mkdir /tmp/logbackup && taosdump -D log -o /tmp/logbackup
例2:
taosdump -h tdengine.dev.finsiot.com -u root -ptaosdata -o /tmp/db01 -T 8 -D db01
-h h tdengine.dev.finsiot.com 集群节点
-u root -ptaosdata 用户名、密码
-o /tmp/dump/db01 输出文件目录
-T 8 并发8个进程
-D db01 备份db01数据库

备份超级表/普通表

1
2
3
4
5
6
mkdir -p /tmp/stb1
mkdir -p /tmp/tb1
##备份超级表stb1
taosdump -h h tdengine.dev.finsiot.com -u root -ptaosdata -o /tmp/dump/stb1 -T 8 db01 stb1
##备份普通表tb1
taosdump -h h tdengine.dev.finsiot.com -u root -ptaosdata -o /tmp/dump/tb1 -T 8 db01 tb1

恢复库

1
taosdump -h ms06.dyq.com -u root -ptaosdata -i /tmp/db01 -T 8 

恢复超级表/普通表

1
2
3
4
##恢复超级表
taosdump -h ms06.dyq.com -u root -ptaosdata -i /tmp/stb1 -T 8
##恢复普通表
taosdump -h ms06.dyq.com -u root -ptaosdata -i /tmp/tb1 -T 8