InfluxDB 简介、安装和简单使用

简介

InfluxDB是一个由InfluxData开发的开源时序型数据库。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。可以理解为按时间记录一些数据(常用的监控数据、埋点统计数据等),然后做统计
  • 与传统数据库的概念对比
influxDB中的名词传统数据库中的概念
database数据库
measurement数据库中的表
points表中的一行数据
  • Point

    Point由时间戳(time)、数据(field)、标签(tags)组成。
    
Point属性传统数据库中的概念
time每个数据记录时间,是数据库中的主索引(会自动生成)
field各种记录值(没有索引的属性)
tags各种有索引的属性
  • Series

    Series 相当于是 InfluxDB 中一些数据的集合。
    在同一个 database 中,retention policy、measurement、tag sets 完全相同的数据同属于一个 series。
    同一个 series 的数据在物理上会按照时间顺序排列存储在一起。
    
  • 组件

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

    cache 相当于是 LSM Tree 中的 memtabl。插入数据时,实际上是同时往 cache 与 wal 中写入数据,可以认为 cache 是 wal 文件中数据在内存中的缓存。当 InfluxDB 启动时,会遍历所有的 wal 文件,重新构造 cache,这样即使系统出现故障,也不会导致数据的丢失。

    cache 中的数据并不是无限增长的,有一个 maxSize 参数(默认为 25MB)用于控制当 cache 中的数据占用多少内存后就会将数据写入 tsm 文件。每当 cache 中的数据达到阀值后,会将当前的 cache 进行一次快照,之后清空当前 cache 中的内容,再创建一个新的 wal 文件用于写入,剩下的 wal 文件最后会被删除,快照中的数据会经过排序写入一个新的 tsm 文件中。

  2. WAL

    wal 文件的内容与内存中的 cache 相同,其作用就是为了持久化数据,当系统崩溃后可以通过 wal 文件恢复还没有写入到 tsm 文件中的数据。

  3. TSM File

    单个 tsm file 大小最大为 2GB,用于存放数据。

  4. Compactor

    compactor 组件在后台持续运行,每隔 1 秒会检查一次是否有需要压缩合并的数据。

    主要进行两种操作,一种是 cache 中的数据大小达到阀值后,进行快照,之后转存到一个新的 tsm 文件中。

    另外一种就是合并当前的 tsm 文件,将多个小的 tsm 文件合并成一个,使每一个文件尽量达到单个文件的最大大小,减少文件的数量,并且一些数据的删除操作也是在这个时候完成。

  • 目录与文件结构

    InfluxDB 的数据存储主要有三个目录。默认情况下是 meta, wal 以及 data。

    meta 用于存储数据库的一些元数据,meta 目录下有一个 meta.db 文件。

    wal 目录存放预写日志文件。

    data 目录存放实际存储的数据文件。

安装及配置

  • 环境

    ubuntu 20.04

  • 安装

    sudo apt install influxdb

    sudo apt install influxdb-client

  • 查看状态、启动、关闭

    // 查看状态 q退出 / 启动 / 关闭 / 重启
    sudo service influxdb status / start / stop / restart

    以服务方式启动 sudo service influxdb start

    以非服务方式启动 sudo influxd

  • 查看配置文件

    influxd config

    在这里插入图片描述

influxdb默认使用内存索引,所以在使用过程中内存占用会越来越大,并且导致查询越来越慢
修改为tsi 磁盘索引: index-version="tsi1"

在这里插入图片描述
官方详细配置文件

  • 进入命令行客户端
influxinflux -precision rfc3339  (数据显示时间而非时间戳)

简单使用

  • 数据库与表的操作
# 查询所有数据库
show databases# 创建数据库
create database testDb;
# 删除数据库
drop database testDb;
# 选择数据库
use testDb1;# 查看该数据库下的全部表
show measurements;# 创建表,直接在插入数据的时候指定表名
insert test,host=127.0.0.1,monitor_name=test count=1
# 删除表
drop measurement "test"
  • 增查
# 增
insert test,host=127.0.0.1,monitor_name=test count=1表名:test
tag :(只能为字符串类型)host=127.0.0.1,monitor_name=test
field :(类型无限制)count=1# 查
select * from test order by time desc
  • 数据保存策略(Retention Policies)
# InfluxDB本身不提供数据的删除操作,因此用来控制数据量的方式就是定义数据保留策略。
# 查看当前数据库 Retention Policies
show retention policies on "db_name"

在这里插入图片描述

# name--名称,此示例名称为 autogen
# duration--持续时间,0代表无限制
# shardGroupDuration--shardGroup的存储时间,shardGroup是InfluxDB的一个基本储存结构,应该大于这个时间的数据在查询效率上应该有所降低。
# replicaN--全称是REPLICATION,副本个数
# default--是否是默认策略# 创建新的Retention Policies
create retention policy "rp_name" on "db_name" duration 3w replication 1 default# rp_name:策略名;
# db_name:具体的数据库名;
# 3w:保存3周,3周之前的数据将被删除,influxdb具有各种事件参数,比如:h(小时),d(天),w(星期);
# replication 1:副本个数,一般为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"注:
# 策略这个关键词“POLICY”在使用时应该大写,小写会出粗。
# 当一个表使用的策略不是默认策略时,在进行操作时一定要显式的指定策略名称,否则会出现错误。
  • 连续查询(Continuous Queries)
# 当数据超过保存策略里指定的时间之后就会被删除,但是这时候可能并不想数据被完全删掉,怎么办?
# influxdb提供了连续查询,可以做数据统计采样。
# InfluxDB的连续查询是在数据库中自动定时启动的一组语句,语句中必须包含 SELECT 关键词和 GROUP BY time() 关键词。
# 查看数据库的Continous Queries
show continuous queries# 创建新的Continous Queries
create continous query cq_name on db_name begin select sum(count) into new_table_name from table_name group by time(30m) end# cq_name:连续查询名
# group by time(30m) 每三十分钟取一个 sum(count)
# InfluxDB会将查询结果放在指定的数据表中:new_table_name# 删除Continous Queries
drop continous query cp_name on db_name

添加用户认证

  • 首先创建一个admin用户
# 显示用户
SHOW USERS# 创建用户
CREATE USER "username" WITH PASSWORD 'password'# 创建管理员权限的用户
CREATE USER "username" WITH PASSWORD 'password' WITH ALL PRIVILEGES# 修改用户(密码) 
SET PASSWORD FOR "username" = 'new_password'# 删除用户
DROP USER "username"
  • 默认情况下,认证在配置文件是禁用的

    需要在配置文件里把 [http] 下的 auth-enabled 选项设置为 true 。
    在这里插入图片描述

  • 重启 influxd

    进入influx : influx -username username -password password

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4)机器学习基石笔记 Lecture4:Feasibility of Learning

目录 1)Learning is Impossible 2)Probability to the Rescue 3)Connection to Learning 4)Connection to Real Learning 上节课我们主要介绍了机器学习问题的类型,主要是二元分类和回归问题。本节课,我…

Java注解全面解析

1.基本语法 注解定义看起来很像接口的定义。事实上,与其他任何接口一样,注解也将会编译成class文件。 Target(ElementType.Method)Retention(RetentionPolicy.RUNTIME)public interface Test {} 除了符号以外,Test的定义很像一个空的接口。…

ubuntu18.04下安装grafana6和简单使用

ubuntu18.04下安装grafana6 环境 ubuntu18.04 下载 sudo apt-get install -y adduser libfontconfig1 # 使用wget 下载会很慢 # 推荐百度网盘:链接:https://pan.baidu.com/s/1y2I4LwuslB5kHAZwV8RNxw 提取码:o19t # 或者csdn:[gr…

VMware虚拟机下安装Ubuntu16.04镜像完整教程

目录 1)安装前准备 2)安装Ubuntu 16.04镜像 3)One More Thing 1)安装前准备 PC电脑操作系统是WIN7,已正确安装虚拟机VMware 12。 2)安装Ubuntu 16.04镜像 下载Ubuntu镜像文件,下载链接为…

JAVA 注解的基本原理

以前,『XML』是各大框架的青睐者,它以松耦合的方式完成了框架中几乎所有的配置,但是随着项目越来越庞大,『XML』的内容也越来越复杂,维护成本变高。 于是就有人提出来一种标记式高耦合的配置方式,『注解』…

查看ubuntu系统的版本信息

目录 1)查看linux内核、gcc版本、ubuntu版本 2)显示linux的内核版本和系统是多少位 1)查看linux内核、gcc版本、ubuntu版本 显示如下 Linux version 4.15.0-29-generic (builddlcy01-amd64-024) linux内核版本号 gcc version 5.4…

框架基础——全面解析Java注解

阅读目录 一、概念二、Java中的常见注解三、注解的分类四、自定义注解五、注解的项目实战六、注解总结 为什么学习注解? 学习注解有什么好处? 学完能做什么? 答:1. 能够读懂别人写的代码,特别是框架相关的代码&…

CS231n Convolutional Neural Networks for Visual Recognition------Scipy and MatplotlibTutorial

源链接为:http://cs231n.github.io/python-numpy-tutorial/。 这篇指导书是由Justin Johnson编写的。 在这门课程中我们将使用Python语言完成所有变成任务!Python本身就是一种很棒的通用编程语言,但是在一些流行的库帮助下(numpy&…

Python之Numpy入门实战教程(1):基础篇

Numpy、Pandas、Matplotlib是Python的三个重要科学计算库,今天整理了Numpy的入门实战教程。NumPy是使用Python进行科学计算的基础库。 NumPy以强大的N维数组对象为中心,它还包含有用的线性代数,傅里叶变换和随机数函数。 强烈建议大家将本文中…

Go初识与问题

变量&常量 变量 命名 由字母、数字、下划线组成,首个字符不能是数字关键字、保留字不能作为变量名变量名字区分大小写驼峰命名声明 1. var : 全局变量var 变量名称 类型var 变量名称1,变量名称2 类型 (同一种类型)var (变量名称1 类型1变量名称2 类型…

1.3)深度学习笔记------浅层神经网络

目录 1)Neural Network Overview 2)Neural Network Representation 3)Computing a Neural Network’s Output(重点) 4)Vectorizing across multiple examples 5)Activation functions 6&a…

SpringMVC 的执行流程

SpringMVC 的执行流程 1)用户向服务器发送请求,请求被 Spring 前端控制 Servelt DispatcherServlet捕获; 2)DispatcherServlet 对请求 URL 进行解析,得到请求资源标识符(URI)。然后根据该 URI&…

kafka初识

kafka中文文档 本文环境:ubuntu:18.04 kafka安装、配置与基本使用(单节点) 安装kafka 下载 0.10.0.1版本并解压缩 > tar -xzf kafka_2.11-0.10.0.1.tgz > cd kafka_2.11-0.10.0.1.tgzkafka简单配置 > vi config/server.properties主要注意三个地方&a…

1.4)深度学习笔记------深层神经网络

目录 1)Deep L-layer neural network 2)Forward Propagation in a Deep Network(重点) 3)Getting your matrix dimensions right 4)Building blocks of deep neural networks 5)Forward and Backward Propagation…

Struts1工作原理

Struts1工作原理图 1、初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象。(面…

【洛谷 - P1772 】[ZJOI2006]物流运输(dp)

题干: 题目描述 物流公司要把一批货物从码头A运到码头B。由于货物量比较大,需要n天才能运完。货物运输过程中一般要转停好几个码头。物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪。由于各种因素的存在&am…

RabbitMQ初识

官方介绍 - 中文 本文环境:ubuntu:20.04 RabbitMQ安装、配置与基本使用 安装RabbitMQ # 简易脚本安装 curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.deb.sh | sudo bash sudo apt-get install rabbitmq-server -y --f…

Apollo进阶课程 ⑦ | 高精地图的采集与生产

目录 1.高精地图采集过程中需要用到的传感器 1.1)GPS 1.2)IMU 1.3)轮速计 2.高精地图采集过程中的制图方案 2.1)方案一 激光雷达 2.2)Camera融合激光雷达 原文链接:Apollo进阶课程 ⑦ | 高精地图的采…

你看不懂的spring原理是因为不知道这几个概念

背景 问题从一杯咖啡开始。 今天我去楼下咖啡机买了一杯「粉黛拿铁」。制作过程中显示: 我取了做好的粉黛拿铁,喝了一口,果然就是一杯热巧克力。咦咦咦,说好的拿铁呢?虽然我对「零点吧」的咖啡评价很高,觉…

EasyOcr 安装(linux、docker)、使用(gin、python)

EasyOcr git地址 EasyOCR是一款用python语言编写的OCR第三方库,同时支持GPU和CPU,目前已经支持超过70种语言. 安装(CPU) 注意: 本文是在仅在cpu下使用。如要使用CUDA版本,请在pytorch网站上选择正确的,并关闭此文章。…