文档文档

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

要将 InfluxDB 1.x OSS 或 Enterprise 实例的数据迁移到 InfluxDB Clustered,请以行协议导出数据,并将导出的数据写入 InfluxDB 数据库。

在迁移之前

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

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

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

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

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

修复超过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迁移过来数据库bucket 是同义词。

    将示例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 v3增强和InfluxDB集群版现已全面上市

新功能包括更快的查询性能和管理工具,推动了InfluxDB v3产品线的进步。InfluxDB集群版现已全面上市。

InfluxDB v3性能和功能

InfluxDB v3产品线在查询性能方面取得了显著提升,并提供了新的管理工具。这些增强包括一个操作仪表板来监控您的InfluxDB集群健康,InfluxDB云专用中的单点登录(SSO)支持,以及针对令牌和数据库的新管理API。

了解新的v3增强


InfluxDB集群版全面上市

InfluxDB集群版现已全面上市,并为您在自管理堆栈中提供了InfluxDB v3的强大功能。

与我们讨论InfluxDB集群版