Influxdb基本操作(詳細)

InfluxDB數據庫的簡介

InfluxDB是一個用於存儲和分析時間序列數據的開源數據庫,是一個基於 golang 編寫,用於記錄 metrics、events,進行數據分析。

主要特性有:

  1. 內置HTTP接口,使用方便
  2. 數據可以打標記,查讓查詢可以很靈活
  3. 類SQL的查詢語句
  4. 安裝管理很簡單,並且讀寫數據很高效
  5. 能夠實時查詢,數據在寫入時被索引後就能夠被立即查出

在最新的DB-ENGINES給出的時間序列數據庫的排名中,InfluxDB高居第一位,可以預見,InfluxDB會越來越得到廣泛的使用。

一、與傳統數據庫中的名詞做比較

在這裏插入圖片描述

二、Point
Point由時間戳(time)、數據(field)、標籤(tags)組成。
Point相當於傳統數據庫裏的一行數據,如下表所示:
在這裏插入圖片描述

三、增刪改查操作(沒有修改數據)

進入influxDB命令行

influx -precision rfc3339	

1、InfluxDB數據庫操作

• 顯示數據庫

show databases

• 新建數據庫

create database shhnwangjian

• 刪除數據庫

drop database shhnwangjian

• 使用指定數據庫

use shhnwangjian

2、InfluxDB數據表操作

在InfluxDB當中,並沒有表(table)這個概念,取而代之的是MEASUREMENTS,MEASUREMENTS的功能與傳統數據庫中的表一致,因此我們也可以將MEASUREMENTS稱爲InfluxDB中的表。

• 顯示所有表

SHOW MEASUREMENTS

• 新建表
InfluxDB中沒有顯式的新建表的語句,只能通過insert數據的方式來建立新表。

insert disk_free,hostname=server01 value=442221834240i

insert cpu_virtual_used_num,host=1 value=4  1556593150

其中 disk_free 就是表名,hostname是索引(tag),value=xx是記錄值(field),記錄值可以有多個,系統自帶追加時間戳

或者添加數據時,自己寫入時間戳

insert disk_free,hostname=server01 value=442221834240i 1435362189575692182

• 刪除表

drop measurement disk_free

3、數據保存策略(Retention Policies)

influxDB是沒有提供直接刪除數據記錄的方法,但是提供數據保存策略,主要用於指定數據保留時間,超過指定時間,就刪除這部分數據。
• 查看當前數據庫Retention Policies

show retention policies on "db_name"


show retention policies on cdhnm

• 創建新的Retention Policies

create retention policy "rp_name" on "db_name" duration 3w replication 1 default

create retention policy test on cdhnm duration 1h 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


alter retention policy autogen on cdhnm duration 1h default

• 修改數據策略。

alter retention policy autogen on cdhnm duration 0h replication 1 default

• 刪除Retention Policies

drop retention policy “rp_name” on “db_name"


drop retention policy test on cdhnm

4、查詢數據

select * from  cpu_virtual_used_num

5、插入數據

插入數據同時創建表

insert disk_free,hostname=server01 value=442221834240i


insert cpu_virtual_used_num,host=470b14f0-e869-43ed-a8e6-fd634258271f,hostname=server01 value=0.3 1557023160 

6、刪除數據

influxDB是沒有提供直接刪除數據記錄的方法,但是提供數據保存策略,主要用於指定數據保留時間,超過指定時間,就刪除這部分數據。創建新的Retention Policies

create retention policy "rp_name" on "db_name" duration 3w replication 1 default


retention policy duration must be at least 1h0m0s influxdb

數據庫過期策略至少一個小時

7、查詢表字段

查詢tag:show tag keys from cluster_metric

查詢field:show field keys from cluster_metric

四、時區問題

在使用InfluxDB時,發現由於InfluxDB使用的是UTC時間,在查詢時經常會遇到時區的問題

1、時間格式

InfluxDB除了支epoch_time外,還支持rfc3339_date_time_stringrfc3339_like_date_time_string

epoch_time

理論一些的解釋是從協調世界時(Thursday, 1 January 1970)開始至今過去的時間。比如我們在java程序中使用System.currentTimeMillis()得到的就是這個時間。一般情況下爲毫秒級(ms)精度,即13位Long類型。而在InfluxDB中,時間戳的精度可以達到納秒級(ns)即19位Long類型。

rfc3339_date_time_string

rfc3339時間格式是ietf協會定義的一種時間格式,這個名字是因爲它被定義在rfc3339中。感興趣的同學可以自己查看上面的連接。InfluxDB中rfc3339的時間格式是這樣的:
‘YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ’
其中nnnnnnnnn是可選的,如果不寫則會被設置爲000000000。注意,如果使用這種時間格式,需要使用單括號(’)將時間括起來。

rfc3339_like_date_time_string

因爲rfc3339_date_time_string的格式確實比較反人類,所以InfluxDB也支持這種人類閱讀更友好的格式:
‘YYYY-MM-DD HH:MM:SS.nnnnnnnnn’
其中HH:MM:SS.nnnnnnnnn是可選的,如果不填寫會被設置爲00:00:00.000000000。所以查詢時可以設置到天、小時、分鐘、秒等不同精度。這種時間格式同樣要求被單括號括起來。

2、調整時間戳精度

InfluxDB默認東時間是納秒(ns),即19位時間戳。但是一般情況下時間精度不會這麼高。所以如果使用秒級精度查詢:
select * from cpu_virtual_used_num where time >= 1435333209s and time <= 1542964713s
如果使用毫秒級精度查詢:
select * from cpu_virtual_used_num where time >= 1435333209000ms and time <= 1542964714000ms

3、調整時區

如果需要使用北京時間(東八區),可以在SQL中使用tc關鍵字:

select * from cpu_virtual_used_num where time >= '2018-11-23 14:30:39' and time <= '2019-11-23 14:32:32' tz('Asia/Shanghai')

4、UTC時間與Beijing時間轉換

Timestamp時間列
既然是時間序列數據庫,influxdb的數據都有一列名爲time的列,裏面存儲UTC時間戳。
Influxdb時間轉成北京時間:UTC time + 8 hours = Beijing time

五、sql語句

influx -precision rfc3339	

show retention policies on cdhnm

alter retention policy autogen on cdhnm duration 1h default

create retention policy test on cdhnm duration 1h replication 1 default


drop retention policy test on cdhnm 

insert cpu_virtual_used_num,host=470b14f0-e869-43ed-a8e6-fd634258271f,hostname=server01 value=0.9 1557045292000000000
    
select * from cpu_virtual_used_num where time >= '2018-11-23 14:30:39' and time <= '2019-11-23 14:32:32' tz('Asia/Shanghai')

delete from cpu_virtual_used_num

六、啓動服務

切換到root用戶
命令:su
輸入密碼:123456

啓動:

sudo service influxdb start

重啓:

service influxdb restart

切換到普通用戶:
命令:exit

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章