将数据从 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 之前更新您的模式。
使用的工具
迁移过程使用以下工具
influx_inspect
实用程序:influx_inspect
实用程序 与 InfluxDB 1.x OSS 和 Enterprise 打包在一起。influxctl
admin CLI.- v1 API
/write
端点 或 v2 API/api/v2/write
端点 和 API 客户端库。
迁移数据
从您的 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
查看更多导出命令示例
- (必需)
为每个 InfluxDB 1.x 数据库和保留策略组合创建 InfluxDB Clustered 数据库。
如果来自 InfluxDB v1,数据库和保留策略的概念已合并为一个概念——数据库。保留策略不再是 InfluxDB 数据模型的一部分。但是,InfluxDB Clustered 确实支持 InfluxQL,它需要数据库和保留策略。请参阅 InfluxQL DBRP 命名约定。
如果来自 InfluxDB v2、InfluxDB Cloud (TSM) 或 InfluxDB Cloud Serverless,数据库和 bucket 是同义词。
使用
influxctl database create
命令 在您的 InfluxDB 集群中 创建一个数据库。提供以下参数
influxctl database create --retention-period 30d <DATABASE_NAME>
要了解有关 InfluxDB Clustered 中数据库的更多信息,请参阅 管理数据库。
为写入您的 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"
- 权限授予
将导出的 Line Protocol 写入到您的 InfluxDB 集群。
使用 v1 API 或 v2 API 端点将数据写入到您的 InfluxDB 集群。
从以下选项中选择
- 带有 v1 客户端库或 HTTP 客户端的 v1 API
/write
端点。 - 带有 v2 客户端库或 HTTP 客户端的 v2 API
/api/v2/write
端点。
将每个导出文件写入到目标数据库。
不支持 v2.x influx CLI
不要将
influx
CLI 与 InfluxDB Clustered 一起使用。虽然它可能碰巧可以工作,但它不是官方支持的。如需帮助找到最适合您情况的工作流程,请联系支持。
- 带有 v1 客户端库或 HTTP 客户端的 v1 API
此页是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB Clustered 和本文档的反馈和错误报告。要获得支持,请使用以下资源
拥有年度合同或支持合同的客户可以联系 InfluxData 支持。