influxdb基本操作

miaomiaoLoveCode發表於2016-11-14

名詞解釋

在具體的講解influxdb的相關操作之前先說說influxdb的一些專有名詞,這些名詞代表什麼。

influxDB名詞

  • database:資料庫;
  • measurement:資料庫中的表;
  • points:表裡面的一行資料。

influxDB中獨有的一些概念

Point由時間戳(time)、資料(field)和標籤(tags)組成。
  • time:每條資料記錄的時間,也是資料庫自動生成的主索引;
  • fields:各種記錄的值;
  • tags:各種有索引的屬性。
還有一個重要的名詞:series
所有在資料庫中的資料,都需要通過圖表來表示,series表示這個表裡面的所有的資料可以在圖示上畫成幾條線(注:線條的個數由tags排列組合計算出來)
舉個簡單的小例子:
有以下資料:


它的series為:


influxDB基本操作


資料庫與表的操作

可以直接在web管理頁面做操作,當然也可以命令列。
#建立資料庫
create database "db_name"

#顯示所有的資料庫
show databases

#刪除資料庫
drop database "db_name"

#使用資料庫
use db_name

#顯示該資料庫中所有的表
show measurements

#建立表,直接在插入資料的時候指定表名
insert test,host=127.0.0.1,monitor_name=test count=1

#刪除表
drop measurement "measurement_name"

向資料庫中插入資料。
  • 通過命令列
> use metrics
Using database metrics
> insert test,host=127.0.0.1,monitor_name=test count=1

這樣,資料庫插入資料成功。
  • 通過http介面
curl -i -XPOST 'http://127.0.0.1:8086/write?db=metrics' --data-binary 'test,host=127.0.0.1,monitor_name=test count=1'


讀者看到這裡可能會觀察到插入的資料的格式貌似比較奇怪,這是因為influxDB儲存資料採用的是Line Protocol格式。那麼何謂Line Protoco格式?

Line Protocol格式:寫入資料庫的Point的固定格式。

在上面的兩種插入資料的方法中都有這樣的一部分:
test,host=127.0.0.1,monitor_name=test count=1
其中:
  1. test:表名;
  2. host=127.0.0.1,monitor_name=test:tag;
  3. count=1:field
相對此格式有詳細的瞭解參見官方文件

查詢資料庫中的資料。
  • 通過命令列
> use metrics
Using database metrics
> select * from test order by time desc

  • 通過http介面
curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=metrics" --data-urlencode "q=select * from test order by time desc"


influxDB是支援類sql語句的,具體的查詢語法都差不多,這裡就不再做詳細的贅述了。

資料儲存策略(Retention Policies)

influxDB是沒有提供直接刪除資料記錄的方法,但是提供資料儲存策略,主要用於指定資料保留時間,超過指定時間,就刪除這部分資料。
  • 檢視當前資料庫Retention Policies
show retention policies on "db_name"


  • 建立新的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"


連續查詢(Continous Queries)

當資料超過儲存策略裡指定的時間之後就會被刪除,但是這時候可能並不想資料被完全刪掉,怎麼辦?
influxdb提供了聯絡查詢,可以做資料統計取樣。
  • 檢視資料庫的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:連續查詢名字
    • db_name:資料庫名字
    • sum(count):計算總和
    • table_name:當前表名
    • new_table_name:存新的資料的表名
    • 30m:時間間隔為30分鐘
  • 刪除Continous Queries
drop continous query cp_name on db_name

使用者管理

可以直接在web管理頁面做操作,也可以命令列。
#顯示使用者
show users

#建立使用者
create user "username" with password 'password'

#建立管理員許可權使用者
create user "username" with password 'password' with all privileges

#刪除使用者
drop user "username"