時間序列數據庫,主鍵永遠是時間timehtml
一類數據linux
數據序列web
請參考官網。本人使用docker來運行,並從官網下載客戶端命令行工具influxdocker
//下載influx客戶端,其實這個壓縮包已經包含了influxdb,不過我只須要客戶端influx wget https://dl.influxdata.com/influxdb/releases/influxdb-1.4.2_linux_amd64.tar.gz tar xvfz influxdb-1.4.2_linux_amd64.tar.gz //將/usr/local/bin/influx 鏈接到influxdb-1.4.2/usr/bin/influx ln -s influxdb-1.4.2/usr/bin/influx /usr/local/bin/influx //docker docker pull registry.docker-cn.com/tutum/influxdb docker tag registry.docker-cn.com/tutum/influxdb:latest tutum/influxdb //8083是influxdb的web管理工具端口,8086是influxdb的HTTP API端口 docker run -d -p 8083:8083 -p8086:8086 --expose 8090 --expose 8099 --name influxsrv tutum/influxdb //鏈接客戶端,默認鏈接到localhost:8086 influx //指定host port user pasword鏈接 influx其餘參數請使用:influx --help //退出 exit
# 顯示用戶列表 docker run -d -p 8083:8083 -p8086:8086 --expose 8090 --expose 8099 --name influxsrv tutum/influxdbshow users; # 建立用戶 create user "use_name" with password 'user_password'' with all privileges; # 刪除用戶 drop user "user_name" # 使用帳號密碼登錄(influx 默認不啓動認證機制,須要修改配置文件來啓動認證機制) influx -host 'influxdb_host' -port '8086' -username 'user_name'
show databases create database test use db_name drop database test
measurement無需建立語法,只需在插入時指定measurement便可,influx會根據你的插入的數據建立相應的measurement結構數據庫
//語法 select|insert <measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp] insert your_measurement,tag_name=tag_value... column_name=column_value //例子 insert payment,device=mobile,product=Notepad,method=credit billed=33,licenses=3i // i是integer的意思,默認數字是float //指定時間 insert payment,device=mobile,product=Notepad,method=credit billed=33,licenses=3i 1516167115623067775
select * from payment select billed from payment //查詢time billed字段 //若是字段名或者measurement是關鍵字,那麼可使用引號。如user是關鍵字 //注意,不能只select *或者select field字段 select * from "user" //select device from paymet是錯誤的 //限制查詢數量:limit //注意select的內容要麼是*,要麼是field select * from payment limit 10 //select "device" from payment 是錯誤的,由於沒有field字段 //where select * from payment where billed > 10 select * from payment where "device"='mobile' #注意引號的使用 //and or not select * from payment where billed > 10 and "device"='mobile' select * from payment where time > '2018-07-19 03:00:00' select * from payment where time > now() - 1h
delete from where tag_key=tag_value and ... or ...
influxdb 是沒有update的(通常數據倉庫只用戶數據存儲與查詢)ide
group by函數
select sum(billed) from payment group by "device" select sum(billed) from payment group by time(30m) //30m聚合一次數據`
經常使用的聚合函數有count、disinct、mean(平均值)、median(中位數)、spread(最小值和最大值之間的差值)、sum等。工具
select top("billed",3) from payment
經常使用的選擇類函數有ui
刪除整個measurementspa
drop measurement measurement_name;
SELECT * FROM "\"weather\""
可見https://www.linuxdaxue.com/in...
create continuous query cq_name on db_name [resample [every <interval>][for <interval>]] begin select <function><field>,... into measurement_1 from measurement_2 where... group by time(time<interval>) end //例子 create continuous query billed_30 on payment begin select sum(billed) into billed_30min from payment group by time(30m) end //這個連續查詢會每30分鐘執行一次
show continuous queries
drop continuous query cq_name on db_name
InfluxDB自己不提供數據的刪除操做,所以用來控制數據量的方式就是定義數據保留策略。
show retention policies on db_name --------------------------output--------------------------- name duration shardGroupDuration replicaN default default 0 168h0m0s 1 true
create retention policy "policy_name" on "db_name" duration <time> replication n [default] //例子 create retention policy "3_hour" on "test" duration 3h default
alter retention policy "3_hour" on "test" duration 4h default
drop retention policy "3_hour" on "test"
doc https://docs.influxdata.com/e...
先從以前下載的壓縮包中獲取備份工具
ln -s influxdb-1.4.2/usr/bin/influxd /usr/local/bin/influxd
//語法 influxd backup -database db_name [since 2018-07-02 12:00:00] path_to_back //since能夠指定備份某個時間點以後的數據 //例子 influxd backup payment ~/tmp/backup/payment
influxd backup -database db_name -hosthost:port [since 2018-07-05 13:00:00]path_backup
influxd restore [ -metadir | -datadir ] <path-to-meta-or-data-directory> <path-to-backup> //例子 influxd restore -database payment -metadir /var/lib/influxdb/meta -datadir /var/lib/influxdb/data ~/tmp/backup/payment //注意,在restore以前須要把influxd stop,restore後重啓influxd數據纔會成功恢復