Influxdb介绍

influxdb influxdb官方文档

安装:

systemctl status influxd
systemctl start influxd

influxDB名词:

  • database:数据库;
  • measurement:数据库中的表;
  • points:表里面的一行数据。

    influxDB中独有的一些概念

  • Point由时间戳(time)、数据(field)和标签(tags)组成。
    • time:每条数据记录的时间,也是数据库自动生成的主索引;
    • fields:各种记录的值;
    • tags:各种有索引的属性。
  • series:series是共同retention policy,measurement和tag set的集合。series表示这个表里面的所有的数据可以在图标上画成几条线(注:线条的个数由tags排列组合计算出来)

    概念

  • InfluxDB HTTP API 默认在8086端口运行

    InfluxDB

    查看InfluxDB版本

    1
    influx -version

    注意事项

  • GROUP BY 参数只能是time和tag
  • fill(200):表示如果这个时间段没有数据,以200填充,
  • 聚合函数 只能是field
  • 不支持if(),in()
  • where语句可使用比较运算符或者正则表达式时:
    • 使用比较运算符当比较对象是field且值是字符串类型时必须使用单引号
    • 使用比较运算符当比较对象是tag时必须使用单引号
    • 使用正则表达式时必须没有单引号

InfluxDB数据库操作

进入命令行influx command line interface (CLI)

1
2
3
influx -precision rfc3339
#-precision:指定返回时间戳的格式/精度。
#rfc3339:告诉InfluxDB返回RFC3339格式的时间戳(YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ)。

查询时设置时区

1
select * from <table-name> tz('Asia/Shanghai')

查询TAG_KEY

1
SHOW TAG KEYS [from weather]

查询FIELD_KEY及其FIELD_TYPE

1
SHOW FIELD KEYS [from <table-name>]

创建数据库

1
CREATE DATABASE <db-name>

显示所有数据库

1
show databases

删除数据库

1
drop database <db-name>

使用数据库

1
use <db-name>

显示该数据库中所有的表(其中主索引始终是time)

1
SHOW MEASUREMENTS

查看某张表的series

1
show series from table_name

InfluxDB数据操作

新建表(向数据库中插入数据。)

InfluxDB中没有显式的新建表的语句,只能通过insert数据的方式来建立新表。

1
insert <measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]
  • 其中:
    • weather: 表名
    • altitude=1000,area=北:tag;
    • temperature=11,humidity=-4:field(value)
  • 例子:
    1
    2
    3
    insert weather,altitude=1000,area=北 temperature=11,humidity=-4
    -- 或者添加数据时,自己写入时间戳
    insert weather,altitude=1000,area=北 temperature=11,humidity=-4 1567564802768578364

删除表

1
drop measurement <table-name>

数据库数据保存策略(Retention Policies)

主要用于指定数据保留时间,超过指定时间,就删除这部分数据

查看当前数据库数据保存策略(Retention Policies)

1
show retention policies on "db_name"

创建新的Retention Policies

1
create retention policy "rp_name" on "db_name" duration 3w replication 1 default

其中:

  • rp_name:策略名
  • db_name:具体的数据库名
  • 3w:保存3周,3周之前的数据将被删除,influxdb具有各种事件参数,比如:h(小时),d(天),w(星期)
  • replication 1:副本个数,一般为1就可以了
  • default:设置为默认策略

修改Retention Policies

1
alter retention policy "rp_name" on "db_name" duration 30d default

删除Retention Policies

1
drop retention policy "rp_name"

连续查询(Continous Queries)(CQ)

当数据超过保存策略里指定的时间之后就会被删除,但是这时候可能并不想数据被完全删掉,怎么办?
influxdb提供了联系查询,可以做数据统计采样。
这个一个在数据库中自动周期运行的InfluxQL的查询。Continuous query在select语句里需要一个函数,并且一定会包含一个GROUP BY time()的语法。

查看数据库的Continous Queries

1
show continuous queries

创建新的Continous Queries

1
2
3
4
5
#(关键字要大写)
CREATE CONTINUOUS QUERY cq_name ON db_name
BEGIN
SELECT sum(log) INTO new_table_name FROM table_name GROUP BY time(5m)
END

其中:

  • cq_name:连续查询名字
  • db_name:数据库名字
  • sum(count):计算总和
  • table_name:当前表名
  • new_table_name:存新的数据的表名
  • 30m:时间间隔为30分钟

删除Continous Queries

1
drop CONTINUOUS query cp_name on db_name

用户管理

显示用户

1
show users

创建用户

1
create user "username" with password 'password'

创建管理员权限用户

1
create user "username" with password 'password' with all privileges

删除用户

1
drop user "username"