使用 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 数据和配置文件
DOCKER_INFLUXDB_INIT_UPGRADE_V1_CONFIG
环境变量指定的 1.x 配置文件DOCKER_INFLUXDB_INIT_UPGRADE_V1_DIR
环境变量指定的 1.x 数据目录- 挂载在
/etc/influxdb/influxdb.conf
的 1.x 配置文件 - 挂载在
/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
停止正在运行的 InfluxDB 1.x 容器。
使用以下配置启动 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
停止正在运行的 InfluxDB 1.x 容器。
使用以下配置启动 InfluxDB 容器
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
- 停止正在运行的 InfluxDB 1.x 容器。
- 决定是继续使用自定义路径还是使用 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
在你的 InfluxDB 容器中启动一个 bash 会话
docker exec -it influxdb /bin/bash
设置你的
influx
CLI 身份验证凭证。运行
influx v1 shell
命令。
更多信息,请参阅
要构建一个用于执行 Flux 查询的交互式 shell,请从源代码编译和构建一个命令行 Flux REPL。
此页是否对您有帮助?
感谢您的反馈!