使用docker-compose部署时序数据库InfluxDB1.8.4

news2024/7/4 5:22:32

背景

如今 InfluxDB 已经更新到了 2.xInfluxDB 1.x2.x 版本之间有几个主要的区别:

  1. 数据模型:
    1.x:使用数据库和保留策略来组织数据。
    2.x:引入了组织(organizations)和存储桶(buckets)的概念,存储桶同时包含了数据的时间范围和保留策略。
  2. 查询语言:
    1.x:使用 InfluxQL ,这是一种类似于 SQL 的查询语言。
    2.x:引入了 Flux ,这是一种更强大的数据脚本和查询语言,支持更复杂的数据处理和转换功能。
  3. 用户界面:
    1.x:主要通过命令行界面进行交互。
    2.x:提供了一个全新的用户界面,支持仪表板、数据可视化和任务管理。
  4. API 和客户端库:
    1.x:主要通过 InfluxDB HTTP API 进行数据写入、查询等操作。
    2.x: API 更加标准化,并且提供了更多语言的客户端库支持。
  5. 任务和数据处理:
    1.x:较为有限,主要依赖外部工具。
    2.x:内置了任务管理功能,可以直接在 InfluxDB 中创建和管理定时任务,例如数据转换、降采样等。
  6. 安全性:
    1.x:基本的认证和授权功能。
    2.x:增强了安全性,包括内置的用户管理、令牌(tokens)和更细粒度的权限控制。
  7. 集成和扩展性:
    1.x:支持一些插件和集成。
    2.x:通过支持更多的数据源和外部服务的集成,以及对 Telegraf 的内置支持,提高了扩展性。
    总的来说, 2.x 版本在功能、灵活性和用户体验方面都有显著的提升,特别是引入了 Flux 语言和新的组织结构,使得数据管理和处理更加高效和灵活。

但是考虑团队成员对 2.x 熟悉程度与学习成本,保守选择了 1.8.4 版本;以下主要记录了使用 Docker 安装 InfluxDB 遇到的问题与解决方法。

配置

  my-influxdb:
    container_name: my-influxdb
    image: influxdb:1.8.4
    restart: always
    environment:
      - INFLUXDB_DB=test
      - INFLUXDB_ADMIN_USER=admin
      - INFLUXDB_ADMIN_PASSWORD=you-guess
	  - TZ=Asia/Shanghai
    ports:
      - "8086:8086"
    volumes:
      - ./influxdb/data:/var/lib/influxdb

部署

docker-compose -f docker-compose.yml up -d my-influxdb

验证

采用上述配置启动容器后,发现通过 InfluxDBStudio 客户端工具,不用密码也可以登录访问数据库,也就是说,我们配置的用户名和密码根本没生效。

修改配置

默认情况下, InfluxDB 的配置是禁用认证策略的,所以先编辑配置文件 influxdb.conf ,把 [http] 下的 auth-enabled 选项设置为 true ,具体如下:

[meta]
  dir = "/var/lib/influxdb/meta"

[data]
  dir = "/var/lib/influxdb/data"
  engine = "tsm1"
  wal-dir = "/var/lib/influxdb/wal"

[http]
  auth-enabled = true

然后把配置文件挂载到容器内部,再次运行,成功~

  my-influxdb:
    container_name: my-influxdb
    image: influxdb:1.8.4
    restart: always
    environment:
      - INFLUXDB_DB=test
      - INFLUXDB_ADMIN_USER=admin
      - INFLUXDB_ADMIN_PASSWORD=you-guess
      - TZ=Asia/Shanghai
    ports:
      - "8086:8086"
    volumes:
      - ./influxdb/data:/var/lib/influxdb
      - ./influxdb/conf/influxdb.conf:/etc/influxdb/influxdb.conf

问题总结

运行 InfluxDB 的关键是那几个环境变量的配置,但是当前却没有一个可以查看文档的地方。。

一方面是因为国内无法访问 Docker Hub ,导致不能查阅镜像的文档;另一方面网上的关于 Docker 部署 InfluxDB 的文章很多的认证配置都是错误的,eg:有写 INFLUXDB_INIT_ADMIN_USERNAME 的, INFLUXDB_ADMIN_USER 的,还有写 INFLUXDB_USER 的,导致本来很简单的事情走了不少弯路,详细配置查看官方文档或者GitHub。

如何查看镜像的环境变量?

一般的镜像在 Docker Hub 的文档中都会列清楚核心的环境变量有哪些,以及如何进行配置的示例。但是 Docker Hub 访问不了。。

  • 通过docker inspect查看指定镜像的环境变量,发现只有一个版本号。。
hi@hi-GeekPro:/home/hi# docker inspect --format='{{range $index, $value := .Config.Env}}{{$value}}{{println}}{{end}}' 8ffbb8ff883f
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
INFLUXDB_VERSION=1.8.4

在网上查了后,发现了以下查看容器环境变量的方法,虽然对于当前的问题并没有什么帮助,姑且记录下。

  • 进入容器内部,通过env或者printenv可以查看当前容器的环境变量
hi@hi-GeekPro:/home/hi# docker exec -it my-influxdb /bin/bash
root@22d4f166ca85:/# env
INFLUXDB_DB=test
TZ=Asia/Shanghai
HOSTNAME=22d4f166ca85
INFLUXDB_ADMIN_USER=admin
PWD=/
HOME=/root
TERM=xterm
INFLUXDB_VERSION=1.8.4
SHLVL=1
INFLUXDB_ADMIN_PASSWORD=you-guess
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
_=/usr/bin/env
  • 通过docker inspect查看指定容器的环境变量
hi@hi-GeekPro:/home/hi# docker inspect --format='{{range $index, $value := .Config.Env}}{{$value}}{{println}}{{end}}' my-influxdb
INFLUXDB_DB=test
INFLUXDB_ADMIN_USER=admin
INFLUXDB_ADMIN_PASSWORD=you-guess
TZ=Asia/Shanghai
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
INFLUXDB_VERSION=1.8.4

如何查看镜像的构建脚本dockerfile?

下面这条命令是从网上一篇文章中看到的,不明觉厉。。

docker history --format {{. CreatedBy}} --no-trunc=true 镜像id |sed “s//bin/sh\ -c\ #(nop)\ //g”|sed “s//bin/sh\ -c/RUN/g” | tac

hi@hi-GeekPro:/home/hi# docker images
REPOSITORY                        TAG               IMAGE ID       CREATED          SIZE
mysql                             8.0               7e6df4470869   3 months ago     603MB
redis                             7.2.3             e40e2763392d   5 months ago     138MB
apache/doris                      1.2.2-be-x86_64   742becf62011   15 months ago    4.22GB
apache/doris                      1.2.2-fe-x86_64   ebc68f40c5d6   15 months ago    1.06GB
influxdb                          1.8.4             8ffbb8ff883f   3 years ago      308MB
hi@hi-GeekPro:/home/hi# docker history --format {{.CreatedBy}} --no-trunc=true  8ffbb8ff883f  |sed "s/\/bin\/sh\ -c\ \#(nop)\ //g"|sed "s/\/bin\/sh\ -c/RUN/g" | tac
ADD file:e3d37689e896a83d39040f2c95091ff88f3899b5b410dbf76908dd6c938b8cb5 in / 
 CMD ["bash"]
RUN set -eux;  apt-get update;  apt-get install -y --no-install-recommends   apt-transport-https   ca-certificates   curl   netbase   wget  ;  rm -rf /var/lib/apt/lists/*
RUN set -ex;  if ! command -v gpg > /dev/null; then   apt-get update;   apt-get install -y --no-install-recommends    gnupg    dirmngr   ;   rm -rf /var/lib/apt/lists/*;  fi
RUN set -ex &&     mkdir ~/.gnupg;     echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf;     for key in         05CE15085FC09D18E99EFB22684A14CF2582E0C5 ;     do         gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key" ||         gpg --keyserver pgp.mit.edu --recv-keys "$key" ||         gpg --keyserver keyserver.pgp.com --recv-keys "$key" ;     done
 ENV INFLUXDB_VERSION=1.8.4
RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" &&     case "${dpkgArch##*-}" in       amd64) ARCH='amd64';;       arm64) ARCH='arm64';;       armhf) ARCH='armhf';;       armel) ARCH='armel';;       *)     echo "Unsupported architecture: ${dpkgArch}"; exit 1;;     esac &&     wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb_${INFLUXDB_VERSION}_${ARCH}.deb.asc &&     wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb_${INFLUXDB_VERSION}_${ARCH}.deb &&     gpg --batch --verify influxdb_${INFLUXDB_VERSION}_${ARCH}.deb.asc influxdb_${INFLUXDB_VERSION}_${ARCH}.deb &&     dpkg -i influxdb_${INFLUXDB_VERSION}_${ARCH}.deb &&     rm -f influxdb_${INFLUXDB_VERSION}_${ARCH}.deb*
COPY file:3d8a606d61e1fc0042cf34d036eda4550a18d140c47376dacc02d96ee6f2dd8b in /etc/influxdb/influxdb.conf 
 EXPOSE 8086
 VOLUME [/var/lib/influxdb]
COPY file:61c4af7a0e637328374ec46266ed6dde40adf7d14ac6c5081100924991beb7f3 in /entrypoint.sh 
COPY file:e7af69cde81ffb6eddc175488941183d1244772c36c27b74751d54389fb71701 in /init-influxdb.sh 
 ENTRYPOINT ["/entrypoint.sh"]
 CMD ["influxd"]

如何在国内查看镜像的文档?

答案是:目前没有方法查看 Docker Hub 的镜像文档。

不过,虽然 Docker Hub 访问不了,但是我们使用的软件一般都是开源的,这样就可以到 GitHub 上查看其镜像构建文件。eg: 本次部署的 InfluxDB 单机版是开源的,可以在init-influxdb.sh看到只有当 AUTH_ENABLEDtrue ,并且配置了 INFLUXDB_ADMIN_USER 时,才会开启认证并创建对应的用户,否则即使配置了用户信息,其实还是可以匿名登录。。
2024-05-25-InfluxDB.jpg

备份与恢复

对于一个数据库的基本操作,除了增删改查外,我们还经常需要进行数据的迁移与同步,这就涉及到数据的备份与恢复操作。

备份

docker exec -it my-influxdb /bin/bash
influxd backup -portable -database test -host 102.102.0.114:8086 /opt/influx

导出文件

docker cp my-influxdb:<path-to-backup> <path-to-restore>

恢复

influxd restore -portable <path-to-restore>

Reference

  • https://influxdb-v1-docs-cn.cnosdb.com/influxdb/v1.8/administration/authentication_and_authorization/

  • https://github.com/influxdata/influxdb


If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1691065.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抖音极速版:抖音轻量精简版本,新人享大福利

和快手一样&#xff0c;抖音也有自己的极速版&#xff0c;可视作抖音的轻量精简版&#xff0c;更专注于刷视频看广告赚钱&#xff0c;收益比抖音要高&#xff0c;可玩性更佳。 抖音极速版简介 抖音极速版是一个提供短视频创业和收益任务的平台&#xff0c;用户可以通过观看广…

【LeetCode】【1】两数之和(1141字)

文章目录 [toc]题目描述样例输入输出与解释样例1样例2样例3 提示进阶Python实现哈希表 个人主页&#xff1a;丷从心 系列专栏&#xff1a;LeetCode 刷题指南&#xff1a;LeetCode刷题指南 题目描述 给定一个整数数组nums和一个整数目标值target&#xff0c;请在该数组中找出…

【linux-kernel内核移植记录-踩坑以及注意事项】

目录 1. 环境介绍2.编译原厂的kernel2.1 通过tftp挂载原厂linux内核 3. 修改对应的驱动3.1 修改CPU频率3.2 修改MMC3.3 修改网络驱动 4. 总结 1. 环境介绍 ubuntu版本16.04I.MX6ULL开发板&#xff0c;阿尔法uboot正常启动&#xff0c;能ping通ubuntu&#xff0c;可通过tftpboo…

使用delphi11编写一个基于xls作为数据库的照片展示程序

1、创建xls文档可以参考前一篇博客&#xff0c;并使用wps将文档保存为2003格式xls后缀。 2、在form上面放置adoconnection、adotable、datasource、spinedit、timer、checkbox、image、4个button组件。 image的设置&#xff1a; Image1.Align : alClient; Image1.Center : Tr…

【全开源】答题考试系统源码(FastAdmin+ThinkPHP+Uniapp)

答题考试系统源码&#xff1a;构建高效、安全的在线考试平台 引言 在当今数字化时代&#xff0c;在线考试系统已成为教育机构和企业选拔人才的重要工具。一个稳定、高效、安全的答题考试系统源码是构建这样平台的核心。本文将深入探讨答题考试系统源码的关键要素&#xff0c;…

mysql binlog统一恢复误删数据库、表、数据(没有任何备份)

先将mysql文件夹中的my.ini进行设置 在 [mysqld]下边加上 # mysql-bin 是日志的基本名或前缀名&#xff0c;最后生成的日志文件是mysql-bin.000001类似&#xff0c;重启mysql数字会递增 log_binmysql-bin #binlog格式&#xff0c;statement&#xff0c;row&#xff0c;mixed可…

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第28课-avatar玩家3D形象

【WEB前端2024】开源智体世界&#xff1a;乔布斯3D纪念馆-第28课-avatar玩家3D形象 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界…

Python列表,元组,集合,字典详解一篇搞懂

目录 介绍 列表(List) 集合(Set) 字典(Dict) 元组(Tuple) 列表 列表定义 ​编辑 列表切片 列表常用方法 append extend ​编辑 insert ​编辑 remove pop ​编辑 clear ​编辑 列表修改元素 sort 升序 倒序 reverse count ​编辑 index 浅拷贝和深拷贝 …

CV之Nougat:Nougat(一种基于神经网络实现OCR功能的视觉转换器模型)的简介、安装和使用方法、案例应用之详细攻略

CV之Nougat&#xff1a;Nougat(一种基于神经网络实现OCR功能的视觉转换器模型)的简介、安装和使用方法、案例应用之详细攻略 目录 相关论文 《Nougat: Neural Optical Understanding for Academic Documents》的翻译与解读 Nougat的简介 Nougat的安装和使用方法 1、安装 …

成犬必备!福派斯鲜肉狗粮,亮毛祛泪痕的神奇功效!

对于成犬来说&#xff0c;选择一款合适且高质量的狗粮至关重要。成犬时期的狗狗正处于身体和生理机能逐渐稳定的阶段&#xff0c;因此&#xff0c;需要选择能够满足其日常营养需求、维持健康状态并有助于长寿的狗粮。理想的狗粮应当包含狗狗所需的各种营养物质&#xff0c;如高…

使用CyberRT写第一个代码, test ok

简介 计算框架是自动驾驶系统中的重中之重,也是整个系统得以高效稳定运行的基础。为了实时地完成感知、决策和执行,系统需要一系列的模块相互紧密配合,高效地执行任务流。由于各种原因,这些模块可能位于不同进程,也可能位于不同机器。这就要求计算框架中具有灵活的、高性…

uniapp+canvas实现逐字手写效果

在移动端使用 UniApp 进行逐字手写的功能。用户可以在一个 inputCanvas 上书写单个字&#xff0c;然后在特定时间后将这个字添加到 outputCanvas 上&#xff0c;形成一个逐字的手写效果。用户还可以保存整幅图像或者撤销上一个添加的字。 初始化 Canvas&#xff1a; 使用 uni.c…

SpringCloud系列(29)--准备使用Hystrix的前期工作,创建服务提供者模块

前言&#xff1a;在上一章节中我们简单的介绍了关于Hystrix的相关知识点&#xff0c;而本节内容则是关于如果去使用Hystrix构建一个支付微服务。 1、创建一个服务提供者模块&#xff0c;命名为cloud-provider-hystrix-payment8001 (1)在父工程下新建模块 (2)选择模块的项目类型…

香橙派华为昇腾CANN架构编译opencv4.9

香橙派华为升腾AI盒子 为啥要编译opencv4.9.0&#xff0c; 因为在4.9.0 中增加了华为昇腾CANN的外接开发库&#xff0c;下图为盒子外观&#xff0c;此次一接到这个盒子&#xff0c;立刻开始开箱操作&#xff0c;首先就是要编译opencv4.9&#xff0c;以前在香橙派3588 的盒子中…

台湾省军事演习路径规划:A*算法在复杂地形中的应用

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…

PyTorch 错误 RuntimeError: CUDA error: device-side assert triggered

训练数据的时候出现 RuntimeError:CUDA error:device-side assert triggeredCUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect.For debugging consider passing CUDA_LAUNCH_BLOCKING1.Compile with …

使用Python探究OpenAI API

谁没听说过OpenAI?这家人工智能研究实验室因其著名的产品ChatGPT而改变了世界。它改变了AI实施领域&#xff0c;许多公司现在急于成为下一大热点。 尽管竞争激烈&#xff0c;OpenAI仍然是任何生成式AI业务需求的首选公司&#xff0c;因为它拥有最好的模型和持续的支持。该公司…

齐护K210系列教程(三十四)_视觉PID巡线小车

视觉PID巡线小车 1.前言2.简介3.代码讲解3.1初始化3.2.色块查找3.3色块分析3.3.1 区域13.3.2 区域2 3.4 侦测关键点部分3.4.1正常巡线3.4.2 右转路口 3.4.3十字路口3.4. PID计算 4.完整代码5.小车端程序6.参考程序联系我们 1.前言 本课程主要讲述如何使用AIstart_k210主板完成…

C语言——free() 和 delete() 怎样处理指针?

一、问题 从字⾯上理解&#xff0c;free() 是释放&#xff0c;给予⾃由的意思&#xff1b;⽽ delete() 的含义⽐较直接&#xff0c;是删除的意思。这两个函数的⽬的就是不想再与这个指针有任何关联&#xff0c;那么它们到底怎样处理了不再使⽤的指针呢&#xff1f; 二、解答 其…

❤Element的使用element

❤Element的使用 1、input输入框 禁止自动补全和下拉提示 input 输入框在输入后浏览器会记录用户输入的值&#xff0c;在下次输入的时候会将记录的值提示在输入框的下面&#xff0c;当输入框是密码的时候&#xff0c;这样可以看见上次输入的密码&#xff0c;这样用户体验不好…