InfluxDB是一个用于存储和分析时间序列数据的开源数据库
时序数据是基于时间的一系列的数据
时序数据库就是存放时序数据的数据库,并且需要支持时序数据的快速写入、持久化、多纬度的聚合查询等基本功能
InfluxDB主要特性:
- 内置HTTP接口,使用方便
- 数据可以打标记,查让查询可以很灵活
- 类SQL的查询语句
- 安装管理很简单,并且读写数据很高效
- 能够实时查询,数据在写入时被索引后就能够被立即查出
1.安装
(1)windows下
下载 https://portal.influxdata.com/downloads/" target="_blank">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
连续查询主要用在将数据归档,以降低系统空间的占用率,主要是以降低精度为代价。
连续查询是在数据库中自动定时启动的一组语句,语句中必须包含 SELECT
关键词和 GROUP BY time()
关键词。
InfluxDB会将查询结果放在指定的数据表中