influxdb是什么

时序数据库是近几年一个新的概念,与传统的Mysql关系型数据库相比,它的最大的特点是:数据按照时间顺序存储
InfluxDB是一个由InfluxData开发的开源时序型数据库。它由Go语言写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景,有三大特性

  1. 基于时间序列
  2. 可度量性
  3. 基于事件
    在最新的DB-ENGINES排名给出的时间序列数据库的排名中,InfluxDB高居第一位

influxdb数据模型

database 代表含义:数据库
measurement 代表含义:数据库中的表
point 代表含义:表里面的一行数据,由时间戳(time)、数据(field)、标签(tags)组成
time 代表含义:每个数据记录时间,是数据库中的主索引(会自动生成)
fields 代表含义:各种记录值(没有索引的属性)
tags 代表含义: 各种有索引的属性
series 代表含义:所有在数据库中的数据,都需要通过图表来展示,表示表里面的数据,可以在图表上画成几条线,通过tags排列组合计算出来

如下图:temperature 就是measurement 代表一张表。每行代表一个 point internal extenal 是两个数据指标取值。tags代表取值产生的位置。
在这里插入图片描述
series 就是某种特定tag下的某个特定指标的时序取值集合。
在这里插入图片描述

influxdb数据存储架构

每个database 可以有多个RP(retention policy数据保存策略),但是只有一个默认策略。策略下按照时间段分为多个ShardGroup,每个ShardGroup存储一个时间段的数据。每个shardgroup下分多个shard来存储数据。
在这里插入图片描述

influxdb部署运行

解压安装包并重命名

[root@localhost ~]# wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.8_linux_amd64.tar.gz
[root@localhost ~]# tar -zvxf influxdb-1.7.8_linux_amd64.tar.gz 
[root@localhost ~]# mv influxdb-1.7.8_linux_amd64 influx

创建 data log meta wal 四个目录如下

[root@localhost influx]# ll
drwxr-xr-x. 4 root root    34 9鏈  5 15:21 data
drwxr-xr-x. 4 root root    41 8鏈 21 2019 etc
-rw-r--r--. 1 root root 20862 9鏈  5 15:24 influxdb.conf
drwxr-xr-x. 2 root root     6 9鏈  5 15:00 log
drwxr-xr-x. 2 root root    21 9鏈  5 15:23 meta
drwxr-xr-x. 5 root root    41 8鏈 21 2019 usr
drwxr-xr-x. 4 root root    28 8鏈 21 2019 var
drwxr-xr-x. 4 root root    34 9鏈  5 15:21 wal

修改配置文件 influxdb.conf中如下内容

[meta]
dir = "/usr/local/influx/meta"
[data]
dir = "/usr/local/influx/data"
wal-dir = "/usr/local/influx/wal"
series-id-set-cache-size = 100
[coordinator]
[retention]
enabled = true
check-interval = "30m"

为了命令调用方便增加环境变量配置

export PATH=$PATH:/usr/local/influx/usr/bin

启动服务,日志中可以看到相关配置如下:

[root@localhost influx]# influxd  -config influxdb.conf

在这里插入图片描述

influxdb基本操作

使用influx客户端连接服务,即可进行相关操作
数据库操作
显示数据库
show databases
创建数据库
create database influxdb
删除数据库
drop database influxdb
使用数据库
use influxdb

数据保留策略
数据保留策略创建语法

CREATE RETENTION POLICY <retention_policy_name> ON <database_name> DURATION
<duration> REPLICATION <n> [SHARD DURATION <duration>] [DEFAULT]

创建数据保留策略
CREATE RETENTION POLICY “influx_retention” ON “influxdb” DURATION 30d
REPLICATION 1 DEFAULT;
查看保留期
SHOW RETENTION POLICIES ON influxdb
修改保留期
ALTER RETENTION POLICY “influx_retention” ON influxdb DURATION 15d
删除保留期
DROP RETENTION POLICY “influx_retention” ON influxdb

表操作
表增删查操作
显示所有表
show measurements
插入数据

> use influxdb
>insert weather,altitude=1000,area=北 temperature=11,humidity=-4

查询表
select * from weather
设置时间显示格式
precision rfc3339
删除表
DROP MEASUREMENT weather

示例如下:

Connected to http://localhost:8086 version 1.7.8
InfluxDB shell version: 1.7.8
> show databases;
ERR: unable to parse authentication credentials
Warning: It is possible this error is due to not setting a database.
Please set a database with the command "use <database>".
> show databases;  --显示数据库
name: databases
name
----
_internal
eim
> create database zxmtest  --创建数据库
> show databases;
name: databases
name
----
_internal
eim
zxmtest
> drop database zxmtest;  --删除数据库
> use eim  --选择数据库
Using database eim
> create retention policy policy1 on eim duration 30d replication 2 default;  --创建数据保存策略
> show retention policies on eim  --查看数据保存策略
name             duration shardGroupDuration replicaN default
----             -------- ------------------ -------- -------
autogen          0s       168h0m0s           1        false
influx_retention 720h0m0s 24h0m0s            1        false
policy1          720h0m0s 24h0m0s            2        true
> alter retention policy policy1 on eim duration 15d;  --修改数据保存策略
> show retention policies on eim  
name             duration shardGroupDuration replicaN default
----             -------- ------------------ -------- -------
autogen          0s       168h0m0s           1        false
influx_retention 720h0m0s 24h0m0s            1        false
policy1          360h0m0s 24h0m0s            2        true
> drop  retention policy policy1  on eim  --删除数据保存策略
> show measurements;  --查看指标清单
name: measurements
name
----
weather
> create retention policy policy1 on eim duration 30d replication 2 default;
> show retention policies on eim
name             duration shardGroupDuration replicaN default
----             -------- ------------------ -------- -------
autogen          0s       168h0m0s           1        false
influx_retention 720h0m0s 24h0m0s            1        false
policy1          720h0m0s 24h0m0s            2        true
> select * from weather;
> insert tem,t1=1000,t2=1 tem=11  插入数据 到指标 tem
> insert tem,t1=1000,t2=1 tem=12
> insert tem,t1=1000,t2=1 tem=13
> insert tem,t1=1000,t2=1 tem=14
> insert tem,t1=1000,t2=1 tem=15
> insert tem,t1=1000,t2=2 tem=15
> insert tem,t1=1000,t2=2 tem=14
> insert tem,t1=1000,t2=2 tem=13
> insert tem,t1=1000,t2=2 tem=12
> select * from tem  查询指标数据
name: tem
time                t1   t2 tem
----                --   -- ---
1638638410347983907 1000 1  11
1638638414273143226 1000 1  12
1638638415636644887 1000 1  13
1638638417093045518 1000 1  14
1638638418964082753 1000 1  15
1638638425116806331 1000 2  15
1638638427669899113 1000 2  14
1638638429520189744 1000 2  13
1638638431234719109 1000 2  12
> precision rfc3339      --修改时间显示格式
> select * from tem
name: tem
time                           t1   t2 tem
----                           --   -- ---
2021-12-04T17:20:10.347983907Z 1000 1  11
2021-12-04T17:20:14.273143226Z 1000 1  12
2021-12-04T17:20:15.636644887Z 1000 1  13
2021-12-04T17:20:17.093045518Z 1000 1  14
2021-12-04T17:20:18.964082753Z 1000 1  15
2021-12-04T17:20:25.116806331Z 1000 2  15
2021-12-04T17:20:27.669899113Z 1000 2  14
2021-12-04T17:20:29.520189744Z 1000 2  13
2021-12-04T17:20:31.234719109Z 1000 2  12

用户操作
显示用户
show users
创建用户
【普通用户】创建用户并设置密码
CREATE USER influx WITH PASSWORD ‘influxdb’;
【管理员用户】
create user “admin” with password ‘admin’ with all privileges;
修改用户密码
SET PASSWORD FOR influx = ‘influx’
删除用户
drop user admin;

数据库访问权限
用户授权
授权用户数据库操作权限
GRANT ALL PRIVILEGES ON influxdb TO influx
赋予用户管理员权限
GRANT ALL PRIVILEGES TO influx
备注:只能使用admin权限才可以操作数据库
撤销授权
撤销用户数据库操作权限
Revoke ALL PRIVILEGES ON influxdb FROM influx
撤销用户管理员权限
Revoke ALL PRIVILEGES FROM influx

示例操作如下:

> show users
user  admin
----  -----
admin true
eim   true
> create user zxm with password zxm
ERR: error parsing query: found zxm, expected string at line 1, char 31
> create user "zxm" with password 'zxm'
> show users
user  admin
----  -----
admin true
eim   true
zxm   false
> set password for zxm='zxm'
> create user "zxm2" with password 'zxm2' with all privileges
> drop user zxm
> show users
user  admin
----  -----
admin true
eim   true
zxm2  true
> create user "zxm3" with password 'zxm3'
> show users
user  admin
----  -----
admin true
eim   true
zxm2  true
zxm3  false
> grant all privileges on eim to zxm3
> revoke all privileges on eim from zxm3
> revoke all privileges from zxm2

开启用户登录认证
开启登录认证
在influxdb 配置文件influxdb.conf中,开启用户登录认证,添加如下内容:
[http]
auth-enabled = true
开启认证后无密码登录
bin/influx
开启认证后有密码登录
bin/influx -username influx -password influx

修改配置文件并重启服务
开启身份认证后,直接进行数据库操作会提示没有认证


> show users
ERR: unable to parse authentication credentials

使用用户密码后 正常

[root@localhost influxdb]# influx -username eim -password eim
Connected to http://localhost:8086 version 1.7.8
InfluxDB shell version: 1.7.8
> show users
user  admin
----  -----
admin true
eim   true
zxm2  false
zxm3  false
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐