一、什么是时序数据库

什么是时序数据库?时序数据库是近几年一个新的概念,与传统的Mysql关系型数据库相比,它的最大的特点是:数据按照时间顺序存储。

举例来说,日志数据,是以时间顺序存储的,所以用时序数据库存储是一种很好的选择。使用Mysql在存储的过程中,不是对这种基于时间的数据进行优化的,所以,在查询、插入上有一些瓶颈。

1、时序数据库 InfluxDb

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

2、InfluxDB 的特点

InfluxDB有很多特点,如下:

内置HTTP接口,使用方便

数据可以打标记,这样查询可以很灵活

类SQL的查询语句

安装管理很简单,并且读写数据很高效

能够实时查询,数据在写入时被索引后就能够被立即查出

3、influxdb 数据模型

measurement:数据库中的表;

points:表里面的一行数据。

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

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

fields:各种记录的值;

tags:各种有索引的属性。

temperature 就是measurement 代表一张表。每行代表一个 point internal extenal 是两个数据指标取值。tags代表取值产生的位置。

4、influxdb 时间线

series :所有在数据库中的数据,都需要通过图表来展示,表示表里面的数据,可以在图表上画成几条线,通过tags排列组合计算出来。

series 就是某种特定tag下的某个特定指标的时序取值集合。

5、influxdb 系统架构

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

二、influxdb的安装

1.Windows电脑安装influxdb时序数据库

windows1.8.3版本

1、influxdb解压安装

下载后直接解压即可,将influxdb解压到某个目录:

 

 有几个文件我们需要记一下:

  • influxdb.conf 是配置文件

  • influxd 是influx的主程序

2、启动influxdb数据库

通过cmd进入这个目录,执行 influxd.exe 即可启动:

 可能会弹出需要网络的提醒,这时候点击允许访问网络就可以了。

 3、创建服务

点击下方nssm.exe下载到influxdb目录中:

nssm.exe

(1)通过cmd进入这个目录,执行 nssm.exe install influxdb,选择路径

 选择 influxd.exe

(2)在Arguments填入 -config ./influxdb.conf

(3)打开任务管理器,启动influxdb服务

3、启动客户端测试是否服务器启动成功

再次通过cmd进入这个目录,执行 influx.exe 即可启动:

执行 show databases, 客户端会连接默认的db,如上图,显示了对应的数据库就表示influxdb启动成功了。

三、influxdb 基本操作

此次在Linux中进行操作演示

1、InfluxDB数据库操作

显示数据库

show databases


说明:_internal数据库是用来存储InfluxDB内部的实时监控数据的。

创建数据库

create database test


删除数据库

drop database kkkkk


使用指定数据库

use mydb


2、InfluxDB 数据表操作

在 InfluxDB 当中,并没有表(table)这个概念,取而代之的是 MEASUREMENTS,MEASUREMENTS 的功能与传统数据库中的表一致,因此我们也可以将 MEASUREMENTS 称为InfluxDB 中的表。

显示所有表

SHOW MEASUREMENTS

新建表

InfluxDB 中没有显式的新建表的语句,只能通过 insert 数据的方式来建立新表。

insert cpu,host=serverA,region=us_west value=0.64

其中 cpu 就是表名,host、region 是索引(tags),value=xx是记录值(fields),记录值可以有多个,系统自动追加时间戳

查询表数据

select * from cpu


执行 precision rfc3339 更换为国际时间,与北京时间相差8小时

删除表

drop measurement

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

influxDB是没有提供直接删除数据记录的方法,但是提供数据保存策略,主要用于指定数据保留时间,超过指定时间,就删除这部分数据。(设置类似于定期清理的语句)

保留策略语法

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

<retention_policy_name>:保留策略的名称(自定义)

<database_name>:为哪个数据库创建保留策略

<duration>:该保留策略对应的数据过期时间

REPLICATION:副本因子 SHARD DURATION:分片组的默认时长

[DEFAULT]:是否为默认策略

创建数据保留策略

CREATE RETENTION POLICY "influx_retention" ON "mydb" DURATION 30d REPLICATION 1 DEFAULT

influx_retention:策略名;

mydb:具体的数据库名;

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

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

default:设置为默认策略

查看保留期

SHOW RETENTION POLICIES ON mydb

修改保留期

ALTER RETENTION POLICY "influx_retention" ON mydb DURATION 15d


删除保留期

DROP RETENTION POLICY "influx_retention" ON mydb

4、用户操作

显示用户

show users



创建用户

  • 【普通用户】创建用户并设置密码

CREATE USER tom WITH PASSWORD '123'

  • 【管理员用户】

create user "tony" with password '123' with all privileges

修改用户密码

SET PASSWORD FOR tom = '123456'

删除用户

drop user admin

5、数据库访问权限

用户授权

授权用户数据库操作权限

GRANT ALL PRIVILEGES ON influxdb TO tom

赋予用户管理员权限

GRANT ALL PRIVILEGES TO tony

备注:只能使用admin权限才可以操作数据库

撤销授权

撤销用户数据库操作权限

Revoke ALL PRIVILEGES ON influxdb FROM tom

撤销用户管理员权限

Revoke ALL PRIVILEGES FROM tony

四、influxdb 开启用户登录认证

1、开启登录认证

在influxdb配置文件influxdb.conf中,开启用户登录认证,在http模块修改如下内容:

[root@client01 ~]# vim /etc/influxdb/influxdb.conf

 

[http] 

······ 

auth-enabled = true 

 

[root@client01 ~]# systemctl restart influxd # 修改完配置文件后需要重启 

# 在Windows 中 则可以 在任务管理器中 重新启动influxdb服务

修改用户权限时需要重新修改配置文件为 auth-enabled = false 才可进行操作

2、开启认证后无密码登录

普通用户无权限查看:

 

3、开启认证后有密码登录

得让有管理员权限的用户登录才有查看权限:

执行 influx -username tony -password 123 登录 influxdb

————————————————

版权声明:本文为CSDN博主「Stars.Sky」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_46560589/article/details/126002393