您可以使用 Outflux 工具从 InfluxDB 迁移数据到 Timescale。Outflux 是 Timescale 构建的开源工具,用于快速、无缝的迁移。它将导出的数据直接管道传输到 Timescale,并管理模式发现、验证和创建。

重要提示

Outflux 适用于早期版本的 InfluxDB。它不适用于 InfluxDB 版本 2 及更高版本。

在开始之前,请确保您拥有

  • 一个正在运行的 InfluxDB 实例以及连接到它的方法。
  • Timescale 的安装以及连接到它的方法。
  • InfluxDB 实例中的数据。

要从 Outflux 导入数据,请按照以下步骤操作

  1. 安装 Outflux
  2. 发现、验证和传输模式到 Timescale(可选)
  3. 迁移数据到 Timescale

从 GitHub 仓库安装 Outflux。有适用于 Linux、Windows 和 MacOS 的构建版本。

  1. 转到 Outflux 仓库的发布部分
  2. 下载适用于您平台的最新压缩 tarball 文件。
  3. 将其解压到首选位置。
注意

如果您希望从源代码构建 Outflux,请参阅 Outflux README 获取说明。

要获取有关 Outflux 的帮助,请从安装目录运行 ./outflux --help

Outflux 可以

  • 发现 InfluxDB measurement 的模式
  • 验证是否存在可以容纳传输数据的 Timescale 表
  • 如果不存在有效的表,则创建新表以满足模式要求
注意

Outflux 的 migrate 命令在一个步骤中完成模式传输和数据迁移。有关更多信息,请参阅迁移部分。如果您想独立于数据迁移验证和传输您的模式,请使用本节。

要将您的模式从 InfluxDB 传输到 Timescale,请运行 outflux schema-transfer

outflux schema-transfer <DATABASE_NAME> <INFLUX_MEASUREMENT_NAME> \
--input-server=http://localhost:8086 \
--output-conn="dbname=tsdb user=tsdbadmin"

要传输数据库中的所有 measurement,请省略 measurement 名称参数。

注意

此示例使用 postgres 用户和数据库连接到 Timescale 数据库。有关其他连接选项和配置,请参阅 Outflux Github 仓库

Outflux 的 schema-transfer 可以使用 4 种模式策略之一

  • ValidateOnly:检查是否安装了 Timescale,以及指定的数据库是否具有正确分区的超表以及正确的列,但不执行修改
  • CreateIfMissing:运行与 ValidateOnly 相同的检查,并创建和正确分区任何缺失的超表
  • DropAndCreate:删除任何与 measurement 同名的现有表,并创建一个新的超表并正确分区
  • DropCascadeAndCreate:执行与 DropAndCreate 相同的操作,并且如果存在与 measurement 同名的现有表,则还执行级联表删除

您可以通过在 schema-transfer 命令中传递一个值给 --schema-strategy 选项来指定您的模式策略。默认策略是 CreateIfMissing

默认情况下,InfluxDB 中的每个 tag 和 field 都被视为 Timescale 表中的单独列。要将 tag 和 field 作为单个 JSONB 列传输,请使用标志 --tags-as-json

使用 migrate 命令一次性传输您的模式和迁移您的数据。

例如,运行

outflux migrate <DATABASE_NAME> <INFLUX_MEASUREMENT_NAME> \
--input-server=http://localhost:8086 \
--output-conn="dbname=tsdb user=tsdbadmin"

模式策略和连接选项与 schema-transfer 相同。有关更多信息,请参阅发现、验证和传输模式

此外,outflux migrate 还接受以下标志

  • --limit:传递一个数字 N--limit 以仅导出前 N 行,按时间排序。
  • --fromto:传递一个时间戳给 --from--to 以指定要迁移的数据的时间窗口。
  • chunk-size:更改传输数据块的大小。数据以默认大小为 15000 的块从 InfluxDB 服务器拉取。
  • batch-size:更改插入批次中的行数。数据以默认 8000 行的批次插入到 Timescale 中。

有关更多标志,请参阅 outflux migrate 的 Github 文档。或者,参阅命令行帮助

outflux migrate --help

关键词

在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页