文档文档

自动从 InfluxDB 1.x 升级到 2.7

使用 influxd upgrade 命令将 InfluxDB 1.x 升级到 InfluxDB 2.7influxd upgrade 命令是 v2 influxd 服务 的一部分,并提供从 InfluxDB 1.x 到 InfluxDB 2.7 的就地升级。

要完成升级过程,请确保您正在使用包含 influxd upgrade 命令的 InfluxDB 2.7 influxd 二进制文件

升级过程执行以下操作

  1. 读取现有的 InfluxDB 1.x 配置文件,并在 ~/.influxdbv2/config.toml 或使用 --v2-config-path 标志指定的自定义路径生成等效的 InfluxDB 2.7 配置文件。
  2. 将元数据和存储引擎路径升级到 ~/.influxdbv2/meta~/.influxdbv2/engine,分别(除非另有指定)。
  3. 将现有数据和预写日志 (WAL) 文件写入 InfluxDB 2.7 存储桶
  4. 创建使用 InfluxQL 查询数据所需的 数据库和保留策略 (DBRP) 映射
  5. 读取现有元数据,并将非管理员用户、密码和权限迁移到 ~/influxdbv2/influxdb.bolt 中的 1.x 授权兼容存储。

在运行 influxdb upgrade 后启动 InfluxDB 2.7 时,InfluxDB 必须构建新的时间序列索引 (TSI)。根据存在的数据量,这可能需要一些时间。

开始之前的重要注意事项

在升级到 InfluxDB 2.7 之前,请考虑以下准则。某些或全部可能适用于您的特定安装和用例。以下各节包含我们关于解决升级过程中可能存在的差距的建议。请考虑在升级之前是否需要解决以下任何问题。

可用的操作系统、容器和平台支持

InfluxDB 2.7 目前可用于 macOS、Linux 和 Windows。

InfluxDB 2.7 需要 64 位操作系统。

连续查询

连续查询在 InfluxDB 2.7 中被 任务 取代。默认情况下,influxd upgrade 将所有连续查询写入 ~/continuous_queries.txt。要将连续查询转换为 InfluxDB 任务,请参阅 将连续查询迁移到任务

支持的协议

InfluxDB 2.7 不直接支持 InfluxDB 1.x 中支持 的备用写入协议(CollectD、Graphite、OpenTSDB、Prometheus、UDP)。使用 Telegraf 将这些协议转换为 Line Protocol。

Kapacitor

在以下情况下,您可以继续将 Kapacitor 与 InfluxDB OSS 2.7 一起使用

  • Kapacitor 批处理风格的 TICKscripts 可以与 1.x 读取兼容 API 一起使用。现有的 Kapacitor 用户凭据应继续使用 1.x 兼容性 API
  • InfluxDB 2.7 没有订阅 API,并且不支持 Kapacitor 流任务。要继续使用流任务,请将数据直接写入 InfluxDB 和 Kapacitor。使用 Telegraf 及其 InfluxDB 输出插件 写入 Kapacitor,并使用 InfluxDB v2 输出插件 写入 InfluxDB v2。
Telegraf 配置示例
# Write to Kapacitor
[[outputs.influxdb]]
  urls = ["http://localhost:9092"]
  database = "example-db"
  retention_policy = "example-rp"

# Write to InfluxDB 2.7
[[outputs.influxdb]]
  urls = ["http://localhost:8086"]
  database = "example-db"
  retention_policy = "example-rp"
  username = "v1-auth-username"
  password = "v1-auth-password"

用户迁移

influxd upgrade 迁移现有的 1.x 用户及其权限,但以下用户除外

查看 1.x 用户权限

如果将管理员用户用于可视化或 Chronograf 管理功能,请在升级之前创建一个新的只读用户

创建只读 1.x 用户
> CREATE USER <username> WITH PASSWORD '<password>'
> GRANT READ ON <database> TO "<username>"

InfluxDB 2.7 仅向在 InfluxDB 2.7 升级期间设置的主用户授予管理员权限。这为您提供了在设置 InfluxDB 2.7 时重新评估要向谁授予管理员权限的机会。

仪表盘

您可以通过 1.x /query 兼容性 API 继续将现有仪表盘和可视化工具与 InfluxDB 2.7 一起使用。升级过程创建 DBRP 映射,以确保现有用户可以使用适当的权限执行 InfluxQL 查询。

但是,如果您的仪表盘工具配置为使用具有管理员权限的用户,则您需要在升级之前创建一个具有适当数据库权限的新只读用户。此新的用户名和密码组合应用于数据源配置中,以继续提供对底层数据的只读访问权限。

确保您的仪表盘在升级前全部正常运行。

其他数据

1.x _internal 数据库不会随 influxd upgrade 命令一起迁移。要收集、存储和监控类似的 InfluxDB 内部指标,创建一个 InfluxDB 2.7 抓取器,以从 /metrics 端点抓取数据并将其存储在存储桶中。

默认安全

InfluxDB 2.7 需要身份验证,并且不支持 InfluxDB 1.x auth-enabled = false 配置选项。

在升级到 2.7 之前,在您的 InfluxDB 1.x 实例中启用身份验证 并测试您的凭据,以确保您的应用程序、代理和可视化工具可以连接到 InfluxDB。

如果您在 auth-enabled = false 的情况下升级,升级可能看起来已完成,但客户端对 InfluxDB 2.7 的请求可能会被静默忽略(您不会看到请求被拒绝的通知)。

内存索引选项

InfluxDB 2.7 不支持 内存 (inmem) 索引。与 inmem 索引关联的以下 InfluxDB 1.x 配置选项在升级过程中被忽略

  • max-series-per-database
  • max-values-per-tag

交互式 shell

InfluxDB 2.7 influx CLI 包含一个交互式 InfluxQL shell,用于执行 InfluxQL 查询。要启动 InfluxQL shell

  1. 下载并安装 influx CLI
  2. 设置您的 influx CLI 身份验证凭据
  3. 运行 influx v1 shell 命令。

有关更多信息,请参阅

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

执行升级

如果您已考虑 以上指南 并准备好继续,请按照以下步骤将 InfluxDB 1.x 升级到 InfluxDB 2.7

  1. 下载 InfluxDB OSS 2.7。解压 InfluxDB 二进制文件并将它们放在您的 $PATH 中。

  2. 停止正在运行的 InfluxDB 1.x 实例。在升级之前制作所有 1.x 数据的备份副本

    cp -R .influxdb/ .influxdb_bak/
    
  3. 使用 influxd version 确保您正在从命令行运行 InfluxDB 2.7influxd upgrade 命令仅在 InfluxDB 2.7 中可用。

  4. 如果您的 1.x 配置文件位于 默认位置,请运行

    influxd upgrade
    

    升级 .deb 软件包

    .deb 软件包安装时,InfluxDB 1.x 和 2.x 在 influxdb 用户下运行。如果您已从 .deb 软件包安装了这两个版本,请以 influxdb 用户身份运行升级命令

    sudo -u influxdb influxd upgrade
    

    如果您的 1.x 配置文件不在默认位置,请运行

    influxd upgrade --config-file <path to v1 config file>
    

    要将升级后的 2.7 配置文件存储在自定义位置,请包含 --v2-config-path 标志

    influxd upgrade --v2-config-path <destination path for v2 config file>
    
  5. 按照提示设置新的 InfluxDB 2.7 实例。

    Welcome to InfluxDB 2.7 upgrade!
    Please type your primary username: <your-username>
    
    Please type your password:
    
    Please type your password again:
    
    Please type your primary organization name: <your-org>
    
    Please type your primary bucket name: <your-bucket>
    
    Please type your retention period in hours.
    Or press ENTER for infinite:
    
    You have entered:
      Username:          <your-username>
      Organization:      <your-org>
      Bucket:            <your-bucket>
      Retention Period:  infinite
    Confirm? (y/n): y
    

升级的输出打印到标准输出。它也保存(用于故障排除和调试)在当前目录中,到一个名为 upgrade.log 的文件中,该文件位于运行 influxdb upgrade 的用户的 home 目录中。

升级后

验证 1.x 用户是否已迁移到 2.7

要验证 1.x 用户是否已成功迁移到 2.7,请运行 influx v1 auth list

为外部客户端添加授权

如果您的 InfluxDB 1.x 实例未启用身份验证,并且 influx v1 auth list 未返回任何用户,则连接到您的 1.x 实例的外部客户端将无法访问需要身份验证的 InfluxDB 2.7

为了使这些外部客户端与 InfluxDB 2.7 一起工作

  1. 手动创建 1.x 兼容的授权.
  2. 更新客户端配置以使用与您的 1.x 兼容授权关联的用户名和密码。

此页面是否对您有帮助?

感谢您的反馈!


Flux 的未来

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

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

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

有关更多信息,请查看