阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

InfluxDB从原理到实战 – InfluxDB常用的基础操作

268次阅读
没有评论

共计 5135 个字符,预计需要花费 13 分钟才能阅读完成。

0x00 基础操作介绍

    在本文中将介绍 InfluxDB 常用的基础操作,帮助读者建立对 InfluxDB 的感性认识,快速的动手玩起来,持续查询(Continuous Queies)、Group by、Series、行协议(Line Protocol)、InfluxQL 等高级特性和细节,将会在后续文章中逐步介绍。

    InfluxDB 支持类 SQL 的操作接口,尽管因为时序数据的特点,InfluxDB 是非 CRUD 的,不支持更新数据、删除单条数据操作,但考虑到大多数的读者对应 CRUD 的关系型数据库比较熟悉,在本文中,还是按照 CRUD 原则,介绍数据库(Database)、保留策略(Retention Policy)、表(Measurement)、数据写入、数据查询、数据更新、数据删除等内容。

    InfluxDB 支持 influx 命令行和 InfluxDB API 2 种操作接口,在本文中,将以 influx 命令行的操作为例,介绍上述内容。本文的操作示例,基于 InfluxDB 最新的稳定版本,InfluxDB-v1.7.8。

0x01 数据库(Database)

1.    创建数据库
    通过 CREATE 语句,创建名为 telegraf 的数据库。

$ influx
Connected to http://localhost:8086 version 1.7.8
InfluxDB shell version: 1.7.8
> create database telegraf
>

2.    查看数据库
    通过 SHOW 语句,查看当前所有的数据库。

> show databases;
name: databases
name
----
_internal
monito
telegraf
>

3.    删除数据库

    通过 DROP 语句,删除名为 telegraf 的数据库。

> drop database telegraf
>

4.    使用数据库
    通过 USE 语句,使用名为 telegraf 的数据库。

> use telegraf
Using database telegraf
>

0x02 保留策略(Retention Policy)
1.    查看数据库对应的保留策略
    通过 SHOW 语句,查看数据库 telegraf 对应的保留策略。

> show retention policies on telegraf
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        true
>

2.    创建保留策略
    通过 CREATE 语句,创建名为 rp-one-year 的保留策略。

> create retention policy "rp-one-year" on "telegraf" duration 365d replication 1
>
> show retention policies on telegraf
name        duration  shardGroupDuration replicaN default
----        --------  ------------------ -------- -------
autogen     0s        168h0m0s           1        true
rp-one-year 8760h0m0s 168h0m0s           1        false
>

3.    更改保留策略
    通过 ALTER 语句,更改保留策略 rp-one-year 为数据库 telegraf 的默认保留策略。

> alter retention policy "rp-one-year" on "telegraf" duration 365d replication 1 default
>
> show retention policies on telegraf
name        duration  shardGroupDuration replicaN default
----        --------  ------------------ -------- -------
autogen     0s        168h0m0s           1        false
rp-one-year 8760h0m0s 168h0m0s           1        true
>

4.    删除保留策略
    通过 DROP 语句,删除数据库 telegraf 的保留策略 rp-one-year。

> drop retention policy "rp-one-year" on "telegraf"
>
> show retention policies on telegraf
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        false
>

0x03 表(Measurement)

1.    创建表
    与 MySQL 等关系型数据不同,在 InfluxDB 中,无需显式创建表,在写入时序数据时,InfluxDB 服务器会根据行协议,按需自动创建对应的表。
    在数据库 telegraf 中,插入数据时,自动创建了表 devops-idc-sz。

> use telegraf
Using database telegraf
>
> show measurements
>
> insert devops-idc-sz,host=server01 cpu=23.1,mem=0.63
>
> show measurements
name: measurements
name
----
devops-idc-sz
>

2.    查看 measurements
    通过 SHOW 语句,,查看数据库 telegraf 中的所有的表。

> show measurements
name: measurements
name
----
devops-idc-sz
>

3.    删除表
    通过 DROP 语句,删除表 devops-idc-sz 和对应的所有数据。

> drop measurement devops-idc-sz
>
> show measurements
>

0x04 数据写入
    通过 INSERT 语句和行协议,向表 devops-idc-sz 中插入 3 条 DevOps 环境的时序数据记录,时序数据对应的时间为 2019/8/30 17:44:53。

> insert devops-idc-sz,host=server01 cpu=16.1,mem=0.43 1567158293000000000
> insert devops-idc-sz,host=server02 cpu=23.8,mem=0.63 1567158293000000000
> insert devops-idc-sz,host=server03 cpu=56.3,mem=0.78 1567158293000000000

0x05 数据查询
    通过 SELECT 语句,查询表 devops-idc-sz 中的所有数据。

> select * from devops-idc-sz
name: devops-idc-sz
time                cpu  host     mem
----                ---  ----     ---
1567158293000000000 16.1 server01 0.43
1567158293000000000 56.3 server03 0.78
1567158293000000000 23.8 server02 0.63
>

0x06 数据更新

    因为时序数据多写少读无更新的特点,InfluxDB,不支持数据更新操作,笔者亦不建议对时序数据记录执行更新操作。如果在某些特殊场景下,必须对时序数据记录的指标值进行更新,可以利用“时间戳(Timestamp)和时间序列线(Series)完全相同的时序数据记录,是同一条时序数据记录,新插入的时序数据,会覆盖原有的时序数据记录”的特性,更新时序数据记录的的指标值。
    更新 server01 在 2019/8/30 17:44:53 的时序数据记录的指标值。

> insert devops-idc-sz,host=server01 cpu=76.1,mem=0.83 1567158293000000000
>
> select * from devops-idc-sz
name: devops-idc-sz
time                cpu  host     mem
----                ---  ----     ---
1567158293000000000 76.1 server01 0.83
1567158293000000000 56.3 server03 0.78
1567158293000000000 23.8 server02 0.63
>

0x07 数据删除

    同样,因为时序数据多写少读无更新和批量删除时序数据记录的特点,InfluxDB 不支持删除单条时序数据记录。除了通过保留策略周期性的定时删除时序数据记录,InfluxDB 还还还支持通过 WHERE 条件语句、删除时间序列线、删除表、删除数据库、删除分片(Shard)等方式直接批量删除指定的时序数据记录。

1.    通过 WHERE 条件语句从指定表中删除时序数据记录,从表 devops-idc-sz 中,删除标签名为 host,标签值为 server01、在 2019/8/30 17:44:53 时间���的时序数据记录。
(注意:WHERE 条件语句,不支持指标(Field),只支持标签和时间戳。)

> delete from  devops-idc-sz where "host"='server01' and  time=1567158293s
>

2. 通过删除时间序列线删除时序数据记录,删除标签对 ”host”=’server01’ 对应的时间序列线的所有时序数据记录。

> drop series from devops-idc-sz where "host"='server01'
>

3. 通过删除指定表删除时序数据记录,删除表 devops-idc-sz 对应的所有时序数据记录。

> drop measurement devops-idc-sz
>

4. 通过删除指定数据库删除时序数据记录,删除数据库 telegraf 对应的所有时序数据记录。

> drop database telegraf
>

5. 通过删除指定分片删除时序数据记录,删除分片 6 对应的所有时序数据记录。

> select *  from  devops-idc-sz
name: devops-idc-sz
time                cpu  host     mem
----                ---  ----     ---
1567158293000000000 16.1 server01 0.43
1567158293000000000 56.3 server03 0.78
1567158293000000000 23.8 server02 0.63
>
> show shards
name: _internal
id database  retention_policy shard_group start_time           end_time             expiry_time          owners
-- --------  ---------------- ----------- ----------           --------             -----------          ------
1  _internal monitor          1           2019-08-27T00:00:00Z 2019-08-28T00:00:00Z 2019-09-04T00:00:00Z
4  _internal monitor          4           2019-08-30T00:00:00Z 2019-08-31T00:00:00Z 2019-09-07T00:00:00Z

name: monito
id database retention_policy shard_group start_time           end_time             expiry_time          owners
-- -------- ---------------- ----------- ----------           --------             -----------          ------
3  monitor  autogen          3           2019-04-29T00:00:00Z 2019-05-06T00:00:00Z 2019-05-06T00:00:00Z
2  monitor  autogen          2           2019-08-26T00:00:00Z 2019-09-02T00:00:00Z 2019-09-02T00:00:00Z

name: telegraf
id database retention_policy shard_group start_time           end_time             expiry_time          owners
-- -------- ---------------- ----------- ----------           --------             -----------          ------
6  telegraf autogen          6           2019-08-26T00:00:00Z 2019-09-02T00:00:00Z 2019-09-02T00:00:00Z
>
> drop shard 6
>
> select *  from  devops-idc-sz
>

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计5135字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中