文档文档

将数据从 InfluxDB 1.x 迁移到 InfluxDB Clustered

要将数据从 InfluxDB 1.x OSS 或 Enterprise 实例迁移到 InfluxDB Clustered,请将数据导出为 Line Protocol,并将导出的数据写入到 InfluxDB 数据库。

迁移前准备

在从 InfluxDB 1.x 迁移到 InfluxDB Clustered 之前,TSM 存储引擎支持的某些模式设计实践在 InfluxDB 3 存储引擎中不受支持。具体来说,InfluxDB 3 强制执行以下模式限制

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

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

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

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

修复 measurement 中超过 250 列总数的情况

使用的工具

迁移过程使用以下工具

迁移数据

  1. 从您的 InfluxDB 1.x 实例导出数据为 Line Protocol。

    使用 InfluxDB 1.x influx_inspect export 实用程序 将数据导出为 Line Protocol 并将其存储在文件中。包括以下内容

    • 必需-lponly 标志,用于导出 Line Protocol,而不包含 InfluxQL DDL 或 DML。
    • 必需)带有输出文件路径的 -out 标志。默认值为 ~/.influxdb/export任何后续没有定义输出文件的导出命令都将覆盖现有的导出文件。
    • -compress 标志,用于使用 gzip 压缩输出。
    • 带有 InfluxDB 1.x data 目录路径的 -datadir 标志。仅当 data 目录位于非默认位置时才需要。有关默认位置的信息,请参阅 InfluxDB OSS 1.x 文件系统布局InfluxDB Enterprise 1.x 文件系统布局
    • 带有 InfluxDB 1.x wal 目录路径的 -waldir 标志。仅当 wal 目录位于非默认位置时才需要。有关默认位置的信息,请参阅 InfluxDB OSS 1.x 文件系统布局InfluxDB Enterprise 1.x 文件系统布局
    • 带有要导出的特定数据库名称的 -database 标志。默认情况下,导出所有数据库。
    • 带有要导出的特定保留策略的 -retention 标志。默认情况下,导出所有保留策略。
    • 带有 RFC3339 时间戳的 -start 标志,用于定义要导出的最早时间。默认值为 1677-09-20T16:27:54-07:44
    • 带有 RFC3339 时间戳的 -end 标志,用于定义要导出的最晚时间。默认值为 2262-04-11T16:47:16-07:00

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

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

    将所有数据导出到文件

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

    将时间范围内的数据库导出到文件

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

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

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

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

    如果来自 InfluxDB v1,数据库和保留策略的概念已合并为一个概念——数据库。保留策略不再是 InfluxDB 数据模型的一部分。但是,InfluxDB Clustered 确实支持 InfluxQL,它需要数据库和保留策略。请参阅 InfluxQL DBRP 命名约定

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

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

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

    提供以下参数

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

    要了解有关 InfluxDB Clustered 中数据库的更多信息,请参阅 管理数据库

  3. 为写入您的 InfluxDB Clustered 数据库创建数据库令牌。

    使用 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. 将导出的 Line Protocol 写入到您的 InfluxDB 集群。

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

    从以下选项中选择

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

    不支持 v2.x influx CLI

    不要将 influx CLI 与 InfluxDB Clustered 一起使用。虽然它可能碰巧可以工作,但它不是官方支持的。

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


此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

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

阅读更多

InfluxDB 3 开源版本现已公开发布 Alpha 版

InfluxDB 3 开源版本现已可用于 Alpha 测试,根据 MIT 或 Apache 2 许可授权。

我们正在发布两个产品作为 Alpha 版的一部分。

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

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