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

背景

如今 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-influxdbimage: influxdb:1.8.4restart: alwaysenvironment:- INFLUXDB_DB=test- INFLUXDB_ADMIN_USER=admin- INFLUXDB_ADMIN_PASSWORD=you-guess- TZ=Asia/Shanghaiports:- "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-influxdbimage: influxdb:1.8.4restart: alwaysenvironment:- INFLUXDB_DB=test- INFLUXDB_ADMIN_USER=admin- INFLUXDB_ADMIN_PASSWORD=you-guess- TZ=Asia/Shanghaiports:- "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" ;     doneENV 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 8086VOLUME [/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.mzph.cn/diannao/14942.shtml

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

相关文章

Mac | 关于 Mac 桌面文件无法显示

现象问题 电脑配置&#xff1a;MacBook Pro M1&#xff0c;系统 Ventura 13.6.7 最近在不知道是不是安装了什么软件&#xff0c;导致桌面上的文件看不到了&#xff0c;但是在访达里的桌面还是可以看到文件&#xff0c;而且开启台前调度的时候&#xff0c;也不会返回桌面了。检查…

牛客NC236 最大差值【simple 动态规划 Java/Go/PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/a01abbdc52ba4d5f8777fb5dae91b204 思路 不难看出该题可以使用动态规划的方式解题。 在循环数组的过程中&#xff0c;记录截止到当前位置-1的最小值&#xff0c; 然后用当前的值去计算最大的差值。Java代码 im…

Spring Boot中集成 SSE

目录 SSE简介SSE原理SSE的使用场景在Spring Boot中集成SSE 创建Spring Boot项目添加依赖创建SSE控制器前端使用SSE详细案例&#xff1a;股票价格实时推送 总结 SSE简介 服务器发送事件&#xff08;Server-Sent Events&#xff0c;SSE&#xff09;是一种在HTTP协议上实现的服…

QT--splitter的使用

提示&#xff1a;本文为学习记录&#xff0c;若有错误&#xff0c;请联系作者&#xff0c;谦虚受教。 文章目录 前言一、实现步骤二、使用步骤1.新建splitter2.splitter的使用3.splitter大小 总结 前言 一、实现步骤 创建 QTabWidget&#xff1a;首先&#xff0c;确保你有一个…

融媒宝:群发自媒体平台的神器,注册送7天中级会员

近几年自媒体比较火&#xff0c;做自媒体往往需要发布文章或视频到多个平台&#xff0c;如手工复制粘贴逐一发布&#xff0c;委实费时费力、效率不高。今天就给大家分享一款提高自媒体运营效率的神器--融媒宝&#xff1a; 融媒宝简介 融媒宝是一款可免费使用的高效自媒体工具…

嵌入式学习记录5.20(TCP并发服务器)

目录 一. TCP并发服务器 二 .多进程实现TCP并发服务器 2.1流程框架 2.2具体实现代码 三. 多线程实现并发服务器 3.1流程框架 3.2具体实现 一. TCP并发服务器 1> 由于循环服务器使用时&#xff0c;只能等到上一个客户端处理结束后&#xff0c;才能处理下一个客户端 2&…

22个C语言小白常见问题总结

一.语言使用错误 在打代码的过程中&#xff0c;经常需要在中文与英文中进行转换&#xff0c;因此常出现一些符号一不小心就用错&#xff0c;用成中文。例如&#xff1a;“&#xff1b;”中文中的分号占用了两个字节&#xff0c;而英文中“;”分号只占用一个字节。编译器只能识…

Scala的简单学习一

一 相关知识 1.1 scala的安装 1.在idea中导入依赖&#xff0c;并在Idea下载scala插件 1.2 scala基础知识点 1.scala代码中一行语句的结束是以换行符为标准&#xff0c;可以不用写分号 2.class是一个普通的类&#xff0c;object相当于一个单例对象&#xff0c;object类中的…

OpenStack配置 之 不同cpu迁移虚拟机

介绍 OpenStack是一个开源的云计算管理平台项目&#xff0c;是一系列软件开源项目的组合。 OpenStack由NASA&#xff08;美国国家航空航天局&#xff09;和Rackspace合作研发并发起&#xff0c;以Apache许可证&#xff08;Apache软件基金会发布的一个自由软件许可证&#xff…

《Google 软件工程》读书笔记

1. 写在前面 在图书馆瞎逛&#xff0c;偶然瞄见一本《Google 软件工程》Titus Winters, Tom Manshreck, Hyrum Wright 著。主要是在这一排的书架上就这本书看着挺新的&#xff08;不知道为什么有一种喜欢看新书的情节&#xff09;&#xff0c;而且最近被领导老批评&#xff0c;…

Python 一个简单的用Canny算法进行边缘检测程序

以下是一个简单的边缘检测程序&#xff0c;使用Python和OpenCV库来实现。这个程序将加载一张图像&#xff0c;对其进行灰度化处理&#xff0c;并使用Canny边缘检测算法来检测图像中的边缘。请确保安装了OpenCV库&#xff08;可以使用pip install opencv-python进行安装&#xf…

Vue的router.addRoutes不起作用

Vue的router.addRoutes()不起作用解决方案 最近在学习制作后台管理系统的时候&#xff0c;涉及到了权限&#xff0c;在通过后台获取到数据后使用router.addRoutes()时不起作用。 最终发现左侧菜单组件中的路由是根据this.$router.options.routes来渲染的&#xff0c;最终使用…

sw套合样条曲线

套合样条曲线,可以变成一条曲线,然后可以进行分段

UOS1060e分离ssh与sftp服务

文章目录 原理一、sftp 用户与目录二、ssh 和 sftp 服务分离三、启动与停止四、验证 原理 SFTP是SSH的一部分&#xff0c;SFTP没有单独的守护进程&#xff0c;它必须使用SSHD守护进程&#xff08;端口号默认是22&#xff09;来完成相应的连接操作。 通过新建另一个‘sshd’进程…

rclone迁移对象存储之间的数据

1 概述 rclone是一款文件复制工具&#xff0c;既可以用于在linux主机之间复制文件&#xff0c;也可以在对象存储之间复制文件。 rclone的官网为&#xff1a; https://rclone.orgrlcone关于对象存储的官方文档为&#xff1a; https://rclone.org/s32 安装 2.1 yum安装 yum …

使用Spring Boot和Screw轻松生成数据库设计文档

目录 引言 准备工作 项目初始化 引入依赖 配置数据库连接 集成Screw生成文档 基本配置 生成数据库文档 实战操作 示例项目 生成效果 结论 常见问题 延伸阅读 引言 数据库设计文档是项目技术文档的重要组成部分。它不仅有助于开发人员理解数据库结构&#xff0c…

PY32F系列32位单片机 特殊引脚复用说明

一 、 PY32F030 系 列 &#xff0c; 包 括 PY32F030 、PY32F003、 PY32F002A、 XL32F003 的特殊引脚使用说明。 1、晶振引脚的复用&#xff0c;使用 HSE/LSE 引脚作为 GPIO 功能引脚时&#xff0c;只要没有配置相关功能的情况下&#xff0c;正常配置 GPIO 功能即可。 其中&am…

SpringBoot3.x 整合 Spring AI

Spring AI 已经发布了一段时间&#xff0c;虽然推出的时候就被人说只是一个套了 API 的壳&#xff0c;但是作为 Spring 生态的一个开源项目&#xff0c;用它来结合到现有业务系统中还是一个比较好的方案&#xff0c;毕竟像笔者当初为了接入 OpenAI 的 API&#xff0c;还专门学了…

Pydantic与Sqlalchemy数据模型的枚举类型实践

说明&#xff1a; 乍看时以为很容易的东西&#xff0c;摸索实践后才知道窍门实战中我是用Tinyint / Interger 作为保存 enum对象数值的字段类型&#xff0c; 而不是用数据库中提供的ENUM类型字段&#xff0c;因为有更好的扩展性&#xff0c;性能&#xff0c;节省空间作为使用理…

Git 在Windows上添加文件换行相关设置

Windows使用Git时&#xff0c;如果在提交时希望换行符不变&#xff08;CRLF换行不转换为LF&#xff09;&#xff0c;core.autocrlf选项可以按照如下设置。 时保留CRLF换行符&#xff0c;检出时转换为LF&#xff0c;core.autocrlf为true&#xff1a; git config --global core.…