将数据从 InfluxDB 1.x 迁移到 InfluxDB 集群
要将数据从 InfluxDB 1.x OSS 或企业实例迁移到 InfluxDB 集群,首先将数据导出为行协议,并将导出的数据写入 InfluxDB 数据库。
迁移之前
在您从 InfluxDB 1.x 迁移到 InfluxDB Clustered 之前,有一些由 TSM 存储引擎支持的架构设计实践在 InfluxDB 3 存储引擎中不被支持。具体来说,InfluxDB 3 强制执行以下架构限制:
- 您不能对标签和字段使用重复的名称。
- 默认情况下,测量最多可以包含250列,每列代表时间、字段或标签。
有关更多信息,请参见 模式限制。
如果您的模式不符合这些限制,您必须在迁移到 InfluxDB Clustered 之前更新您的模式。
可用工具
迁移过程使用以下工具:
influx_inspect工具:influx_inspect工具 与 InfluxDB 1.x OSS 和企业版一起打包。influxctl管理CLI.- v1 API
/write端点 或 v2 API/api/v2/write端点 和 API 客户端库。
迁移数据
将数据从您的 InfluxDB 1.x 实例导出为行协议。
使用InfluxDB 1.x
influx_inspect export工具将数据导出为 行协议并存储到文件中。 包括以下内容:- (必填)
-lponly标志用于导出不包含 InfluxQL DDL 或 DML 的行协议。 - (必需)
-out标志后跟输出文件的路径。 默认是~/.influxdb/export。 任何后续的导出命令,如果没有定义输出文件,将覆盖现有的导出文件。 -compress标志用于使用 gzip 压缩输出。-datadir标志,指定你的 InfluxDB 1.xdata目录的路径。 仅在data目录位于非默认位置时需要。 有关默认位置的信息,请参见 InfluxDB OSS 1.x 文件系统布局 或 InfluxDB Enterprise 1.x 文件系统布局。-waldir标志,指向您的 InfluxDB 1.xwal目录的路径。 只有在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查看更多导出命令示例:
- (必填)
为每个 InfluxDB 1.x 数据库和保留策略组合创建 InfluxDB 集群数据库。
如果来自 InfluxDB v1,数据库和保留策略的概念已合并为一个单一概念–数据库。保留策略不再是 InfluxDB 数据模型的一部分。然而,InfluxDB 集群确实支持 InfluxQL,这需要数据库和保留策略。请参见 InfluxQL DBRP 命名约定。
如果来自 InfluxDB v2、InfluxDB Cloud (TSM) 或 InfluxDB Cloud Serverless, 数据库 和 桶 是同义词。
使用
influxctl database create命令在您的 InfluxDB 集群中创建一个数据库。提供以下参数:
influxctl database create --retention-period 30d <DATABASE_NAME>要了解更多关于InfluxDB集群中的数据库信息,请查看 管理数据库。
为您的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"- 权限授予
将导出的行协议写入您的InfluxDB集群。
使用v1 API或v2 API端点将数据写入您的InfluxDB集群。
从以下选项中选择:
- 使用 v1 客户端库或 HTTP 客户端访问 v1 API
/write终端。 - 使用 v2 客户端库或 HTTP 客户端的 v2 API
/api/v2/write端点。
将每个导出文件写入目标数据库。
- 使用 v1 客户端库或 HTTP 客户端访问 v1 API