InfluxDB是一个用于存储和分析时间序列数据的开源数据库

时序数据是基于时间的一系列的数据

时序数据库就是存放时序数据的数据库,并且需要支持时序数据的快速写入、持久化、多纬度的聚合查询等基本功能

InfluxDB主要特性:


  • 内置HTTP接口,使用方便
  • 数据可以打标记,查让查询可以很灵活
  • 类SQL的查询语句
  • 安装管理很简单,并且读写数据很高效
  • 能够实时查询,数据在写入时被索引后就能够被立即查出

1.安装

(1)windows下

下载 ​https://portal.influxdata.com/downloads/" target="_blank">​https://portal.influxdata.com/downloads/​

InfluxDB入门_表名

选择

InfluxDB入门_表名_02

解压

InfluxDB入门_服务端_03

启动服务端,打开命令窗口,到这个目录下,执行


influxd


InfluxDB入门_linux_04

启动客户端,打开命令窗口,到这个目录下,执行


influx


InfluxDB入门_数据_05

安装成功

(2)Linux下

下载


wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.7_linux_amd64.tar.gz


解压


tar xvfz influxdb-1.7.7_linux_amd64.tar.gz


重命名


mv influxdb-1.7.7-1 influxdb


influxdb/usr/bin/influxd服务端


./influxd


全局使用


ln -s /www/influxdb/usr/bin/influxd /usr/local/bin/influxd


使用


influxd


InfluxDB入门_服务端_06

influxdb/usr/bin/influxd客户端命令


ln -s /www/influxdb/usr/bin/influx /usr/local/bin/influx


使用


influx


InfluxDB入门_数据库_07


> create database mydb > show databases name: databases name ---- _internal mydb


2.简单使用

(1)名词介绍:

database:数据库

measurement:数据库中的表

points:表里面的一行数据

Point由时间戳(time)、数据(field)和标签(tags)组成

time:每条数据记录的时间,也是数据库自动生成的主索引

fields:各种记录的值

tags:各种有索引的属性

(2)数据库基本操作


#创建数据库 > create database "test" #显示所有数据库 > show databases name: databases name ---- _internal test #打开数据库 > use test Using database test #显示该数据库中所有的表 > show measurements #创建表,直接在插入数据的时候指定表名test > insert test,host=127.0.0.1,monitor_name=test count=1 > show measurements name: measurements name ---- test #删除表test > drop measurement "test" > show measurements #删除数据库test > drop database test > show databases name: databases name ---- _internal


说明:

insert test,host=127.0.0.1,monitor_name=test count=1

test:表名

host=127.0.0.1,monitor_name=test:tag

count=1:field

插入与查询数据


> create database test > show databases name: databases name ---- _internal test > show measurements > insert test,host=127.0.0.1,monitor_name=test count=1 > show measurements name: measurements name ---- test > select * from test order by time desc name: test time                count host      monitor_name ----                ----- ----      ------------ 1561957302455301318 1     127.0.0.1 test > insert test,host=127.0.0.1,monitor_name=test count=1 > select * from test order by time desc name: test time                count host      monitor_name ----                ----- ----      ------------ 1561957336177679133 1     127.0.0.1 test 1561957302455301318 1     127.0.0.1 test


(3)数据保存策略(Retention Policies):

influxDB是没有提供直接删除数据记录的方法,但是提供数据保存策略,主要用于指定数据保留时间,超过指定时间,就删除这部分数据

查看当前数据库Retention Policies


> show retention policies on "test" name    duration shardGroupDuration replicaN default ----    -------- ------------------ -------- ------- autogen 0s       168h0m0s           1        true


创建新的Retention Policies


> create retention policy "rp_name" on "test" duration 1w replication 1 default > show retention policies on "test" name    duration shardGroupDuration replicaN default ----    -------- ------------------ -------- ------- autogen 0s       168h0m0s           1        false rp_name 168h0m0s 24h0m0s            1        true


说明:

rp_name:策略名

test:数据库名

1w:保存1周,1周之前的数据将被删除,influxdb具有各种事件参数,比如:h(小时),d(天),w(星期)

replication 1:副本个数,一般为1就可以了

default:设置为默认策略

修改Retention Policies


> alter retention policy "rp_name" on "test" duration 5d default > show retention policies on "test" name    duration shardGroupDuration replicaN default ----    -------- ------------------ -------- ------- autogen 0s       168h0m0s           1        false rp_name 120h0m0s 24h0m0s            1        true


删除Retention Policies


> drop retention policy "rp_name" on "test" > show retention policies on "test" name    duration shardGroupDuration replicaN default ----    -------- ------------------ -------- ------- autogen 0s       168h0m0s           1        false


(4)连续查询(Continous Queries)

InfluxDB的数据保留策略,数据超过保存策略里指定的时间之后,就会被删除。但是如果我们不想完全将这些数据删除掉,就需要连续查询(Continuous Queries)的帮助了。


连续查询主要用在将数据归档,以降低系统空间的占用率,主要是以降低精度为代价。

连续查询是在数据库中自动定时启动的一组语句,语句中必须包含 ​​SELECT ​​​关键词和​​ GROUP BY time() ​​关键词。

InfluxDB会将查询结果放在指定的数据表中


查看Continous Queries


> show continuous queries name: _internal name query ---- -----  name: test name query ---- -----


创建Continous Queries


> show continuous queries name: _internal name query ---- -----  name: test name query ---- ----- > create continuous query cq_name on test begin select sum(count) into test1 from test group by time(10m) end > show continuous queries  name: _internal name query ---- -----  name: test name    query ----    ----- cq_name CREATE CONTINUOUS QUERY cq_name ON test BEGIN SELECT sum(count) INTO test.rp_name.test1 FROM test.rp_name.test GROUP BY time(10m) END


删除Continous Queries


> drop continuous query cq_name on test > show continuous queries name: _internal name query ---- -----  name: test name query ---- -----


在InfluxDB中,将连续查询与数据存储策略一起使用会达到最好的效果

(5)用户管理


> show users user admin ---- ----- > create user "abc" with password  '123' > show users user admin ---- ----- abc  false > drop user "abc" > show users user admin ---- -----


注:

如果启动失败,请查看是否是端口被占用,默认端口为8088





连续查询主要用在将数据归档,以降低系统空间的占用率,主要是以降低精度为代价。

连续查询是在数据库中自动定时启动的一组语句,语句中必须包含 ​​SELECT ​​​关键词和​​ GROUP BY time() ​​关键词。

InfluxDB会将查询结果放在指定的数据表中