Documentation

将数据从 InfluxDB 1.x 迁移到 InfluxDB 集群

要将数据从 InfluxDB 1.x OSS 或企业实例迁移到 InfluxDB 集群,首先将数据导出为行协议,并将导出的数据写入 InfluxDB 数据库。

迁移之前

在您从 InfluxDB 1.x 迁移到 InfluxDB Clustered 之前,有一些由 TSM 存储引擎支持的架构设计实践在 InfluxDB 3 存储引擎中不被支持。具体来说,InfluxDB 3 强制执行以下架构限制:

  • 您不能对标签和字段使用重复的名称。
  • 默认情况下,测量最多可以包含250列,每列代表时间、字段或标签。

有关更多信息,请参见 模式限制

如果您的模式不符合这些限制,您必须在迁移到 InfluxDB Clustered 之前更新您的模式。

修复重复的标签和字段名称

修复超过250列的总测量值

可用工具

迁移过程使用以下工具:

迁移数据

  1. 将数据从您的 InfluxDB 1.x 实例导出为行协议。

    使用InfluxDB 1.x influx_inspect export 工具将数据导出为 行协议并存储到文件中。 包括以下内容:

    • (必填) -lponly 标志用于导出不包含 InfluxQL DDL 或 DML 的行协议。
    • (必需) -out 标志后跟输出文件的路径。 默认是 ~/.influxdb/export任何后续的导出命令,如果没有定义输出文件,将覆盖现有的导出文件。
    • -compress 标志用于使用 gzip 压缩输出。
    • -datadir 标志,指定你的 InfluxDB 1.x data 目录的路径。 仅在 data 目录位于非默认位置时需要。 有关默认位置的信息,请参见 InfluxDB OSS 1.x 文件系统布局InfluxDB Enterprise 1.x 文件系统布局
    • -waldir 标志,指向您的 InfluxDB 1.x wal 目录的路径。 只有在 wal 目录位于非默认位置时才需要。 有关默认位置的信息,请参见 InfluxDB OSS 1.x 文件系统布局InfluxDB Enterprise 1.x 文件系统布局
    • -database 标志,指定要导出的数据库名称。 默认情况下,所有数据库都会被导出。
    • -retention 标志用于导出特定的保留策略。默认情况下,所有保留策略都会被导出。
    • -start 标志与RFC3339时间戳一起定义了导出的最早时间。 默认值是 1677-09-20T16:27:54-07:44
    • -end 标志和一个 RFC3339 时间戳,定义了导出的最晚时间。 默认值是 2262-04-11T16:47:16-07:00

    我们建议分别导出每个数据库和保留策略的组合,以便轻松将导出的数据写入对应的InfluxDB集群数据库。

    将数据库中的所有数据和保留策略导出到文件
    influx_inspect export \
      -lponly \
      -database example-db \
      -retention example-rp \
      -out path/to/export-file.lp
    
    查看更多导出命令示例:

    将所有数据导出到文件

    将所有数据导出到压缩文件

    在时间范围内导出数据到文件

    将数据库及其所有保留策略导出到文件

    将特定数据库和保留策略导出到文件

    非默认 datawal 目录导出所有数据

  2. 为每个 InfluxDB 1.x 数据库和保留策略组合创建 InfluxDB 集群数据库。

    如果来自 InfluxDB v1,数据库和保留策略的概念已合并为一个单一概念–数据库。保留策略不再是 InfluxDB 数据模型的一部分。然而,InfluxDB 集群确实支持 InfluxQL,这需要数据库和保留策略。请参见 InfluxQL DBRP 命名约定

    如果来自 InfluxDB v2、InfluxDB Cloud (TSM) 或 InfluxDB Cloud Serverless, 数据库 是同义词。

    查看示例1.x数据库和保留策略作为InfluxDB集群数据库

    使用influxctl database create 命令在您的 InfluxDB 集群中创建一个数据库

    提供以下参数:

    influxctl database create --retention-period 30d <DATABASE_NAME>
    

    要了解更多关于InfluxDB集群中的数据库信息,请查看 管理数据库

  3. 为您的InfluxDB集群数据库创建一个数据库令牌。

    使用influxctl token create 命令创建一个数据库令牌,并赋予写入权限给您的数据库。

    提供以下内容:

    • 权限授予
      • --read-database: 授予对数据库的读取访问权限
      • --write-database 授予对数据库的写入访问权限
    • 令牌描述
    influxctl token create \
      --read-database example-db \
      --write-database example-db \
      "Read/write token for example-db database"
    
  4. 将导出的行协议写入您的InfluxDB集群。

    使用v1 API或v2 API端点将数据写入您的InfluxDB集群。

    从以下选项中选择:

    将每个导出文件写入目标数据库。

    不支持 v2.x influx CLI

    请勿将 influx CLI 与 InfluxDB 集群一起使用。虽然它可能碰巧有效,但并不被官方支持。

    有关找到最适合您情况的工作流程的帮助, 联系支持



Flux的未来

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

阅读更多

InfluxDB 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

InfluxDB 3 核心,是我们新的开源产品。 它是一个用于时间序列和事件数据的实时数据引擎。 InfluxDB 3 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

有关如何开始的更多信息,请查看: