二、使用
安装
#Ubuntu
wget -qO- https:///influxdb.key | sudo apt-key add -
source /etc/lsb-release
echo "deb https:///${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
sudo apt-get update && sudo apt-get install influxdb
sudo service influxdb start
# CentOS
cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https:///rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https:///influxdb.key
EOF
sudo yum install influxdb
sudo systemctl start influxdb
docker安装
离线安装
配置用户
SHOW USERS
CREATE USER <username> WITH PASSWORD '<password>' WITH ALL PRIVILEGES
GRANT ALL ON "NOAA_water_database" TO "todd"
关键词以及常用操作
database
create database [database name]
drop database [database name]
show databases
use databases
measurement
drop measurement [database name]
show measurements
point
tags fileds timastamp
tag1='tag1',tag2='tag2',tag3='tag3' filed1="test", filed2=12,filed3=true
ps:tag必须为字符串类型
tag keys/field keys
show tag keys
show field keys
retention policy
SHOW RETENTION POLICIES ON [database]
CREATE RETENTION POLICY "2_hours" ON "telegraf" DURATION 2h REPLICATION 1 DEFAULT
ALTER RETENTION POLICY "2_hours" ON "telegraf" DURATION 4h DEFAULT
drop retention POLICY "2_hours" ON "telegraf"
ps:删除时会删掉相关数据
series
series 相当于是 InfluxDB 中一些数据的集合,在同一个 database 中,retention policy、measurement、tag sets 完全相同的数据同属于一个 series,同一个 series 的数据在物理上会按照时间顺序排列存储在一起。
show series from cpu
从单个measurement删除所有series:
DROP SERIES FROM "h2o_feet"
从单个measurement删除指定tag的series:
DROP SERIES FROM "h2o_feet" WHERE "location" = 'santa_monica'
从数据库删除有指定tag的所有measurement中的所有数据:
DROP SERIES WHERE "location" = 'santa_monica'
shard
DROP SHARD <shard_id_number>
show shard groups
shard 在 InfluxDB 中是一个比较重要的概念,它和 retention policy 相关联。每一个存储策略下会存在许多 shard,每一个 shard 存储一个指定时间段内的数据,并且不重复,例如 7点-8点 的数据落入 shard0 中,8点-9点的数据则落入 shard1 中。每一个 shard 都对应一个底层的 tsm 存储引擎,有独立的 cache、wal、tsm file。
RP duration | Shard group interval |
---|---|
< 2 days | 1 hour |
>= 2 days and <= 6 months | 1 day |
> 6 months | 7 days |
查询
-
类似于MySQL的的语法
-
InfluxDB tags 相当于MySQL的索引列
-
InfluxDB fields 相当于非索引列
-
InfluxDB points 相当于一行
写入
insert test,tag1='tag1',tag2='tag2',tag3='tag3' filed1="test", filed2=12,filed3=true timestamp
连续查询
SHOW CONTINUOUS QUERIES
DROP CONTINUOUS QUERY <cq_name> ON <database_name>
CREATE CONTINUOUS QUERY <cq_name> ON <database_name>
BEGIN
<cq_query>
END
# 高级用法
CREATE CONTINUOUS QUERY <cq_name> ON <database_name>
RESAMPLE EVERY <interval> FOR <interval>
BEGIN
<cq_query>
END
CREATE CONTINUOUS QUERY test ON test
BEGIN
SELECT sum(hour) INTO test.autogen.test1 FROM test.autogen.test GROUP BY time(30s)
END
修改CQ
- CQ一旦创建就不能修改了,你必须DROP再CREATE才行。
** CQ的使用场景**
-
采样和数据保留:使用CQ与InfluxDB的保留策略(RP)来减轻存储问题。结合CQ和RP自动将高精度数据降低到较低的精度,并从数据库中移除可分配的高精度数据。
-
预先计算昂贵的查询:通过使用CQ预先计算昂贵的查询来缩短查询运行时间。使用CQ自动将普通查询的高精度数据下采样到较低的精度。较低精度数据的查询需要更少的资源并且返回更快。
-
替换HAVING子句:InfluxQL不支持HAVING子句。通过创建CQ来聚合数据并查询CQ结果以达到应用HAVING子句相同的功能。