時序資料庫之InfluxDB的基本操作

Active_Sentinel發表於2022-03-26

1.進入Influxdb的客戶端

 

[root@activity_sentinel ~]# influx

 

2.資料庫的操作

 

  • 顯示所有的資料庫名

> show databases
name: databases
name
----
_internal
telegraf
  • 新建資料庫

> create database Monitor
> show databases      //檢視Monitor庫
name: databases
name
----
_internal
telegraf
Monitor
> 
  • 刪除資料庫

> drop database Monitor
  • 使用某個資料庫

> use telegraf
Using database telegraf
> 
  • 檢視此資料庫下的所有表名稱

> show measurements
name: measurements
name
----
cpu
disk
diskio

  

 

3.資料表的操作

 

  • 新建表

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

insert Test,hostname=activety_sentinel value=666

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

> select * from Test
name: Test
time                hostname          value
----                --------          -----
1648275500109414508 activety_sentinel           666
>  

或者新增資料時,自己寫入時間戳

insert Test,hostname=activety_sentinel value=666   1435362189575692182
  • 刪除表

> drop measurement Test
  • 向表中插入一條資料

> insert Test,hostname=server1 value=888
  • 刪除表中的一條資料,根據時間戳time來刪除一條資料

> delete from Test where time=1648276975654173174 

 

4.資料儲存策略(Retention Policies)

 

influxDB是沒有提供直接刪除資料記錄的方法,但是提供資料儲存策略,主要用於指定資料保留時間,超過指定時間,就刪除這部分資料。

  • 檢視當前資料庫儲存策略(Retention Policies)

> show retention policies on "telegraf"                     //telegraf  是資料庫名
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 240h0m0s 168h0m0s 1 true
  • 建立新的儲存策略

create retention policy  "save"  on "telegraf"  duration 150h replication 1 default;      //save 是自定義的新策略名稱;150h是儲存時間; replication 1:副本個數,一般為1就可以了;default:設定為預設策略
  • 修改儲存策略

alter retention policy "save" on "telegraf" duration 180h replication 1 default;    //資料儲存180h
  • 刪除儲存策略

drop retention policy "save" on "telegraf"

 

5.連續查詢(Continuous Queries)

 

InfluxDB的連續查詢是在資料庫中自動定時啟動的一組語句,語句中必須包含 SELECT 關鍵詞和 GROUP BY time() 關鍵詞。

InfluxDB會將查詢結果放在指定的資料表中。

目的:使用連續查詢是最優的降低取樣率的方式,連續查詢和儲存策略搭配使用將會大大降低InfluxDB的系統佔用量。而且使用連續查詢後,資料會存放到指定的資料表中,這樣就為以後統計不同精度的資料提供了方便。

  • 新建連續查詢示例

CREATE CONTINUOUS QUERY monitorclient ON telegraf 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 

sql含義:在" telegraf " 庫中新建了一個名為 " monitorclient " 的連續查詢,每三十分鐘取一個connected_clients欄位的平均值、中位值、最大值、最小值 redis_clients_30m 表中。使用的資料保留策略都是 default。

  • 顯示所有已存在的連續查詢

show  continuous queries
  • 刪除Continuous Querie

drop   continuous query monitorclient  ON  telegraf   //  monitorclient 是連續查詢的名稱; telegraf 是資料庫名稱

 

  

 

相關文章