基于最新版本1.6.2,centOS
- 创建数据库
create database “db_name” - 显示所有的数据库
show databases - 删除数据库
drop database “db_name”
> show databases
name: databases
name
----
_internal
mydb
> create database new_database
> show databases
name: databases
name
----
_internal
mydb
new_database
> drop database new_database
> show databases
name: databases
name
----
_internal
mydb
>
- 使用数据库
use db_name - 显示该数据库中所有的表
show measurements
> use mydb
Using database mydb
> show measurements
name: measurements
name
----
cpu_load_short
treasures
>
- 创建表,直接在插入数据的时候指定表名
insert test,host=localhost,monitor_name=test count=1 - 查询数据库中的数据。
select * from test order by time desc - 删除表
drop measurement “measurement_name”
> use mydb
Using database mydb
> insert test,host=localhost,monitor_name=test count=1
> show measurements
name: measurements
name
----
cpu_load_short
test
treasures
> select * from test
name: test
time count host monitor_name
---- ----- ---- ------------
1536721597455141594 1 localhost test
> drop measurement test
> show measurements
name: measurements
name
----
cpu_load_short
treasures
>
查询和sql非常类似可以举一反三
连续查询(Continuous Queries)
influxdb提供了连续查询,可以做数据统计采样。连续查询是在数据库中自动定时启动的一组语句,语句中必须包含 SELECT 关键词和 GROUP BY time() 关键词。
使用连续查询是最优的降低采样率的方式,连续查询和存储策略搭配使用将会大大降低InfluxDB的系统占用量。而且使用连续查询后,数据会存放到指定的数据表中,这样就为以后统计不同精度的数据提供了方便- 查看数据库的Continuous Queries
show continuous queries - 创建新的Continuous Queries
create continuous 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分钟 - 删除Continuous Queries
drop Continuous query cp_name on db_name
- 查看数据库的Continuous Queries
> show continuous queries
name: _internal
name query
---- -----
name: mydb
name query
---- -----
> create continuous query cq_onmydb_name on mydb begin select sum(count) into result_table_name from cpu_load_short group by time(30m) end
> show continuous queries
name: _internal
name query
---- -----
name: mydb
name query
---- -----
cq_onmydb_name CREATE CONTINUOUS QUERY cq_onmydb_name ON mydb BEGIN SELECT sum(count) INTO mydb.autogen.result_table_name FROM mydb.autogen.cpu_load_short GROUP BY time(30m) END
> drop continuous query cq_onmydb_name on mydb
> show continuous queries
name: _internal
name query
---- -----
name: mydb
name query
---- -----
>
- 显示用户
show users - 创建用户
create user “username” with password ‘password’ - 创建管理员权限用户
create user “username” with password ‘password’ with all privileges - 删除用户
drop user “username”
> show users
user admin
---- -----
yueling false
lingyue true
> create user test with password '123456'
> create user testAdmin with password '123456' with all privileges
> show users
user admin
---- -----
yueling false
lingyue true
test false
testAdmin true
> drop user test
> show users
user admin
---- -----
yueling false
lingyue true
testAdmin true
>
series操作
show series from dbname通过http接口写
- 参数db指定了需查询的数据库,q代表了需执行的查询语句
- 插入多条数据,直接写即可
- 响应
2xx:204代表no content,200代表InfluxDB可以接收请求但是没有完成请求。一般会在body体中带有出错信息。
4xx:InfluxDB不能解析请求。
5xx:系统出现错误。 - 写入数据从文件中读取,比如数据在cpu_data.txt文件中
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'test,host=localhost,monitor_name=test count=1'
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary @cpu_data.txt
其中:
[root@test25 ~]# cat cpu_data.txt
cpu_load_short,host=server02 value=0.67
- db=mydb是指使用mydb这个数据库
- –data-binary后面是需插入数据
- test是表名(measurement),tag字段是host和monitor_name,值分别为:localhost和test
- field key字段是count,值为1
- 时间戳(timestamp)自动生成或显式指定(下面的例子省略了)
- 其中,db参数必须指定一个数据库中已经存在的数据库名,数据体的格式遵从InfluxDB规定格式,首先是表名,后面是tags,然后是field,最后是时间戳。tags、field和时间戳三者之间以空格相分隔
- 通过http接口读
- 参数db指定了需查询的数据库,q代表了需执行的查询语句
- 多条查询只需要用”;”将查询语句分割即可
- 使用epoch参数指定数据的时间格式,可选值有 epoch=[h,m,s,ms,u,ns]
- 使用 chunk_size 参数来指定每次结果的大小
curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=mydb" --data-urlencode "q=select * from test order by time desc"
- 数据保留策略参考
- 当前正在执行的语句
show queries
> SHOW QUERIES
qid query database duration status
--- ----- -------- -------- ------
139 SHOW QUERIES mydb 74µs running
>
- qid 正在执行的语句的ID,我们可以使用 KILL QUERY命令来杀掉此命令。
- query 命令内容
- database 正在执行语句的数据库
- duration 此语句当前执行的时长
- 停止当前正在执行的语句
kill query <qid> - 备份元数据
influxd backup <path-to-backup> - 备份数据库
可以通过 -database 参数来指定备份的数据库
influxd backup -database <mydatabase> <path-to-backup>
参数类型 | 参数 |
---|---|
可选参数 | retention <retention policy name> shard <shard ID> since <date> |
- 远程备份
InfluxDB可以使用 -host 参数实现数据的远程备份,端口一般是8088
influxd backup -database mydatabase -host 10.0.0.1:8088 /tmp/mysnapshot - 数据恢复
influxd restore [ -metadir | -datadir ] <path-to-meta-or-data-directory> <path-to-backup>
参数类型 | 参数 |
---|---|
必选参数 | metadir <path-to-meta-directory> 或 datadir <path-to-data-directory> |
可选参数 | database <database> retention <retention policy> shard <shard id> |
附录:Line Protocol
nfluxDB存储数据采用的是Line Protocol格式,写入数据库的Point的固定格式
test,host=localhost,monitor_name=test count=1
test:表名;
host=localhost,monitor_name=test:tag;
count=1:field