InfluxDB的安装和简介

InfluxDB简介

InfluxDB是一个时间序列数据库,旨在处理高写入和查询负载。它是TICK堆栈的组成部分 。InfluxDB旨在用作涉及大量带时间戳数据的任何用例的后备存储,包括DevOps监控,应用程序指标,物联网传感器数据和实时分析。

功能特点

  1. 基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等)
  2. 可度量性:你可以实时对大量数据进行计算
  3. 基于事件:它支持任意的事件数据基于事件:它支持任意的事件数据

主要特点

无结构(无模式):可以是任意数量的列
可拓展的
支持min, max, sum, count, mean, median 等一系列函数,方便统计支持min, max, sum, count, mean, median 等一系列函数,方便统计
原生的HTTP支持,内置HTTP API原生的HTTP支持,内置HTTP API
强大的类SQL语法强大的类SQL语法
自带管理界面,方便使用自带管理界面,方便使用

InfluxDB与传统数据库的比较

InfluxDB的名词 传统数据库的概念
database 数据库
measurement 数据库的表
points 表里的一行数据

InfluxDB的独特的特性
point
Point相当于传统数据库里的一行数据,如下表所示:

point属性 传统数据库中的概念
time(时间戳) 每个数据记录时间,是数据库中的主索引(会自动生成)
fields(字段、数据) 各种记录值(没有索引的属性)也就是记录的值:温度, 湿度
tags(标签) 各种有索引的属性:地区,海拔

注意

在influxdb中,字段必须存在。因为字段是没有索引的。如果使用字段作为查询条件,会扫描符合查询条件的所有字段值,性能不及tag。类比一下,fields相当于SQL的没有索引的列。
tags是可选的,但是强烈建议你用上它,因为tag是有索引的,tags相当于SQL中的有索引的列。tag value只能是string类型。
series
相当于是 InfluxDB 中一些数据的集合,在同一个 database 中,retention policy、measurement、tag sets 完全相同的数据同属于一个 series,同一个 series 的数据在物理上会按照时间顺序排列存储在一起。

> select * from students
name: students
time                score stuid value
----                ----- ----- -----
1542848518465067760 89    s123
1542850528630385278 79    s123
1542850533581732431 69    s123
1542850536266169940 39    s123
1542850676477097687 99    s123
1542874869654197110       s124  100
1542874898710687064       s125  60
> show series from students
key
---
students,stuid=s123
students,stuid=s124
students,stuid=s125

shard
shard 和 retention policy 相关联。每一个存储策略下会存在许多 shard,每一个 shard 存储一个指定时间段内的数据,并且不重复;
例如 7点-8点 的数据落入 shard0 中,8点-9点的数据则落入 shard1 中。
每一个 shard 都对应一个底层的 tsm 存储引擎,有独立的 cache、wal、tsm file。

组件
TSM 存储引擎主要由几个部分组成: cache、wal、tsm file、compactor。

Cache:cache 相当于是 LSM Tree 中的 memtabl。插入数据时,实际上是同时往 cache 与 wal 中写入数据,可以认为 cache 是 wal 文件中的数据在内存中的缓存。当 InfluxDB 启动时,会遍历所有的 wal 文件,重新构造 cache,这样即使系统出现故障,也不会导致数据的丢失。
cache 中的数据并不是无限增长的,有一个 maxSize 参数用于控制当 cache 中的数据占用多少内存后就会将数据写入 tsm 文件。如果不配置的话,默认上限为 25MB,每当 cache 中的数据达到阀值后,会将当前的 cache 进行一次快照,之后清空当前 cache 中的内容,再创建一个新的 wal 文件用于写入,剩下的 wal 文件最后会被删除,快照中的数据会经过排序写入一个新的 tsm 文件中。

WAL:wal 文件的内容与内存中的 cache 相同,其作用就是为了持久化数据,当系统崩溃后可以通过 wal 文件恢复还没有写入到 tsm 文件中的数据。
TSM File:单个 tsm file 大小最大为 2GB,用于存放数据。
Compactor:compactor 组件在后台持续运行,每隔 1 秒会检查一次是否有需要压缩合并的数据。
主要进行两种操作
一种是 cache 中的数据大小达到阀值后,进行快照,之后转存到一个新的 tsm 文件中。
另外一种就是合并当前的 tsm 文件,将多个小的 tsm 文件合并成一个,使每一个文件尽量达到单个文件的最大大小,减少文件的数量,并且一些数据的删除操作也是在这个时候完成。

安装

环境: CentOS7.0_x64
InfluxDB版本:1.7.0

基础环境

yum install go

InfluxDB的安装

wget  https://dl.influxdata.com/influxdb/releases/influxdb-1.7.0.x86_64.rpm
rpm -ivh influxdb-1.2.0.x86_64.rpm

安装后产生的InfluxDB相关文件讲解
/usr/bin下文件

文件名  文件解析
influxd influxdb服务器
influx influxdb 命令行客户端
influx_inspect  查看工具
influx_stress  压力测试工具
influx_tsm  数据库转换工具(将数据库从b1或bz1格式转换为tsm1格式)

/var/lib/influxdb下文件夹(建完表和库的时候才会有)
文件夹 文件夹解析
data 存放最终存储的数据,文件以**.tsm**结尾
meta 存放数据库元数据
wal 存放预写日志文件
/etc/influxdb下文件
文件 文件解析
influxdb.conf influxdb数据库配置文件

启动服务
操作服务的相关命令

服务式启动命令
service influxdb start

服务式的其他命令
停止服务
service influxdb stop

重启服务
service influxdb restart

尝试重启服务
service influxdb try-restart

重新加载服务
service influxdb reload

强制重新加载服务
service influxdb force-reload

查看服务状态
service influxdb status

 以非服务方式启动

 cd /usr/bin;./influxd

服务启动查看是否正常
  • 通过查看服务对应进程

InfluxDB默认使用以下网络端口:

  • TCP端口8086用于通过InfluxDB的HTTP API进行客户端 - 服务器通信
  • TCP端口8088用于RPC服务以进行备份和还原

除了上面的端口,InfluxDB还提供了多个可能需要自定义端口的插件。可以通过配置文件修改所有端口映射,配置文件位于/etc/influxdb/influxdb.conf默认安装位置。

InfluxDB 客户端命令行方式操作

  • InfluxDB数据库操作
客户端命令行方式操作
[[email protected] influxdb]# influx
Connected to http://localhost:8086 version 1.7.0
InfluxDB shell version: 1.7.0
Enter an InfluxQL query
>

显示数据库
> show databases
name: databases
name
----
_internal

新建数据库
> create database testdb
> show databases
name: databases
name
----
_internal
testdb

删除数据库
> drop database testdb
> show databases
name: databases
name
----
_internal

使用数据库

> create database testdb
> use testdb
Using database testdb

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

显示所有表
show measurement

新建表
InfluxDB中没有显示的创建表的语句,只能通过insert数据的房还是来建立新表。
其中 disk_free 就是表名,hostname 是索引(tag),value=xx 是记录值(field),记录值可以有多个,系统自带追加时间戳。

> insert disk_free,hostname=server01 value=442221834240i
> select * from disk_free
name: disk_free
time                hostname value
----                -------- -----
1435362189575692180 server01 442221834240

或者添加数据时,自己写入时间戳(写入相同时间戳、相同tags,对原有数据进行update操作)

> insert disk_free,hostname=server01 value=442221834240i 1435362189575692182
> select * from disk_free
name: disk_free
time                hostname value
----                -------- -----
1435362189575692180 server01 442221834240
1435362189575692182 server01 442221834240

删除表

> drop measurement disk_free

数据保存策略(Retention Policies)
InfluxDB 是没有提供直接删除数据记录的方法,但是提供数据保存策略,主要用于指定数据保留时间,超过指定时间,就删除这部分数据。

查看当前数据库Retention Policies

name:名称,此示例名称为 default。
duration:持续时间,0代表无限制。
shardGroupDuration:shardGroup的存储时间,shardGroup是InfluxDB的一个基本储存结构,应该大于这个时间的数据在查询效率上应该有所降低。
replicaN:全称是replication,副本个数。
default:是否是默认策略。

> show retention policies on testdb
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        true

创建新的Retention Policies

rp_name:策略名。
db_name:具体的数据库名。
3w:保存3周,3周之前的数据将被删除,influxdb 具备各种事件参数,持续时间必须至少为1小时;比如:h(小时)、d(天)、w(星期)。
replication 1:副本个数,一般为1即可。
default:设置为默认策略。

create retention policy "rp_name" on "db_name" duration 3w replication 1 default
修改Retention Policies
alter retention policy "rp_name" on "db_name" duration 30d default

删除Retention Policies
drop retention policy "rp_name" on "db_name"

连续查询(Continuous Queries)
InfluxDB 的连续查询是在数据库中自动定时启动的一组语句,语句中必须包含 select 关键字 和 group by time() 关键字。
InfluxDB 会将查询结果放在指定的数据表中。
目的:使用连续查询是最优的降低采样率的方式,连续查询和存储策略搭配使用将会大大降低 InfluxDB 的系统占用量。而且使用连续查询后,数据会存放到指定的数据表中,这样就为以后统计不同精度的数据提供了方便。

新建连续查询

CREATE CONTINUOUS QUERY <cq_name> ON <database_name>
[RESAMPLE [EVERY <interval>] [FOR <interval>]]
BEGIN SELECT <function>(<stuff>)[,<function>(<stuff>)] INTO <different_measurement>
FROM <current_measurement> [WHERE <stuff>] GROUP BY time(<interval>)[,<stuff>]
END

样例

CREATE CONTINUOUS QUERY wj_30m ON testdb BEGIN SELECT mean(connected_clients), MEDIAN(connected_clients), MAX(connected_clients), MIN(connected_clients) INTO redis_clients_30m FROM redis_clients GROUP BY ip,port,time(30m) END

在 testdb 库中新建了一个名为 wj_30m 的连续查询,每三十分钟取一个 connected_clients 字段的平均值、中位值、最大值、最小值 redis_clients_30m 表中。使用的数据保留策略都是default。
不同 database 样例:

CREATE CONTINUOUS QUERY wj_30m ON testdb_30 BEGIN SELECT mean(connected_clients), MEDIAN(connected_clients), MAX(connected_clients), MIN(connected_clients) INTO testdb_30.autogen.redis_clients_30m FROM testdb.autogen.redis_clients GROUP BY ip,port,time(30m) END
显示所有已存在的连续查询
show continuous queries

删除Continuous Queries
drop continuous query <cq_name> on <database_name>

原文地址:https://www.cnblogs.com/yinfutao/p/11618887.html

时间: 2024-10-03 10:16:01

InfluxDB的安装和简介的相关文章

InfluxDB学习之InfluxDB的安装和简介

最近用到了 InfluxDB,在此记录下学习过程,同时也希望能够帮助到其他学习的同学. 本文主要介绍InfluxDB的功能特点以及influxDB的安装过程.更多InfluxDB详细教程请看:InfluxDB系列学习教程目录 一.InfluxDB 简介 InfluxDB 是用Go语言编写的一个开源分布式时序.事件和指标数据库,无需外部依赖. 类似的数据库有Elasticsearch.Graphite等. 其主要特色功能 1)基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等) 2)可度

InfluxDB(一)简介,安装及基础使用

1.官网地址:https://portal.influxdata.com/downloads/#influxdb 2.相关软件介绍 (1)telegraf 一个用Go语言编写的代理程序,可收集系统和服务的统计数据,并写入到influxdb数据库,内存占用小,通过插件系统可轻松添加支持其他服务的扩展. (2)InfluxDB是一个开源的分布式时序.时间和指标数据库,使用GO语言编写,无需外部依赖,特性: a.给予时间序列,支持与时间有关的相关函数 b.可度量性,可以实时对大量数据进行计算 c.基于

DBA_VMware虚拟机安装和简介(案例)

DBA_VMware虚拟机安装和简介(案例)

第四阶段 01_Linux安装与简介

Linux的安装与简介 一:虚拟机安装 (1)虚拟机简介: 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统. 虚拟系统通过生成现有操作系统的全新虚拟镜像,它具有真实windows系统完全一样的功能,进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,拥有自己的独立桌面,不会对真正的系统产生任何影响 ,而且具有能够在现有系统与虚拟镜像之间 灵活切换的一类操作系统.虚拟系统和传统的虚

[docker] 02 CentOS安装docker(包含失败),安装命令简介,以及docker核心概念

主要内容: 一.安装docker(包含卸载重新安装) 二.配置docker服务 三.安装命令简介 四.docker核心概念 一.安装docker 1.1. 通过uname -r查看系统版本,为什么要查看系统版本呢?因为docker对CentOS有以下要求: a. CentOS 7及以后的版本 b. 64位操作系统 c. 内核版本至少3.10 1.2. 支持devicemapper存储类型 sudo yum update sudo yum install -y device-mapper-pers

[Go] 时序数据库influxdb的安装

日志类的数据时候存储在时序数据库中,下面就是时序数据库influxdb的安装 curl -sL https://repos.influxdata.com/influxdb.key | apt-key add -source /etc/lsb-releaseecho "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | tee /etc/apt/sources.list.d/infl

(一)Activiti之——安装及简介

0. 安装 推荐在线安装: help——>Install New Software...——> Name: Activiti BPMN 2.0 designer Location: http://activiti.org/designer/update/ 但由于某些wall的原因,有时候往往连接不上,这时还是建议你那个一下的,软件那么多... 注意:安装之后要勾选save选项 1. 工作流概念 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“

Firebug折腾记_(1)安装及简介

简介 Firebug是Firefox下一款知名的插件,目前稳定版本是2.X,alpha版本是3.X(装了.完全看不懂–适用于FF44+,也就是测试版本); 功能主要用于调试网页中的错误,修改代码及实时查看效果; 目前只有在Firefox下的firebug才能体验它的强大支出,,对于其他浏览器,lite版本功能阉割太多; 但是吧,就其他浏览器而言,chrome自带的已经足够强大,IE11自带的也挺不错的-. 获取及安装 Firebug官网 Firefox选项中的附加组件 打开方式 F12可以打开工

阿里 RocketMQ 安装与简介

一.简介 官方简介: l  RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: l  能够保证严格的消息顺序 l  提供丰富的消息拉取模式 l  高效的订阅者水平扩展能力 l  实时的消息订阅机制 l  亿级消息堆积能力 二.网络架构 三.特性 1.      nameserver 相对来说,nameserver的稳定性非常高.原因有二: 1 .nameserver互相独立,彼此没有通信关系,单台nameserver挂掉,不影响其他nameserver,即使全部挂掉,也不影响业务