文档文档

使用 Docker 从 InfluxDB 1.x 升级到 2.7

使用内置于 InfluxDB 2.x Docker 镜像的自动升级流程,将 InfluxDB 1.x Docker 部署升级到 InfluxDB 2.x。

升级前导出连续查询

自动升级过程不会将 InfluxDB 1.x 连续查询 (CQs) 迁移到 InfluxDB 2.x 任务(2.x 中的等效功能)。在升级到 InfluxDB 2.x 之前,请导出所有 CQs。有关导出和迁移 CQs 到任务的信息,请参阅 迁移连续查询到任务

升级要求

InfluxDB 2.x 提供 1.x 兼容性 API,但需要磁盘上不同的存储布局。为了解决这些差异,InfluxDB Docker 镜像会在启动 influxd 服务器之前自动迁移 1.x 数据并转换为 2.x 兼容的数据。

为了确保 InfluxDB 在升级后重启而不会覆盖已迁移的数据,如果在 配置的 2.x 配置路径中找到现有的 boltdb 文件,则升级将不会运行。

有关 InfluxDB 自动升级过程的更多信息,请参阅 从 InfluxDB 1.x 自动升级到 2.7

InfluxDB 2.x 初始化凭证

自动 InfluxDB 升级过程引导启动初始管理员用户、组织 (organization)Bucket (bucket),这些是 InfluxDB 2.x 所必需的。在你的 Docker 容器中设置以下环境变量以提供设置凭证

  • DOCKER_INFLUXDB_INIT_USERNAME:要为管理员用户设置的用户名 (必需)。
  • DOCKER_INFLUXDB_INIT_PASSWORD:要为管理员用户设置的密码 (必需)。
  • DOCKER_INFLUXDB_INIT_ORG:要为初始组织设置的名称 (必需)。
  • DOCKER_INFLUXDB_INIT_BUCKET:要为初始 Bucket 设置的名称 (必需)。
  • DOCKER_INFLUXDB_INIT_RETENTION:初始 Bucket 保留期限的持续时间。如果未设置,初始 Bucket 将永久保留数据。
  • DOCKER_INFLUXDB_INIT_ADMIN_TOKEN:与管理员用户关联的 API 令牌。如果未设置,InfluxDB 将自动生成令牌。

文件系统挂载

InfluxDB 升级过程需要将额外的卷挂载到 2.x 容器中。使用环境变量Docker 挂载来指定和配置以下各项的适当挂载路径

  • 磁盘上的 1.x 数据
  • 自定义 1.x 配置文件(如果有)
  • 磁盘上的 2.x 数据 (/var/lib/influxdb2)
  • 2.x 配置目录 (/etc/influxdb2)

InfluxDB 升级过程按照以下优先级顺序搜索挂载的 1.x 数据和配置文件

  1. DOCKER_INFLUXDB_INIT_UPGRADE_V1_CONFIG 环境变量指定的 1.x 配置文件
  2. DOCKER_INFLUXDB_INIT_UPGRADE_V1_DIR 环境变量指定的 1.x 数据目录
  3. 挂载在 /etc/influxdb/influxdb.conf 的 1.x 配置文件
  4. 挂载在 /var/lib/influxdb 的 1.x 数据目录

避免数据丢失

默认情况下,自动升级过程会在 /var/lib/influxdb2/etc/influxdb2 下生成数据和配置文件。我们建议在这两个路径都挂载卷,以避免数据丢失。

升级初始化模式

DOCKER_INFLUXDB_INIT_MODE 环境变量设置为 upgrade

最小化升级

如果你当前运行的是类似于以下的最小化 InfluxDB 1.x 部署

docker run -p 8086:8086 \
  -v influxdb:/var/lib/influxdb \
  influxdb:1.8

要将此最小化部署升级到 InfluxDB 2.x

  1. 停止正在运行的 InfluxDB 1.x 容器。

  2. 使用以下配置启动 InfluxDB 容器

    • InfluxDB 1.x 数据目录的卷挂载
    • InfluxDB 2.x 数据目录的卷挂载
    • InfluxDB 初始化模式 环境变量
    • InfluxDB 初始化凭证 环境变量
    • influxdb:2.7 Docker 镜像
    docker run -p 8086:8086 \
      -v influxdb:/var/lib/influxdb \
      -v influxdb2:/var/lib/influxdb2 \
      -e DOCKER_INFLUXDB_INIT_MODE=upgrade \
      -e DOCKER_INFLUXDB_INIT_USERNAME=my-user \
      -e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \
      -e DOCKER_INFLUXDB_INIT_ORG=my-org \
      -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \
      influxdb:2.7
    

使用自定义 InfluxDB 1.x 配置文件升级

如果你当前运行的是类似于以下的使用自定义配置文件的 InfluxDB 1.x 部署

docker run -p 8086:8086 \
  -v influxdb:/var/lib/influxdb \
  -v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro \
  influxdb:1.8

要将使用自定义配置文件的 InfluxDB 1.x 部署升级到 InfluxDB 2.x

  1. 停止正在运行的 InfluxDB 1.x 容器。

  2. 使用以下配置启动 InfluxDB 容器

    • InfluxDB 1.x 数据目录的卷挂载
    • InfluxDB 1.x 配置文件的卷挂载
    • InfluxDB 2.x 数据目录 (/var/lib/influxdb2) 的卷挂载
    • InfluxDB 2.x 配置目录 (/etc/influxdb2) 的卷挂载
    • InfluxDB 初始化模式 环境变量
    • InfluxDB 初始化凭证 环境变量
    • influxdb:2.7 Docker 镜像
docker run -p 8086:8086 \
  -v influxdb:/var/lib/influxdb \
  -v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro \
  -v influxdb2:/var/lib/influxdb2 \
  -v influxdb2:/etc/influxdb2 \
  -e DOCKER_INFLUXDB_INIT_MODE=upgrade \
  -e DOCKER_INFLUXDB_INIT_USERNAME=my-user \
  -e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \
  -e DOCKER_INFLUXDB_INIT_ORG=my-org \
  -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \
  influxdb:2.7

使用自定义路径升级

如果你当前运行的是类似于以下的将数据目录和配置文件挂载在自定义路径的 InfluxDB 1.x 部署

docker run -p 8086:8086 \
  -v influxdb:/root/influxdb/data \
  -v $PWD/influxdb.conf:/root/influxdb/influxdb.conf:ro \
  influxdb:1.8 -config /root/influxdb/influxdb.conf

要将使用自定义路径的 InfluxDB 1.x 部署升级到 InfluxDB 2.x

  1. 停止正在运行的 InfluxDB 1.x 容器。
  2. 决定是继续使用自定义路径还是使用 InfluxDB 2.x 默认路径

要保留你的自定义 InfluxDB 1.x 路径,请使用以下配置启动 InfluxDB 容器

  • InfluxDB 1.x 数据目录的卷挂载
  • InfluxDB 1.x 配置文件的卷挂载
  • InfluxDB 2.x 数据目录的卷挂载
  • InfluxDB 2.x 配置目录的卷挂载
  • InfluxDB 初始化模式 环境变量
  • InfluxDB 初始化凭证 环境变量
  • InfluxDB 2.x v1 配置文件路径 环境变量
    • DOCKER_INFLUXDB_INIT_UPGRADE_V1_CONFIG
  • InfluxDB 1.x 自定义路径环境变量
    • INFLUXD_CONFIG_PATH
    • INFLUXD_BOLT_PATH
    • INFLUXD_ENGINE_PATH
  • influxdb:<span class="current-version">2.7</span> Docker 镜像
docker run -p 8086:8086 \
  -v influxdb:/root/influxdb/data \
  -v $PWD/influxdb.conf:/root/influxdb/influxdb.conf:ro \
  -v influxdb2:/root/influxdb2/data \
  -v influxdb2:/root/influxdb2 \
  -e DOCKER_INFLUXDB_INIT_MODE=upgrade \
  -e DOCKER_INFLUXDB_INIT_USERNAME=my-user \
  -e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \
  -e DOCKER_INFLUXDB_INIT_ORG=my-org \
  -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \
  -e DOCKER_INFLUXDB_INIT_UPGRADE_V1_CONFIG=/root/influxdb/influxdb.conf \
  -e INFLUXD_CONFIG_PATH=/root/influxdb2/config.toml \
  -e INFLUXD_BOLT_PATH=/root/influxdb2/influxdb.bolt \
  -e INFLUXD_ENGINE_PATH=/root/influxdb2/engine \
  influxdb:<span class="current-version">2.7</span>

要使用默认 InfluxDB 2.x 路径,请使用以下配置启动 InfluxDB 容器

  • InfluxDB 1.x 数据目录的卷挂载
  • InfluxDB 1.x 配置文件的卷挂载
  • InfluxDB 2.x 数据目录 (/var/lib/influxdb2) 的卷挂载
  • InfluxDB 2.x 配置目录 (/etc/influxdb2) 的卷挂载
  • InfluxDB 初始化模式 环境变量
  • InfluxDB 初始化凭证 环境变量
  • InfluxDB 2.x v1 配置文件路径 环境变量
    • DOCKER_INFLUXDB_INIT_UPGRADE_V1_CONFIG
  • influxdb:<span class="current-version">2.7</span> Docker 镜像
docker run -p 8086:8086 \
  -v influxdb:/root/influxdb/data \
  -v $PWD/influxdb.conf:/root/influxdb/influxdb.conf:ro \
  -v influxdb2:/var/lib/influxdb2 \
  -v influxdb2:/etc/influxdb2 \
  -e DOCKER_INFLUXDB_INIT_MODE=upgrade \
  -e DOCKER_INFLUXDB_INIT_USERNAME=my-user \
  -e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \
  -e DOCKER_INFLUXDB_INIT_ORG=my-org \
  -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \
  -e DOCKER_INFLUXDB_INIT_UPGRADE_V1_CONFIG=/root/influxdb/influxdb.conf \
  influxdb:<span class="current-version">2.7</span>

使用新的 InfluxDB 工具

升级完成后,使用 InfluxDB 2.7 工具来处理你的时序数据。

迁移连续查询到任务

InfluxDB 2.7 使用 任务 (tasks) 替换了连续查询。默认情况下,升级过程会将所有连续查询写入到 ~/continuous_queries.txt。要将连续查询转换为 InfluxDB 任务,请参阅 迁移连续查询到任务

使用交互式 InfluxQL shell

InfluxDB 2.7 influx CLI 包含一个交互式的 InfluxQL shell,用于执行 InfluxQL 查询。InfluxDB 2.7 Docker 镜像包含了 influx CLI。

要启动 InfluxQL shell

  1. 在你的 InfluxDB 容器中启动一个 bash 会话

    docker exec -it influxdb /bin/bash
    
  2. 设置你的 influx CLI 身份验证凭证

  3. 运行 influx v1 shell 命令。

更多信息,请参阅

要构建一个用于执行 Flux 查询的交互式 shell,请从源代码编译和构建一个命令行 Flux REPL


此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像现在一样使用它,而无需对您的代码进行任何更改。

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速的近实时数据引擎,可实时收集和处理数据,并将其持久化到本地磁盘或对象存储。InfluxDB 3 Enterprise 构建在 Core 的基础上,增加了高可用性、只读副本、增强的安全性以及数据压缩,从而实现更快的查询和优化的存储。InfluxDB 3 Enterprise 的免费层可供非商业家庭或业余爱好者使用。

欲了解更多信息,请查看