InfluxDB的安装及常用操作
2021-01-19 本文已影响0人
04939480fe17
InfluxDB特点
一句话:相对于CRUD的数据库更偏重CR的时序数据库
InfluxDB的安装
阿里云CentOS直接通过yum安装
- 加入yum源
cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF
- 安装及启动
sudo yum install influxdb
sudo service influxdb start
- 命令行进入
直接influx
即可
influx_command_line.png
InfluxDB的常用操作
-
展示所有的数据库
show_dbs.png
与MySQL类似,SHOW DATABASES
,初始化默认有一个_internal
数据库
-
建立一个数据库
create_db.png
无需schema信息,直接CREATE DATABASE demodb
-
切换数据库
use_db.png
CLI上提供了USE
用于切换数据库,如USE demodb
,这样后续的INSERT等操作就直接作用于该数据库中。
-
插入一条数据
insert_command.png
格式:<measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]
这里比较有意思的是measurement
类似于MySQL里的table
,主键索引默认是时间戳,tag
也是默认索引的,注意tag
和field
直接有个空格。
上图中可以理解为向voltage
表中分别插入两条数据,其中tag
都为device_id=1
;field-key
均为apparent_voltage
,但field_value
不同。
其中:tag列类似于mysql中的索引,而field列类似于没有建立索引的列,直接查询会通过全表扫描字段性能差。tag列的值必须为string类型。 -
查询数据
simple_query.png
直接SELECT * FROM voltage
条件筛选:
condition_query.png -
保留策略(Retention Policy)
数据保留策略是指数据库保留存储的内容寿命的策略。
- 展示当前数据库的保留策略
SHOW RETENTION POLICIES
name--名称
duration--持续时间,0代表无限制
shardGroupDuration--shardGroup的存储时间,shardGroup是InfluxDB的一个基本储存结构,这个描述了每个shard存放多数据的时间片是多大。默认7天。需要注意的是,当数据超出了保留策略后,influxdb并不是按照数据点的时间一点一点删除的,而是会删除整个shard group
replicaN--全称是REPLICATION,副本个数
default--是否是默认策略
- 创建一条保留策略
CREATE RETENTION POLICY "SEVEN_DAYS" ON "demodb" DURATION 7d REPLICATION 1 DEFAULT
切换数据库的保留策略会导致之前数据被删除 - 修改保留策略
ALTER RETENTION POLICY "SEVEN_DAYS" ON "demodb" DURATION 3d REPLICATION 1 DEFAULT
更新数据库的保留策略的时间不会导致之前数据被删除 - 删除保留策略
DROP RETENTION POLICY "SEVEN_DAYS" ON "demodb"
- 删除数据
- 通过时间戳删数据
influx -precision rfc3339 -port port -username username -password password
其中rfc3339是把时间戳进行格式化为人类可识别,默认是表定义的时间戳格式(毫秒/纳秒等)
delete from "voltage" where time < '2022-01-01T00:00:00.000000000Z'
按照时间戳删除数据