安装与配置:
先docker influxdb docker pull influxdb 发现性能慢,加入阿里mirror,docker pull完成后,先导出配置文件: docker run --rm influxdb influxd config > influxdb.conf 修改配置文件 [http] enabled = true bind-address = ":8086" auth-enabled = false # 鉴权 false 改成 true 再启动 docker run -d -p 8086:8086 -p 8083:8083 -e INFLUXDB_ADMIN_ENABLED=true -v /Users/lys/Documents/my/influxdb/data:/var/lib/influxdb/ -v /Users/lys/Documents/my/influxdb/influxdb.conf:/etc/influxdb/influxdb.conf:ro --name influx influxdb -config /etc/influxdb/influxdb.conf 进入容器 docker exec -it influx /bin/sh influx CREATE USER admin with PASSWORD 'admin' WITH ALL PRIVILEGES quit influx -username admin -password admin
名词解释:
database 数据库 Retention policy 存储策略 Measurement 测量指标名,相当于表 tags sets 标签 tag 是key=value, value 是 field name Timestamp 每条数据都有一个时间戳 Series 数据集合 Shard 分片存储,根据时间 与传统数据库对比:
database 数据库 measurement 数据库中的表 points 表里面的一行数据 influxdb数据的构成:
Points的属性:
Point属性 传统数据库中的概念 time 每个数据记录时间,是数据库中的主索引(会自动生成) fields 各种记录值(没有索引的属性)也就是记录的值:温度, 湿度 tags 各种有索引的属性:地区,海拔 注: 索引=time+tags InfluxDB 的端口:
8083: Web admin管理服务的端口, http://localhost:8083 (新版已废弃) 8086: HTTP API的端口 8088: 集群端口(目前还不是很清楚, 配置在全局的bind-address,默认不配置就是开启的) 数据库操作:
#创建数据库 CREATE DATABASE lys #查看数据库 SHOW DATABASES #指定数据库 use xxx #新建表(指标)记录 insert product_click_count,product_name=gl8 value1=1 insert product_click_count,product_name=gl8 value1=3,value2=5,value3=20 #格式: insert {指标表名},{index_field}={index_value},{index_field}={index_value} {value_field}={value},{value_field}={value} {time} #显示所有表(指标) SHOW MEASUREMENTS #删除表(指标) DROP MEASUREMENT "measurementName" 用户操作:
#显示用户 SHOW USERS #创建用户 CREATE USER "username" WITH PASSWORD 'password' #创建管理员权限的用户 CREATE USER "username" WITH PASSWORD 'password' WITH ALL PRIVILEGES #删除用户 DROP USER "username" 数据保存策略:
查看数据库的策略 Retention Policies
show retention policies on "lys"
name duration shardGroupDuration replicaN default ---- -------- ------------------ -------- ------- autogen 0s 168h0m0s 1 true
# 创建策略
CREATE RETENTION POLICY "rp\_name" ON "lys" DURATION 30d REPLICATION 1 DEFAULT
show retention policies on "lys"
name duration shardGroupDuration replicaN default ---- -------- ------------------ -------- ------- autogen 0s 168h0m0s 1 false rp\_name 720h0m0s 24h0m0s 1 true name 名称 duration 保留时间,30d=720h shardGroupDuration shardGroup的存储时间,大于这个时间查询效率会降低 replicaN 副本个数 default 是否是默认策略 # 修改策略
ALTER RETENTION POLICY "rp\_name" ON lys" DURATION 3w DEFAUL
# 删除策略
DROP RETENTION POLICY "rp\_name" ON "lys"
连续查询(Continuous Queries):
对数据自动清洗以持久化保存,类似MySQL定时触发器 # 查看当前查询策略 SHOW CONTINUOUS QUERIES # 创建新的查询策略
CREATE CONTINUOUS QUERY "cq\_mean\_30m" ON "lys"
BEGIN SELECT mean(value4) INTO product\_click\_count\_mean\_30m FROM product\_click\_count GROUP BY time(30m) END mean 算平均 INFO product\_click\_count\_mean\_30m 新数据的表名 30m 间隔时间为30分钟,30分钟更新一次 # 删除连续查询 DROP CONTINUOUS QUERY <cq\_name> ON <database\_name>
DROP CONTINUOUS QUERY "cq\_mean\_30m" ON "lys"