介紹
InfluxDB(時序數據庫),常用的一種使用場景:監控數據統計。
每毫秒記錄一下電腦內存的使用情況,然後就可以根據統計的數據,利用圖形化界面(InfluxDB 一般配合Grafana)製作內存使用情況的折線圖;可以理解爲按時間記錄一些數據(常用的監控數據、埋點統計數據等),然後製作圖表做統計;
維基百科 定義如下:
InfluxDB是一個由InfluxData開發的開源時序型數據。它由Go寫成,着力於高性能地查詢與存儲時序型數據。InfluxDB被廣泛應用於存儲系統的監控數據,IoT行業的實時數據等場景。
環境信息
OS: CentOS 7.6
InfluxDB: 1.8.x
安裝
(1)將InfluxDB加入yum源
vim /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL $releasever
baseurl = https://repos.influxdata.com/rhel/$releasever/$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
(2)安裝和啓動
#安裝
sudo yum install influxdb
#啓動
sudo systemctl start influxdb
#配置開機啓動
sudo systemctl enable influxdb
(3) 對常見關係型數據庫(MySQL)的基礎概念對比
名次/概念 |
解釋 |
---|---|
database |
數據庫 |
measurement |
度量,相當於table;例如:cpu |
tags |
標籤,相當於field,會被索引;例如:host |
field |
字段,不會被索引,例如:cpu_load |
(4)登錄
$influx -h
$influx
Connected to http://localhost:8086 version 1.8.0
InfluxDB shell version: 1.8.0
>
(5)用戶配置
netstat -ntlp|grep 8086 # influx的默認端口
(5.1)用戶創建 相關
> CREATE USER knight WITH PASSWORD 'knight' WITH ALL PRIVILEGES
> show users
user admin
---- -----
knight true
>
(5.2)創建數據庫
> create database test
> show databases
name: databases
name
----
_internal
test
>
(5.3)CURD操作
> select * from "cpu"
name: cpu
time host load usage
---- ---- ---- -----
1590650673865802321 me02 0.1 0.2
> select "host","load" from "cpu"
name: cpu
time host load
---- ---- ----
1590650673865802321 me02 0.1
> select * from "cpu" where "host"='me02'
name: cpu
time host load usage
---- ---- ---- -----
1590650673865802321 me02 0.1 0.2
(6)InfluxQL 語法
InfluxDB裏存儲的數據被稱爲時間序列數據,InfluxDB存儲方式跟傳統關係型數據庫不同的是:
傳統關係型數據庫通過數據庫+表+字段組織數據,InfluxDB通過指標、標籤、字段組織數據,時間戳是默認的索引列,標籤跟字段其實就相當於關係型數據庫中的字段,只不過標籤會被索引,而字段不會。
另外,InfluxDB中的表(measurement)、字段(tag、field)不用事先創建,並且不存儲null值
# 查看所有的數據庫
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;
(7)HTTP API
# 創建數據庫
curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE test01"
## 寫入數據
### 寫入單條數據
curl -i -XPOST http://localhost:8086/write?db=test01 --data-binary "cpu,host=me03 load=0.1,usage=0.33"
### 寫入多條數據
curl -i -XPOST http://localhost:8086/write?db=test01 --data-binary "cpu,host=me03 load=0.1,usage=0.22 166"
## 查詢數據
curl -G http://localhost:8086/query?db=test01 --data-urlencode "q=SELECT * FROM \"cpu\""