简介

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

InfluxDB 简介、安装和简单使用相关推荐

  1. linux查找influx的安装位置,InfluxDB学习之InfluxDB的安装和简介 | Linux大学

    最近用到了 InfluxDB,在此记录下学习过程,同时也希望能够帮助到其他学习的同学. 本文主要介绍InfluxDB的功能特点以及influxDB的安装过程.更多InfluxDB详细教程请看:Infl ...

  2. InfluxDB学习之InfluxDB的安装和简介

    系列详情请看:<InfluxDB系列教程>: InfluxDB是一个当下比较流行的时序数据库,InfluxDB使用 Go 语言编写,无需外部依赖,安装配置非常方便,适合构建大型分布式系统的 ...

  3. Cobaltstrike简介、安装及简单使用

    Cobaltstrike简介.安装及简单使用 工具分享: 工具介绍 组成 运行环境: 系统要求: 工具安装 Windows客户端的安装 LINUX服务端安装: 参数详情 Cobalt Strik Vi ...

  4. 1.InfluxDB简介与安装

    InfluxDB简介 InfluxDB是一个时序性数据库,适用场景数据分析,IoT设备数据采集,监控告警等.InfluxDB是采用GO语言编写,底层提供了大量的HTTP协议的API 其他语言的SDK都 ...

  5. docker-compose的安装与简单使用

    docker-compose的安装与简单使用 docker-compose简介 屁话不这么多,直接开干 docker-compose安装步骤 由于docker-compose托管在github上面,所 ...

  6. anaconda的python使用教程-Python,Anaconda简介安装使用教程

    ① 首先,自己也是闲来无趣刚刚开始接触Python这门语言,收集了一些关于一些初级的学前准备资料仅供大家参考 Python简介: Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚 ...

  7. 【Redis】三、Redis安装及简单示例

    (四)Redis安装及使用   Redis的安装比较简单,仍然和大多数的Apache开源软件一样,只需要下载,解压,配置环境变量即可.具体安装过程参考:菜鸟教程Redis安装.   安装完成后,通过r ...

  8. InfluxDB简介,InfluxDB的基本操作

    一.InfluxDB 简介 InfluxDB 是用Go语言编写的一个开源分布式时序.事件和指标数据库,无需外部依赖. 类似的数据库有Elasticsearch.Graphite等. 其主要特色功能 1 ...

  9. Anaconda安装及简单使用

    Anaconda安装及简单使用 Anaconda简介 Anaconda下载 Anaconda 安装 Anaconda的基本认识 Anaconda创建新的虚拟环境 Anaconda安装第三方lib 以下 ...

  10. 知识笔记 - sekiro RPC框架的安装与简单使用

    文章旨在学习和记录,若有侵权,请联系删除 文章目录 前言 一.sekiro是什么 1. 简介 2. 逻辑结构 3. 运行流程 4. 下载和部署 二.如何开发sekiro客户端 1.打开平头哥项目 2. ...

最新文章

  1. or函数python_Python numpy.bitwise_or函数方法的使用
  2. 全面剖析支付宝服务窗功能二次开发
  3. NgRx Store里的StoreModule.forRoot()
  4. extjs设计器破解程序及开发调试工具
  5. XP停止服务,共建网络安全大环境
  6. 用httpPost对JSON发送和接收的例子
  7. 自研ARM芯片,亲手拆掉Wintel联盟,微软这次是认真的吗?
  8. 《大连金州没有眼泪》
  9. 苹果系统服务器状态,苹果开发者中心app显示黄色状态详情介绍
  10. 云中「秘密」:构建非交互式零知识证明---探索零知识证明系列(五)
  11. 升到初二后成绩“一落千丈”?你家孩子也有这个困扰么?
  12. zynq petalinux编译系统启动文件实战应用
  13. Kafka Shell Lag
  14. STM32F407的USART
  15. 钉钉桌面版(dingtalk)介绍:支持Linux、Windows和macOS平台
  16. Hamming distance - 汉明距离
  17. 鲜花绿植学生网页设计模板 静态HTML鲜花学生网页作业成品 DIV CSS网上鲜花植物主题静态网页
  18. 大二JavaWeb课程设计——图书管理系统
  19. C# SolidWorks 二次开发 API---获取所有特征名称思路2
  20. 铺地砖问题 java

热门文章

  1. linux c 读取摄像头,Linux下onvif客户端获取ipc摄像头 获取能力:GetCapabilities
  2. 小说中人称转换作用_长篇儿童小说《合欢》:一树红绒落马缨
  3. new 3ds右摇杆测试软件,电击杂志编辑新3DS评测:防抖3D效果拔群!
  4. cadence导入dxf文件_Allegro中如何导入DXF文件
  5. 拆包--缓冲区查找包头及包尾偏移
  6. 通州区机器人比赛活动总结_马驹桥镇中心小学在2017通州区青少年机器人竞赛中勇创佳绩...
  7. 电压源和电流的关联参考方向_结点电压法解题系列之四:电流源支路
  8. 中职计算机属于专业课还是文化课,对中职计算机专业建设探讨.doc
  9. arcgis已知两点投影坐标求距离
  10. arcgis快速创建斜坡单元剖面线