TDengine(windows)(go集成)
TDengine时序数据库在Windows下安装使用以及注意细节;Grafana的可视化流程;go语言集成TDengine时的流程以及注意事项。
文章目录
基本认识
下载的是windows客户端和服务端(在本机)
- 安装时没有路径可以选择,默认
C:\TDengine
- TDengine开发文档:https://docs.taosdata.com/intro/
- 服务端与客户端的区别:服务端比客户端多一个
taosd.exe
文件(可以理解为服务端包含客户端) - 需要启动
taosd.exe
保持服务端开启状态,然后使用taos.exe
客户端taos
命令启动 - 默认用户名及密码:
root taosdata
编辑
taos.cfg
文件(C:\TDengine\cfg\taos.cfg
),需要将firstEP修改为TDengine服务器的End Ponit(即服务器的ip加端口号)
- 服务器是远程的情况下修改,firstEP默认值为
localhost:6030
,secondEp默认值是空 - 文件中存在的形式
firstEp hostname:6030
,即需要修改hostname:6030
- 注意:
#
注释需要去除
利用FQDN连接服务器,需要确认本机网络环境DNS已配置或在hosts文件中添加FQDN寻址记录
- 在
C:\Windows\system32\drivers\etc\hosts
中添加192.168.1.01 h1.taos.com
启动类型:自动
在windows系统中,由于
taosd.exe
文件点击启动是不优雅的
- 此电脑右键打开管理界面,进入服务和应用程序中的服务界面
- 找到taosd服务,可将其启动类型改为自动
在服务界面我们也可以看到一个taosAdapter服务
在TDengine开发文档中是这么介绍的:
- taosAdapter 是一个 TDengine 的配套工具,是 TDengine 集群和应用程序之间的桥梁和适配器。它提供了一种易于使用和高效的方式来直接从数据收集代理软件(如 Telegraf、StatsD、collectd 等)摄取数据。它还提供了 InfluxDB/OpenTSDB 兼容的数据摄取接口,允许 InfluxDB/OpenTSDB 应用程序无缝移植到 TDengine
可视化
可视化工具使用Grafana
如使用其他可视化工具,可以看TDengine开发文档-第三方工具:https://docs.taosdata.com/third-party/
Grafana
下载地址:https://grafana.com/grafana/download
下载安装启动流程可看官方文档:https://grafana.com/docs/grafana/latest/setup-grafana/installation/windows/
安装
- 按电脑配置下载对应程序,如windows下载安装程序:
grafana-enterprise-10.0.1.windows-amd64.msi
- 安装时除了修改安装目录(非C盘,如:
D:\LovliSoft\GrafanaLabs
)以外,一路next即可 - 安装成功后Grafana会作为windows的服务存在(这是由于NSSM的缘故)(默认自动启动)
启动
- 打开浏览器并转到Grafana端口(默认为 http://localhost:3000/)
- 如果想要更改默认端口号
- 在conf(如
D:\LovliSoft\GrafanaLabs\grafana\conf
路径下)中,复制一个sample.ini
文件,并重命名为custom.ini
,然后编辑custom.ini
- 将
custom.ini
文件中的http_port
取消注释(在ini文件中;
是注释字符),然后更改后面的端口号为8080
等端口即可
- 在conf(如
- 最后打开服务,将其中的Grafana服务重新启动,即可使用新端口号打开网页
登录
- Grafana默认账号密码:
Admin/admin
- 第一次登录可以修改密码
引入TDengine
在TDengine开发文档v3.0版本中,说是在首页找到Configuratons再去找Plugins,目前10.0.1版本应该是弃用该名了,转用Administration
- (在10.0.1版本中)在首页找到Administration -> Plugins -> 将State改成All -> 搜索TDengine并install
- 注意在
Create a TDengine Datasource data source
时Host不要使用6030端口
,而是使用6041端口
- 这是因为Grafana连接将使用 TDengine RESTful API(由默认端口为 6041 的 taosAdapter 提供服务)
- 当然在连接时也要确保taosd服务和taosAdapter服务都在运行着
- 之后就可以使用该数据源来创建仪表盘查看数据走势,至于如何创建可以参考TDengine开发文档-第三方工具-Grafana:https://docs.taosdata.com/third-party/grafana/
go集成TDengine
引入依赖
go get -u github.com/taosdata/driver-go/v3
官方文档注意事项:
-
driver-go 使用 cgo 封装了 taosc 的 API
-
cgo 需要使用 GCC 编译 C 的源码,因此需要确保你的系统上有 GCC
解决注意事项(如果不解决会出现报错问题,具体看当前目录下的报错)
- 设置属性启动CGO:
go env -w CGO_ENABLED=1
- 确保系统有GCC,没有就需要安装GCC(详情可看报错中的gcc安装)
案例
import (
"server/global"
"database/sql"
_ "github.com/taosdata/driver-go/v3/taosSql"
"go.uber.org/zap"
)
func TDengineDriver() {
// url
// 和其他数据库连接一样,后面需要带有数据库,如/power,否则无法ping
var taosDSN = "root:taosdata@tcp(localhost:6030)/power"
taos, err := sql.Open("taosSql", taosDSN)
defer taos.Close()
if err != nil {
//global.GLOBAL_LOG是全局变量
global.GLOBAL_LOG.Error("failed to connect TDengine", zap.Error(err))
return
}
err = taos.Ping()
if err != nil {
global.GLOBAL_LOG.Error("failed to ping TDengine", zap.Error(err))
return
}
global.GLOBAL_LOG.Info("Connected")
}
报错信息获取
if err != nil {
//TDengine错误可以通过以下方式获取错误码和错误信息
tError, is := err.(*errors.TaosError)
if is {
global.GLOBAL_LOG.Error("errorCode:" + string(tError.Code))
global.GLOBAL_LOG.Error("errorMessage:" + tError.ErrStr)
} else {
global.GLOBAL_LOG.Error("failed to connect TDengine", zap.Error(err))
}
return
}
注意
_ "github.com/taosdata/driver-go/v3/taosSql"
此包可能不会自动导入,需要手动导入
报错
-
报错
build constraints exclude all Go files in ……
# 在注意事项中说明driver-go 使用 cgo 封装了 taosc 的 API # 因此需要启动CGO,而CGO默认是不启动的 go env -w CGO_ENABLED=1
-
报错
cgo: C compiler "gcc" not found: exec: "gcc": executable file not found in %PATH%
- 说明本地没有gcc环境,缺少gcc编译器,需要下载安装
- 详情看gcc安装
gcc安装
gcc可以安装MinGW、MinGW-w64、TDM-GCC
- 其中TDM-GCC是衍生自 MinGW 和 MinGW-w64 的项目
- 这里选用TDM-GCC来安装
TDM-GCC网址:https://jmeubank.github.io/tdm-gcc/
- 进入网址后点击最新版本,选择一个installer(根据电脑配置以及需求选择下载),如下载
tdm64-gcc-10.3.0-2.exe
- 打开安装包后 -> 点击create -> 选择下载版本,如64-bit -> 选择下载路径 -> 勾选所有的components -> install
- 在安装过程中会下载一些包,由于是github的缘故,可能需要开启代理
- 在安装后,程序会帮我们配置好环境变量(在系统变量Path中);如果没有可以手动配置,即将
gcc.exe
文件路径保存在系统变量Path中(如:D:\LovliSoft\TDM-GCC-64\bin
) - 可以使用
gcc --version
命令查看当前版本,并确认是否安装成功
语法
对TDengine开发文档的理解
用户管理
# 查看所有用户
show users;
# 修改当前root用户密码
alter user root pass '123456';
# 创建用户user_1且设置密码
create user user_1 pass '123456';
# 删除用户user_1
drop user user_1;
# 修改用户权限为write或read(系统内还有super权限,但是无法用alter命令把super赋予用户)
alter user user_1 privilege write|read;
报错
-
修改root密码后,服务端程序
taosd.exe
报无法登录的错误,客户端程序taos.exe
无法自动登录成功解决方法:
# 假如密码被修改成123456,可以使用如下命令登录 taos -u root -p123456 # 原因是修改用户密码后,taos命令会自动使用默认密码来登录,即使用taosdata;所以自动登录会失败
创建库
# 创建一个名为 power 的库,这个库的数据将保留 365 天(超过 365 天将被自动删除),每 10 天一个数据文件,每个 VNode 的写入内存池的大小为 16 MB,对该数据库入会写 WAL 但不执行 FSYNC
CREATE DATABASE power KEEP 365 DURATION 10 BUFFER 16 WAL_LEVEL 1;
# 切换到power库
USE power;
其他部分命令
# 显示所有数据库
show databases;
# 删除库
drop database power;
# 删除库(如果存在)
drop database if exists power;
# ……
报错
-
报错
DB error: Invalid duration value, should be keep2 >= keep1 >= keep0 >= duration
# 使用如下命令,会报上述错误 create database power keep 1; # 原因:没有设置时间跨度 duration # 解决方法 create database power keep 1 duration 1;
创建表
超级表是普通表的模板
超级表
# 创建一张超级表,可以理解为设备有几种静态属性(即TAGS后定义的),而温度、湿度这种每单位时间都要记录的属性可以理解为动态属性,即相对于TAGS后属性来说它们非常多(每个设备在不同地点测定的数据都有很多),这可以理解为一个模板
CREATE STABLE meters (ts timestamp, current float, voltage int, phase float) TAGS (location binary(64), groupId int);
普通表
# 建表
CREATE TABLE d1001 USING meters TAGS ("California.SanFrancisco", 2);
# 在TDengine数据库中,使用insert插入数据,发现没有d1001表时,会自动创建表,根据TAGS属性来创建
INSERT INTO d1001 USING meters TAGS ("California.SanFrancisco", 2) VALUES (NOW, 10.2, 219, 0.32);
多列模型/单列模型
根据采集物理量来建超级表可分为多列模型或单列模型
- 假如要采集的设备有温度、湿度、二氧化碳含量三种属性
- 根据三种属性来建超级表即多列模型
- 根据一种属性来建超级表即单列模型
- 建议使用多列
其他语法可以看TDengine开发文档
TDengine开发文档-SQL手册:https://docs.taosdata.com/taos-sql/
更多推荐
所有评论(0)