InfluxDB基本操作

InfluxDB的基本操作

1、InfluxDB的安装与配置
2、InfluxDB基本操作
3、Springboot对接InfluxDB
4、InfluxDB小总结
5、telagraf+influxdb+grafana搭建监控系统
6、Grafana的基本使用

基础概念

  1. 与常见关系型数据库的对比
概念名称InfluxDb关系型数据库
数据库databasedatabase
measurementtable
pointsrow
tag,field,timestampcolumn
  1. InfluxDB独有的概念
  • Point:代表一行的数据,由时间戳(time)、数据(field)和标签(tags)组成
  • tag sets: tags在InfluxDB中会按照字典序排序,不管是tag-key还是tag-value,只要不一致就分别属于两个key
  • tag:标签,表名+tag一起作为数据库的索引是“key-value”的形式
  • field name:InfluxDB支持一条数据插入多个fieldName。但实际存储中还是被当做多条数据存储
  • timestamp: 每一条数据都需要指定一个时间戳,在 TSM 存储引擎中会特殊对待,以为了优化后续的查询操作
  • Series 相当于是 InfluxDB 中一些数据的集合,在同一个 database 中,retention policy、measurement、tag sets 完全相同的数据同属于一个 series,同一个 series 的数据在物理上会按照时间顺序排列存储在一起
  • retention policy: 存储策略,用于设置数据保留的时间,每个数据库刚开始会自动创建一个默认的存储策略 autogen,数据保留时间为永久,之后用户可以自己设置,例如保留最近2小时的数据。插入和查询数据时如果不指定存储策略,则使用默认存储策略,且默认存储策略可以修改。InfluxDB 会定期清除过期的数据
  • Shard 在 InfluxDB 中是一个比较重要的概念,它和 retention policy 相关联。每一个存储策略下会存在许多 shard,每一个 shard 存储一个指定时间段内的数据,并且不重复,例如 7点-8点 的数据落入 shard0 中,8点-9点的数据则落入 shard1 中。每一个 shard 都对应一个底层的 tsm 存储引擎,有独立的 cache、wal、tsm file
  1. TSM存储引擎组成
    主要由几个部分组成: cache、wal、tsm file、compactor

    1)Cache:cache 相当于是 LSM Tree 中的 memtabl。插入数据时,实际上是同时往 cache 与 wal 中写入数据,可以认为 cache 是 wal 文件中的数据在内存中的缓存。当 InfluxDB 启动时,会遍历所有的 wal 文件,重新构造 cache,这样即使系统出现故障,也不会导致数据的丢失。cache 中的数据并不是无限增长的,有一个 maxSize 参数用于控制当 cache 中的数据占用多少内存后就会将数据写入 tsm 文件。如果不配置的话,默认上限为 25MB,每当 cache 中的数据达到阀值后,会将当前的 cache 进行一次快照,之后清空当前 cache 中的内容,再创建一个新的 wal 文件用于写入,剩下的 wal 文件最后会被删除,快照中的数据会经过排序写入一个新的 tsm 文件中。

    2)WAL:wal 文件的内容与内存中的 cache 相同,其作用就是为了持久化数据,当系统崩溃后可以通过 wal 文件恢复还没有写入到 tsm 文件中的数据。

    3)TSM File:单个 tsm file 大小最大为 2GB,用于存放数据。

    4)Compactor:compactor 组件在后台持续运行,每隔 1 秒会检查一次是否有需要压缩合并的数据。

主要进行两种操作,一种是 cache 中的数据大小达到阀值后,进行快照,之后转存到一个新的 tsm 文件中。

另外一种就是合并当前的 tsm 文件,将多个小的 tsm 文件合并成一个,使每一个文件尽量达到单个文件的最大大小,减少文件的数量,并且一些数据的删除操作也是在这个时候完成。

常用命令

  1. 显示数据库
show databases

在这里插入图片描述

  1. 新建数据库
create database device

创建数据库
只有语句执行错误才会显示,所以不显示任何信息就标识任务执行成功了
查看数据库

  1. 删除数据库
drop database test #区分大小写

删除数据库

  1. 使用指定的数据库
use device

使用数据库

  1. 显示所有表
show measurements

显示表

  1. 新建表
insert device_temperature,device_id=001 value=35

没有特定的建表语句所以插入时就会建表
其中device_temperature 是表名
device_id=001是索引tag
value=35是记录值field,记录值可以多个
添加数据时会自动写入时间戳,也可以自己指定时间戳

insert device_temperature,device_id=001 value=35 1435362189575692182

插入新建表

  1. 删除表
drop measurement device_temperature

删除表

  1. 数据保留策略
show retention policies on "db_name" #保留策略是定在数据库上的

保留策略

  1. 创建数据库保留策略
create retention policy "rp_name" on "db_name" duration 3w replication 1 default

rp_name:保留策略名称
db_name:数据库名称
duration 3w: 3周,近3周之前的数据会被删除,还支持小时(h),天(d),星期(w),分钟(m),秒(s),为0的话表示永久保存
replication: 副本的个数,这里是1
default:是否是默认策略
创建保留策略

  1. 修改数据库保留策略
alter retention policy "rp_name" on "db_name" duration 30d default

修改保留策略

  1. 删除保留策略
drop retention policy "rp_name" on "db_name"

删除保留策略

  1. 查询语句
  • 数据查询
select * from device_temperature #查询此表所有数据

当然可以加limit限制查询的条数,可以按照time进行排序

select * from /.*/ LIMIT 1 #查询此数据库所有表的第一条记录
select * from  device."rp_3w".device_temperature

查看保留数据

delete from "device_temperature" #删除表所有数据,则表就不存在了
drop MEASUREMENT "device_temperature"   #删除表(注意会把数据保留删除使用delete不会)
  • 表信息查询
show measurements #查看表
show FIELD KEYS from measurement_name #查看字段key
show series from measurement_name #查看key数据
show tag keys from device_temperature #查看tag keys
show tag values from device_temperature with key=device_id #查看tag values 必须制定tag key

查询语句

  1. 用户管理命令
SHOW USERS
CREATE USER test WITH PASSWORD '123456' #创建普通用户
CREATE USER test2 WITH PASSWORD '123456' WITH ALL PRIVILEGES #创建admin用户
REVOKE ALL PRIVILEGES FROM test2 #取消权限赋予
REVOKE READ ON mydb FROM test #取消test用户的读权限
SHOW GRANTS FOR test #展示test用户的权限
GRANT ALL ON mydb TO test #授予admin权限
GRANT READ ON mydb TO test #授权test在数据库中的读权限
  1. 查看数据存储文件
    查看数据存储文件

HTTP API

  1. 通过HTTP API操作数据库
curl -POST http://192.168.47.129:8086/query --data-urlencode "q=CREATE DATABASE mydb"

http api 创建数据库
返回{“results”:[{“statement_id”:0}]}表示执行成功

curl -POST http://localhost:8086/query --data-urlencode "q=DROP DATABASE mydb"

在这里插入图片描述
query表明查询操作
query 后可增加?db=mydb指定数据库
q=DROP DATABASE mydb 是具体的语句
这里可以是create,drop,show,alter,grant,revoke,delete等关键词
在这里插入图片描述

  1. 通过HTTP API 添加数据
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000'

插入数据

curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server02 value=0.67
cpu_load_short,host=server02,region=us-west value=0.55 1422568543702900257
cpu_load_short,direction=in,host=server01,region=us-west value=2.0 1422568543702900257'
  1. 通过HTTP API查询数据
curl -GET 'http://localhost:8086/query?pretty=true' --data-urlencode "db=mydb" --data-urlencode "q=SELECT value FROM cpu_load_short WHERE region='us-west'"

查询数据
(1)多条查询用“;”进行分割即可
(2)指定输出时间的格式 --data-urlencode “epoch=s” epoch=[h,m,s,ms,u,ns]
(3)指定查询条数 用chunk_size,–data-urlencode "chunk_size=200"表示查询200个point的数据

在这里插入图片描述

  1. InfluxDB 的HTTP API响应

    在使用HTTP API时,InfluxDB的响应主要有以下几个:

    1)2xx:204代表no content,200代表InfluxDB可以接收请求但是没有完成请求。一般会在body体中带有出错信息。
    2)4xx:InfluxDB不能解析请求。
    3)5xx:系统出现错误。

客户端工具

InfluxDBStudio的下载地址
可以使用InfluxDBStudio 作为可视化管理工具
在这里插入图片描述

参考博文查看

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值