将 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。
要使用的工具
迁移过程使用以下工具
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迁移过来,数据库 和 bucket 是同义词。
使用
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
这个页面有帮助吗?
感谢您的反馈!