influxdb
influxdb官方文档:https://docs.influxdata.com/influxdb/v1.6/introduction/getting-started/
docker安装
docker search influxdb 1. docker pull influxdb 2. docker run --name influxdb_s -p 8083:8083 -p 8086:8086 -d influxdb:latest 3. docker exec -it influxdb_s influx -precision rfc3339
远程连接:
docker exec -it influxdb_s influx -precision rfc3339 -host 192.168.1.52 -port 8086
数据库与表操作:
# 创建数据库 CREATE DATABASE "db_name" # 显示所有数据库 SHOW DATABASES # 删除数据库 DROP DATABASE "db_name" # 使用数据库 USE mydb # 显示该数据库中的表 SHOW MEASUREMENTS # 创建表 # 直接在插入数据的时候指定表名(weather就是表名) insert weather,altitude=1000,area=北 temperature=11,humidity=-4 # 删除表 DROP MEASUREMENT "measurementName"
增
insert weather,altitude=1000,area=北 temperature=11,humidity=-4
其中:
weather : 表名
altitude=1000,area=北 : tag
temperature=11,humidity=-4 :field
自己写入时间戳: insert weather, altitude=1000,area=北 temperature=11,humidity=4 1435362189575692182
删、改
在InfluxDB中并没有提供数据的删除与修改方法。
不过我们可以通过数据保存策略(Retention Policies)来实现删除。
查
select * from table_name select * from raw_data where time < now() and unique_id='xxx' and value != 0 limit 20 offset 0
保存策略:
查询策略:
> show retention policies on testdb name duration shardGroupDuration replicaN default ---- -------- ------------------ -------- ------- autogen 0s 168h0m0s 1 true // name:策略名 // duration:数据有效期 0代表永久 // shardGroup:是InfluxDB的一个基本存储结构, 应该大于这个时间的数据在查询效率上应该有所降低. ???什么鬼,网上找的资源都是这样说 // replicaN:副本个数 // default:是否是默认策略
新增策略:
CREATE RETENTION POLICY "rp_name" ON testdb DURATION 30d REPLICATION 1 DEFAULT // rp_name:策略名 // db_name:具体的数据库名 // 30d:保存30天,30天之前的数据将被删除 // 它具有各种时间参数,比如:h(小时),w(星期) // REPLICATION 1:副本个数,这里填1就可以了 // DEFAULT 设为默认的策略
修改默认策略后,查询结果默认是修改策略之后保存的数据:
select * from "new_retention_policies_name".table_name
或
select * from table_name
修改默认策略后,如果想查询以前的数据:
select * from "old_retention_policies_name".table.name
修改策略:
ALTER RETENTION POLICY "rp_name" ON db_name" DURATION 3w DEFAULT
删除策略:
DROP RETENTION POLICY "rp_name"
用户管理
// 显示用户 SHOW USERS // 创建用户 CREATE USER "username" WITH PASSWORD 'password' // 创建管理员权限的用户 CREATE USER "username" WITH PASSWORD 'password' WITH ALL PRIVILEGES // 删除用户 DROP USER "username"
连续查询(Continous Queries)
当数据超过保存策略里指定的时间之后就会被删除,但是这时候可能并不想数据被完全删掉,怎么办?
influxdb提供了联系查询,可以做数据统计采样。
查看:
> show continuous queries name: _internal name query ---- ----- name: testdb name query ---- -----
创建:
create continous query cq_name on db_name begin select sum(count) into new_table_name from table_name group by time(30m) end
- cq_name:连续查询名字
- db_name:数据库名字
- sum(count):计算总和
- table_name:当前表名
- new_table_name:存新的数据的表名
- 30m:时间间隔为30分钟
删除:
drop continous query cp_name on db_name
关于series
点击 : https://www.cnblogs.com/strinkbug/p/5079553.html
show series on (database) // show series on testdb show series on (database) from (measurement) // show series on testdb from cpu show series on (database) from (measurement) where (field) = (field_value) // show series on testdb from cpu where "region" = 'us_west' // 注意 单引号