温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

InfluxDB的安装及基本使用方法

发布时间:2021-07-05 17:37:02 来源:亿速云 阅读:299 作者:chen 栏目:大数据

本篇内容主要讲解“InfluxDB的安装及基本使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“InfluxDB的安装及基本使用方法”吧!

InfluxDB的简介

InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。

功能特点

  • 基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等)

  • 可度量性:你可以实时对大量数据进行计算

  • 基于事件:它支持任意的事件数据基于事件:它支持任意的事件数据

注:自带管理界面在1.2版之后,将不再提供。

oint属性 传统数据库中的概念 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 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 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 1 InfluxDB的安装 wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.0.x86_64.rpm rpm -ivh influxdb-1.2.0.x86_64.rpm 1 2 安装后产生的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数据库配置文件 配置文件参数详解:InfluxDB influxdbc.conf配置文件详解

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

service influxdb start 1 服务式的其他命令 停止服务 service influxdb stop 1 重启服务 service influxdb restart 1 尝试重启服务 service influxdb try-restart 1 重新加载服务 service influxdb reload 1 强制重新加载服务 service influxdb force-reload 1 查看服务状态 service influxdb status 1 以非服务方式启动

cd /usr/bin ./influxd 1 2 服务启动查看是否正常 通过查看服务对应进程

[root@localhost influxdb]# ps aux | grep influx influxdb 7293 0.3 2.4 635640 46516 ? Ssl 18:43 0:01 /usr/bin/influxd -config /etc/influxdb/influxdb.conf root 7412 0.0 0.0 112656 964 pts/0 S+ 18:49 0:00 grep --color=auto influx 1 2 3 通过service influxdb status命令,查看服务状态

[root@localhost influxdb]# service influxdb status Redirecting to /bin/systemctl status influxdb.service ● influxdb.service - InfluxDB is an open-source, distributed, time series database Loaded: loaded (/usr/lib/systemd/system/influxdb.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2018-11-21 18:43:06 PST; 1h 1min ago Docs: https://docs.influxdata.com/influxdb/ Main PID: 7293 (influxd) CGroup: /system.slice/influxdb.service └─7293 /usr/bin/influxd -config /etc/influxdb/influxdb.conf

Nov 21 19:32:48 localhost.localdomain influxd[7293]: [httpd] ::1 - - [21/Nov/2018:19:32:48 -0800] "POST /query?chunked=true&db=&epoch=ns&q=usr+testdn HTTP/1.1" 400 148 "-" "InfluxDBS...29d6319a 172 Nov 21 19:32:50 localhost.localdomain influxd[7293]: [httpd] ::1 - - [21/Nov/2018:19:32:50 -0800] "POST /query?chunked=true&db=&epoch=ns&q=usr+testdb HTTP/1.1" 400 148 "-" "InfluxDBS...29d6319a 119 Nov 21 19:33:00 localhost.localdomain influxd[7293]: ts=2018-11-22T03:33:00.628996Z lvl=info msg="Executing query" log_id=0BvKdN2W000 service=query query="SHOW DATABASES" Nov 21 19:33:00 localhost.localdomain influxd[7293]: [httpd] ::1 - - [21/Nov/2018:19:33:00 -0800] "POST /query?db=&epoch=ns&q=SHOW+DATABASES HTTP/1.1" 200 116 "-" "InfluxDBShell/1.7....29d6319a 608 Nov 21 19:33:10 localhost.localdomain influxd[7293]: ts=2018-11-22T03:33:10.917329Z lvl=info msg="Executing query" log_id=0BvKdN2W000 service=query query="SHOW MEASUREMENTS ON testdb" Nov 21 19:33:10 localhost.localdomain influxd[7293]: [httpd] ::1 - - [21/Nov/2018:19:33:10 -0800] "POST /query?chunked=true&db=testdb&epoch=ns&q=show+measurements HTTP/1.1" 200 108 "...29d6319a 939 Nov 21 19:43:07 localhost.localdomain influxd[7293]: ts=2018-11-22T03:43:07.447858Z lvl=info msg="Retention policy deletion check (start)" log_id=0BvKdN2W000 service=retention trace_..._event=start Nov 21 19:43:07 localhost.localdomain influxd[7293]: ts=2018-11-22T03:43:07.448965Z lvl=info msg="Retention policy deletion check (end)" log_id=0BvKdN2W000 service=retention trace_id...psed=1.161ms Nov 21 19:43:49 localhost.localdomain influxd[7293]: [httpd] ::1 - - [21/Nov/2018:19:43:49 -0800] "POST /query?chunked=true&db=testdb&epoch=ns&q=qiut HTTP/1.1" 400 149 "-" "InfluxDBS...29d6319a 189 Nov 21 19:43:58 localhost.localdomain influxd[7293]: [httpd] ::1 - - [21/Nov/2018:19:43:58 -0800] "POST /query?chunked=true&db=testdb&epoch=ns&q=quir HTTP/1.1" 400 149 "-" "InfluxDBS...c29d6319a 95 Hint: Some lines were ellipsized, use -l to show in full. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 服务启动后相关端口 8086:HTTP API的端口 8088:备份恢复时使用,默认值为8088 InfluxDB 客户端命令行方式操作 InfluxDB数据库操作

客户端命令行方式操作

[root@localhost influxdb]# influx Connected to http://localhost:8086 version 1.7.0 InfluxDB shell version: 1.7.0 Enter an InfluxQL query

1 2 3 4 5 显示数据库

show databases name: databases name


_internal 1 2 3 4 5 新建数据库

create database testdb show databases name: databases name


_internal testdb 1 2 3 4 5 6 7 删除数据库

drop database testdb show databases name: databases name


_internal 1 2 3 4 5 6 使用数据库

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

显示所有表

show measurement 1 新建表 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 1 2 3 4 5 6 或者添加数据时,自己写入时间戳(写入相同时间戳、相同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 1 2 3 4 5 6 7 删除表

drop measurement disk_free 1 数据保存策略(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 1 2 3 4 创建新的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 1 修改Retention Policies

alter retention policy "rp_name" on "db_name" duration 30d default 1 删除Retention Policies

drop retention policy "rp_name" on "db_name" 1 连续查询(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 1 2 3 4 5 样例 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 1 在 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 1 显示所有已存在的连续查询

show continuous queries 1 删除Continuous Queries

到此,相信大家对“InfluxDB的安装及基本使用方法”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI