influx时序数据库

influx时序数据库

 

InfluxDB简介:

  1. InfluxDB 是一个开源分布式时序、事件和指标数据库。使用Go语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。 它有三大特性:

    1. Time Series (时间序列):你可以使用与时间有关的相关函数(如最大,最小,求和等);

    2. Metrics(度量):你可以实时对大量数据进行计算;

    3. Eevents(事件):它支持任意的事件数据。

      官网:https://influxdata.com/

登录

 influx -port 8086

目录结构

Linux版本的数据文件位于/var/lib/influxdb/,Windows位于C:/用户/.influxd/下。主要有三个目录,分别是 meta, wal 以及 data 。meta 用于存储数据库的一些元数据,meta.db 文件。wal 目录存放预写日志文件,以 .wal 结尾。data 目录存放实际存储的数据文件,以 .tsm 结尾。整体结构如下所示:

 influxdb/
  ├── data/
  |   └── [DB name]/
  |       └── [retention policy]/
  |       |   └── [shard group id]/
  |       |       ├── 000000001-0000000001.tsm
  |       |       └── fields.idx
  |       |   └── index/
  |       |     └── 0/
  |       |         └── L0-000001.tsl
  |       |         └── MANIFEST
  |       |     └── .../
  |       |     └── 7/
  |       └── _series
  |           └──0/
  |             └──0000
  |           └──.../
  |           └──7/
  ├── meta/
  |   └── meta.db
  └── wal/
      └── [DB Name]/
          └── [retention policy]/
              └── [shard group id]/
                  └── _00001.wal
 

常用命令

 -- 查看所有的数据库
 show databases;
 -- 使用特定的数据库
 use database_name;
 -- 查看所有的measurement
 show measurements;
 -- 查询10条数据
 select * from measurement_name limit 10;
 -- 数据中的时间字段默认显示的是一个纳秒时间戳,改成可读格式
 precision rfc3339; -- 之后再查询,时间就是rfc3339标准格式
 -- 或可以在连接数据库的时候,直接带该参数
 influx -precision rfc3339
 -- 查看一个measurement中所有的tag key
 show tag keys
 -- 查看一个measurement中所有的field key
 show field keys
 -- 查看一个measurement中所有的保存策略(可以有多个,一个标识为default)
 show retention policies;

 

InfluxDB数据保留策略(Retention Policies)

一、InfluxDB 数据保留策略 说明

InfluxDB的数据保留策略(RP) 用来定义数据在InfluxDB中存放的时间,或者定义保存某个期间的数据。

一个数据库可以有多个保留策略,但每个策略必须是独一无二的。

二、InfluxDB 数据保留策略 目的

InfluxDB本身不提供数据的删除操作,因此用来控制数据量的方式就是定义数据保留策略。

因此定义数据保留策略的目的是让InfluxDB能够知道可以丢弃哪些数据,从而更高效的处理数据。

三、InfluxDB 数据保留策略 操作

1)查询策略

可以通过如下语句查看数据库的现有策略:

 > SHOW RETENTION POLICIES ON jmeter
 name             duration shardGroupDuration replicaN default
 ----              --------  ------------------ -------- -------
 autogen           4800h0m0s 168h0m0s           1        true
 strategy_20200117 4320h0m0s 168h0m0s           1        false

可以看到,jmeter有两个策略,各字段的含义如下:

name--策略名称

duration--持续时间,0s代表无限制

shardGroupDuration--shardGroup的存储时间,shardGroup是InfluxDB的一个基本储存结构,应该大于这个时间的数据在查询效率上应该有所降低。

replicaN--全称是REPLICATION,副本个数

default--是否是默认策略

2)新建策略

 > CREATE RETENTION POLICY "2_hours" ON "telegraf" DURATION 2h REPLICATION 1 DEFAULT
 > SHOW RETENTION POLICIES ON telegraf
 name   duration   shardGroupDuration   replicaN   default
 default   0       168h0m0s       1       false
 2_hours   2h0m0s       1h0m0s           1       true

通过上面的语句可以添加策略,本例在 telegraf 库添加了一个2小时的策略,名字叫做 2_hours, duration为2小时,副本为1,设置为默认策略。

因为名为default的策略不再是默认策略,因此,在查询使用default策略的表时要显式的加上策略名 “default”。

复制代码

 > select * from "default".cpu limit 2
 name: cpu
 ---------
 time           cpu       host               host_id   usage_guest   usage_guest_nice   usage_idle   usage_iowait       usage_irq   usage_nice       usage_softirq   usage_steal   usage_system       usage_user
 1467884670000000000   cpu-total   ResourcePool-0246-billing07       0       0           99.79994164175388   0           0       0.06251823446523729   0       0       0.12920435125646068   0.008335764603451727
 1467884670000000000   cpu9       billing07               0       0           97.79338014069532   1.8054162487519367   0       0           0       0       0.10030090272883943   0.3009027081135398

复制代码

 

3)修改策略

修改策略使用如下语句修改

 > ALTER RETENTION POLICY "2_hours" ON "telegraf" DURATION 4h DEFAULT
 > show retention POLICIES on telegraf
 name   duration   shardGroupDuration   replicaN   default
 default   0       168h0m0s       1       false
 2_hours   4h0m0s       1h0m0s           1       true

可以看到,修改后的策略发生了变化。

4)删除策略

InfluxDB中策略的删除操作如下所示:

 > drop retention POLICY "2_hours" ON "telegraf"
 > show retention POLICIES on telegraf
 name   duration   shardGroupDuration   replicaN   default
 default   0       168h0m0s       1       false

 

可以看到,名为2_hours的策略已经被删除了。

四、其他说明

策略这个关键词“POLICY”在使用是应该大写,小写应该会出错。

当一个表使用的策略不是默认策略时,在进行操作时一定要显式的指定策略名称,否则会出现错误。

 

https://www.cnblogs.com/byron-123/p/10432241.html

原文地址:https://www.cnblogs.com/Oxyy/p/14692029.html