InfluxDB入门

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

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

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

InfluxDB主要特性:

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

1.安装 

  (1)windows下

  下载 https://portal.influxdata.com/downloads/

   选择

  解压

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

influxd

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

influx

  安装成功

  (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/usr/bin/influxd客户端命令

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

  使用

influx

> 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

原文地址:https://www.cnblogs.com/baby123/p/11084219.html