influxdb基础---基本操作

版权声明:本文为博主原创文章,码字不易,转载请标明出处。 https://blog.csdn.net/yue530tomtom/article/details/82659461

基于最新版本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
> 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
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

猜你喜欢

转载自blog.csdn.net/yue530tomtom/article/details/82659461
今日推荐