Cento7 Docker-compose安装以及使用InfluxDB


  InfluxDB是一个时序数据库,主要用于监控场景的数据支撑,对于那些写少读多按时间序查询数据的场景是非常适用的。接下来我们用docker-compose的形式安装。首先先装好docker,docker-compose命令
yum -y install  yum-utils device-mapper-persistent-data lvm2

#导入docker安装库
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
#按指定版本安装好docker
yum install docker-ce-20.10.5 docker-ce-cli-20.10.5 docker-ce-rootless-extras-20.10.5 -y

yum -y install epel-release
yum -y install docker-compose

InfluxDB的docker-compose.yml的文件内容如下:

version: '3.5'

services:
  influxdb:
    restart: always
    image: influxdb:2.1.1
    container_name: influxdb
    volumes:
       #配置文件
      - ./config/config.yml:/etc/influxdb2/config.yml
      #数据保存目录
      - /home/appadmin/data/influxdb:/var/lib/influxdb2
    ports:
       #运行端口
      - 8086:8086

文件保存好后,启动运行InfluxDB

docker-compose up -d

在这里插入图片描述

安装成功后,用命进行cli初始化,分别填上用户,密码,组织,默认桶名。

docker exec -it ab25571473e7 /usr/local/bin/influx setup --host http://localhost:8086
docker exec -it ab25571473e7 /usr/local/bin/influx config

在这里插入图片描述

接下来创建token

docker exec -it ab25571473e7 /usr/local/bin/influx auth create -o ea --all-access
docker exec -it ab25571473e7 /usr/local/bin/influx auth list

在这里插入图片描述
Influxdb没有Database,只有Organization 和 Bucket。用关系库的理解,Organization 对应数据库示例,Bucket对应Database。

Org管理命令

#org 列表
docker exec -it ab25571473e7 /usr/local/bin/influx org list

#创建org
docker exec -it ab25571473e7 /usr/local/bin/influx org create -n ea2

#重命名
docker exec -it ab25571473e7 /usr/local/bin/influx org update -i f16cdfb1a16ddfb5 -n ea3

#删除org
docker exec -it ab25571473e7 /usr/local/bin/influx org delete -i f16cdfb1a16ddfb5   

Bucket管理

#显示桶列表
docker exec -it ab25571473e7 /usr/local/bin/influx bucket list -o ea


# 数据保留时间单位在以下单位中取值:
#纳秒 (ns)
#微秒 (us or µs)
#毫秒 (ms)
#秒 (s)
#分 (m)
#时 (h)
#日 (d)
#周 (w)
#创建桶,时间1w保存一周
docker exec -it ab25571473e7 /usr/local/bin/influx bucket create -n test2 -o ea -r 1w

#重命名
docker exec -it ab25571473e7 /usr/local/bin/influx bucket update -i e6e6f7ae16812784 -n test3 -r 2w

#删除
docker exec -it ab25571473e7 /usr/local/bin/influx bucket delete -n test3-o a

measurement 管理

  在数据存储方式方面,influxdb有 Fields 和 Tags ,在存储形式上 field 的 key 被存储在一个名为_field的列中, 而tag的key则是以列头的形式存在的, 该列的内容即为tag value, 另外值得注意的是 field 和 tag 都可以用来存储数据,但tag只能存储字符串类型数据(即不可以在influx查询中使用 mean()、max()等聚合函数),而filed既可以存储字符串类型又可以存储数值类型数据。

官方文档的标准语法

# 语法
<measurement>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]

# 示例
student,name=weiyigeek id=10001,age=20 [1654848441]

InfluxDB2.x提供了两种语法查询数据,Flux和InfluxQL,我们先用Flux来插入查询数据
可通过 influx query打开查询管道(pipe),然后输入Flux查询语句,然后按住ctrl+d进行执行查询。

# - dryrun 尝试写入,即写入到stdout而不是InfluxDB。
docker exec -it ab25571473e7 /usr/local/bin/influx write dryrun -b test -o ea 'student,std_name=tomson id=00001,age=25,score=99'

#正式写入一条数据,-p ns是时间度为纳秒
docker exec -it ab25571473e7 /usr/local/bin/influx write -b test -o ea 'student,std_name=tomson id=00001,age=25,score=99' -p ns

#查询数据
#from是代表查询哪个桶
#range 是代表查询范围
# 使用filter()对输入的数据进行过滤,它有一个参数fn,这个参数是一个函数,fn函数有一个参数,这个参数表示记录,函数体是过滤条件
#yield输出查询结果
#官方参考手册 https://docs.influxdata.com/influxdb/v2.7/query-data/flux/
docker exec -it ab25571473e7 /usr/local/bin/influx query 'from(bucket: "test") |> range(start: -1d, stop: 0d) |> filter(fn: (r) => r["_measurement"] == "student") |> filter(fn: (r) => r["_field"] == "score") |> yield(name: "mean")'

#删除数据
docker exec -it ab25571473e7 /usr/local/bin/influx delete -b test -o ea -p std_name=tomson --start '2023-09-05T07:13:40.770399198Z' --stop '2023-09-06T07:13:40.770399198Z'

通过Write API - 数据写入

curl --request POST "http://localhost:8086/api/v2/write?org=ea&bucket=test&precision=ns" --header "Authorization: Token d-OT0ENHu3q2dZcgdG2pytDZvht2cIs_YpBOuvRUH-zS9TllY32vwj6TtpwWiOVeCPKTiOCZxx8eg10-W3eqlA==" --header "Content-Type: text/plain; charset=utf-8" --header "Accept: application/json" --data-binary 'student,std_name=rose id=00002,age=23,score=100'

在这里插入图片描述

在这里插入图片描述

InfluxQL方式查询

#确认是否有桶映射
docker exec -it ab25571473e7 /usr/local/bin/influx v1 dbrp list
docker exec -it ab25571473e7 /usr/local/bin/influx v1 dbrp list --bucket-id 4b788e2a835b6530

#没有映射建立映射
docker exec -it ab25571473e7 /usr/local/bin/influx v1 dbrp create  --db test  --rp test_rp  --bucket-id 4b788e2a835b6530  --default

#QL查询
#官方查询参考手册https://docs.influxdata.com/influxdb/v2.1/query-data/influxql/
 curl --get http://localhost:8086/query?db=test --header "Authorization: Token d-OT0ENHu3q2dZcgdG2pytDZvht2cIs_YpBOuvRUH-zS9TllY32vwj6TtpwWiOVeCPKTiOCZxx8eg10-W3eqlA==" --data-urlencode "q=SELECT * FROM test.test_rp.student"

在这里插入图片描述在这里插入图片描述

用户管理

#创建用户tomson,密码12345678 org是ea
docker exec -it ab25571473e7 /usr/local/bin/influx user create -n tomson -p 12345678 -o ea

#查看用户
influx user list

#更新用户名
docker exec -it ab25571473e7 /usr/local/bin/influx user update -i 0bc66373f9008000 -n jack

#修改用户密码
docker exec -it ab25571473e7 /usr/local/bin/influx user update -i 0bc66373f9008000 -n jack

#删除用户
docker exec -it ab25571473e7 /usr/local/bin/influx user delete -i 0bc66373f9008000

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机核动力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值