文档文档

从 InfluxDB 2.0 beta 升级到 InfluxDB 2.0

要从 InfluxDB 2.0 beta 16 或更早版本升级到 InfluxDB 2.x,请首先按照以下步骤将您的 InfluxDB beta 实例、数据和资源升级到 InfluxDB 2.0

根据您如何设置 InfluxDB beta 实例以及现有资源和数据的重要性,您可以确定哪些步骤适用于您 - 例如,如果您不想迁移数据和资源,则可以跳过这些章节。

  1. 禁用现有集成
  2. 停止现有 InfluxDB beta 实例
  3. (可选)重命名现有 InfluxDB 二进制文件
  4. 移动现有数据并启动最新的 InfluxDB
  5. 启动旧的 InfluxDB beta 实例
  6. 为 InfluxDB CLI 创建配置文件
  7. 将所有资源从旧实例复制到新实例
  8. 设置集成以指向新实例
  9. 将历史数据加载到新实例

为什么需要手动过程?

为了确保现有的 InfluxQL 集成与最新版本一起使用,我们不得不对 InfluxDB 2.0 的底层存储引擎进行重大更改。

如果您在升级时有疑问,请打开一个 issue 或加入 Community Slack 工作区 以获得即时帮助。

1. 禁用现有集成

首先,关闭所有正在从您的 InfluxDB 实例读取、写入或监控的集成。这包括 Telegraf、客户端库和任何自定义应用程序。

2. 停止现有 InfluxDB beta 实例

接下来,关闭您现有的 InfluxDB beta 实例。您可以手动停止单个进程,使用 Control+c (或通过使用 ps aux | grep -i influxd 查找进程 ID,并使用 sudo kill -9 <PID>)。如果您已将 influxd 设置为作为系统进程运行,请按照与禁用任何系统进程相同的步骤操作。

3. (可选)重命名现有 InfluxDB 二进制文件

为了轻松识别您现有的 InfluxDB 二进制文件,请将它们重命名为 influx_oldinfluxd_old。如果您已将二进制文件安装在 $PATH 中,这将非常有用。在本指南中,我们使用名称 influxd_old,但您可以使用任何您喜欢的名称。

4. 移动现有数据并启动最新的 InfluxDB

如果您尚未执行此操作,请为您的系统下载并安装 InfluxDB 2.0,但暂时不要运行设置过程。注意不要覆盖现有的二进制文件。

要在两个实例之间移动数据,首先配置旧实例和新实例 InfluxDB 以同时运行。如果您下载最新的 InfluxDB beta 并尝试使用现有数据启动它,则很可能无法启动,并且会出现以下错误消息

Incompatible InfluxDB 2.0 version found.
Move all files outside of engine_path before influxd will start.

为避免此错误,请运行以下命令将现有数据移动到另一个位置(任何您喜欢的位置)

mv ~/.influxdbv2 ~/.influxdbv2_old

通过运行以下命令启动最新版本的 InfluxDB

influxd

如果您正在为 InfluxDB beta 使用特定的 命令行标志,则可以使用相同的命令行标志。

由于 InfluxDB v2 的数据文件夹路径已更改,因此所有内容都将为空。您可以访问浏览器中的 http://localhost:8086 并查看设置页面,但暂时不要完成设置过程。

5. 启动旧的 InfluxDB beta 实例

您现在可以启动旧的 InfluxDB 实例,并将其指向旧的数据目录

./influxd_old \
    --bolt-path ~/.influxdbv2_old/influxd.bolt \
    --engine-path ~/.influxdbv2_old/engine

通过访问您的 InfluxDB beta 实例 URL(可能是 http://localhost:9999)并登录来再次检查 InfluxDB 是否正常工作。您的数据和资源应该仍然存在。

如果您看到“缺少迁移”错误,请手动编辑您的 bolt 文件以删除迁移 - 例如

  1. 推荐备份您的旧 influxd.bolt 文件 - 手动编辑此文件可能会导致您丢失所有数据。
  2. 使用 BoltBrowser 打开并编辑您的旧 influxd.bolt 文件
  3. 要删除迁移,请突出显示 migrationsv1 路径下的记录,然后按 D

现在,新实例和旧实例的 InfluxDB 同时运行。

6. 为 InfluxDB CLI 创建配置文件

接下来,设置您的 InfluxDB CLI 以连接到您的旧实例和新实例。

a. 配置旧配置文件

如果您以前使用过 CLI,请将您现有的 configs 文件复制到您的新数据目录

cp ~/.influxdbv2_old/configs ~/.influxdbv2/configs

推荐:将旧配置文件重命名为类似 influx_old 的名称。

[influx_old]
  url = "http://localhost:9999"
  token = "<YOUR TOKEN>"
  org = "influxdata"
  active = true

如果您以前从未使用过 CLI,请创建一个新的配置文件以使用 influx config 命令连接到您的旧实例。

influx config create \
    --config-name influx_old \
    --host-url http://localhost:9999 \
    --org influxdata \
    --token <OLD_TOKEN>

要列出配置,请输入以下命令

influx config ls

输出列出了您的旧实例的配置文件

Active  Name        URL                    Org
*       influx_old  http://localhost:9999  InfluxData

b. 配置新配置文件

接下来设置您的新实例,这将自动为您创建一个配置文件。

influx setup 命令会自动创建一个名为 default 的配置配置文件。在运行命令之前,请确保您没有已具有该名称的配置文件。

运行 influx setup 命令并回答提示。

不要使用与现有实例中的 Bucket 相同的 Bucket 名称。否则,当您尝试复制资源时,会发生名称冲突和文件冲突。您稍后将在迁移资源后删除此虚拟 Bucket。

influx setup

该命令提示您配置凭证

Welcome to InfluxDB 2.0!
Please type your primary username: admin

Please type your password:

Please type your password again:

Please type your primary organization name: InfluxData

Please type your primary bucket name: dummy_bucket

Please type your retention period in hours.
Or press ENTER for infinite.:

You have entered:
  Username:          admin
  Organization:      InfluxData
  Bucket:            dummy_bucket
  Retention Period:  infinite
Confirm? (y/n): y

Config default has been stored in /Users/rsavage/.influxdbv2/configs.
User	Organization	Bucket
admin	InfluxData	dummy_bucket

您现在有两个配置文件:一个名为 default,指向您的新实例;另一个名为 influx_old,指向您的旧实例。

$ influx config ls
Active  Name        URL                    Org
        default     http://localhost:8086  InfluxData
*       influx_old  http://localhost:9999  InfluxData

您现在可以使用 CLI 中的 -c, --active-config 选项根据需要向它们发送命令。

7. 将所有资源从旧实例复制到新实例

使用配置文件从旧实例导出所有资源,并将它们应用到您的新实例。(唯一不会复制的是抓取器配置。您需要手动重新配置这些配置。)

通过运行以下命令,将所有现有的 InfluxDB 资源(例如仪表盘、任务和告警)复制到您的新实例

influx export all -c influx_old | influx apply -c default

(要了解有关此命令的更多信息,请参阅 influx exportinflux apply。)

输出是在您的新实例中创建的资源列表。如果成功,您可以删除在设置期间创建的 Bucket。

LABELS    +add | -remove | unchanged
+-----+------------------------+----+---------------+---------+-------------+
| +/- |     METADATA NAME      | ID | RESOURCE NAME |  COLOR  | DESCRIPTION |
+-----+------------------------+----+---------------+---------+-------------+
| +   | tasty-northcutt-c9c001 |    | something     | #326BBA |             |
+-----+------------------------+----+---------------+---------+-------------+
|                                                      TOTAL  |      1      |
+-----+------------------------+----+---------------+---------+-------------+
BUCKETS    +add | -remove | unchanged
+-----+------------------------+----+---------------+------------------+-------------+
| +/- |     METADATA NAME      | ID | RESOURCE NAME | RETENTION PERIOD | DESCRIPTION |
+-----+------------------------+----+---------------+------------------+-------------+
| +   | fasting-taussig-c9c007 |    | apps          | 0s               |             |
+-----+------------------------+----+---------------+------------------+-------------+
+-----+------------------------+----+---------------+------------------+-------------+
| +   | great-davinci-c9c005   |    | new_telegraf  | 0s               |             |
+-----+------------------------+----+---------------+------------------+-------------+
+-----+------------------------+----+---------------+------------------+-------------+
| +   | stubborn-hugle-c9c003  |    | telegraf      | 719h59m59s       |             |
+-----+------------------------+----+---------------+------------------+-------------+
|                                                          TOTAL       |      3      |
+-----+------------------------+----+---------------+------------------+-------------+

现在,您已将旧实例中的所有资源存储在新实例中。登录到您的新实例(默认情况下为 http://localhost:8086)并查看。您将看到仪表盘,但您尚未迁移旧数据。

8. 设置集成以指向新实例

重新启用您在步骤 2 中禁用的任何集成。您将需要使用新的令牌和凭证重新启用 Telegraf、客户端库、自定义应用程序或第三方数据接收器。

9. 将历史数据加载到新实例

使用 CLI 导出,然后使用以下命令重新导入您的数据。(对于范围,请选择 Bucket 保留期之前的时间,或者如果您有无限保留期,则选择很久以前的时间。)

influx query -c influx_old \
  'from(bucket: "my-bucket") |> range(start: -3y)' --raw > my-bucket.csv

然后写入新的 Bucket

influx write -c default --format csv -b my-bucket -f my-bucket.csv

为每个 Bucket 重复该过程。

验证 InfluxDB 资源、数据和集成

验证最新版本的 InfluxDB 是否正在运行,并且已配置所有资源、数据和集成。再次检查所有内容是否都在那里并且是否按预期工作。一旦您设置了最新的 InfluxDB,您就可以安全地关闭旧实例并归档以前的数据目录。

升级到最新的 InfluxDB v2 版本

按照步骤 从 InfluxDB 2.0 升级到最新的 InfluxDB 2.x 版本


此页面是否对您有帮助?

感谢您的反馈!


Flux 的未来

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

阅读更多

现已正式发布

InfluxDB 3 Core 和 Enterprise

快速启动。加速扩展。

获取更新

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

了解更多信息,请查看