云 InfluxDB 数据迁出方案

更新时间:
复制 MD 格式

云 TSDB for InfluxDB 即将退市,需要将现有数据迁出。本文介绍如何使用 InfluxDB 的 backup 和 restore 工具,将云实例中的历史数据按 Shard 逐步迁移至自建 InfluxDB 1.x。

重要

2026 年 10 月 23 日,TSDB for InfluxDB® 将正式退市。为确保业务正常运行,请在退市之前尽快完成数据迁移。关于 TSDB for InfluxDB® 退市详情,请参见【通知】20261023日时序数据库 InfluxDB® 版退市

前提条件

  1. 将云 TSDB for InfluxDB 升级至 1.8.14 或以上版本。

  2. 通过阿里云工单系统提交工单,联系技术支持开通 8088 备份端口。

  3. 在相同地域、可用区、专有网络和虚拟交换机下购买相同规格的 ECS 机器,用于迁移和自建 InfluxDB。具体操作,请参见快速购买实例

  4. 下载开源版 InfluxDB 1.8.10,并完成安装、启动和基础配置,用于自建目标库。

  5. 阅读 InfluxDB 官网文档备份与恢复章节,了解备份和恢复流程。

  6. 确认云 TSDB for InfluxDB 实例的可用存储空间不低于 40%。若可用存储空间不足 40%,请先扩大存储空间后再执行迁移操作。

  7. 确认云 TSDB for InfluxDB 实例的内存水位不超过 60%。若内存水位超过 60%,需要先升配后再执行备份与迁移。

注意事项

  • 请确保 TSDB for InfluxDB 实例的内存水位和可用存储空间满足前提条件要求,备份操作会额外消耗实例的存储空间和内存,资源不足会导致备份失败并影响实例正常运行。

  • 备份与恢复仅支持迁移历史数据,无法保证增量数据的迁移。建议将数据同时写入云 TSDB for InfluxDB 和自建 InfluxDB 后,再迁移历史数据。

  • 备份文件会占用自建 InfluxDB 所在 ECS 的存储空间,建议预留 2 倍存储数据量以上的可用空间。

  • 数据迁移采用按时间分片串行导入策略,即完成某一时间分片内整个数据库的全量数据迁移后,再启动下一个时间分片的迁移。

流程概览

数据迁移按 Shard 逐个执行,完整流程如下:

  1. 确认前提条件已满足。

  2. 通过 SHOW SHARDS 获取所有 Shard 信息。

  3. 选择一个 Shard,在 ECS 上执行 influxd backup 将数据备份到本地。

  4. 执行 influxd restore 将备份数据恢复至自建 InfluxDB 的临时数据库。

  5. 通过 SELECT INTO 将临时数据库中的数据写入目标数据库。

  6. 验证目标数据库中的数据完整性。

  7. 删除临时数据库。

  8. 对剩余 Shard 重复步骤 3~7,直到所有 Shard 迁移完成。

操作说明

查看 Shard 列表

在执行备份前,通过 InfluxQL 查看所有 Shard 的信息,确定需要迁移的 Shard 范围:

SHOW SHARDS

从返回结果中获取每个 Shard 的 iddatabaseretention_policy 字段,作为后续备份命令的参数。需要对每个 Shard 分别执行备份和恢复操作。

备份 backup

在自建 InfluxDB 所在的 ECS 上执行备份命令,按 Shard 备份数据。备份需指定数据库、保留策略和 Shard ID。

  • 使用方式

    influxd backup -portable \
      -host <源实例 VPC 地址:8088> \
      -db <数据库名称> \
      -rp <保留策略名称> \
      -shard <Shard ID> \
      <备份目录>
  • 参数说明

    参数

    说明

    -portable

    使用 portable 备份格式。

    -host

    云 TSDB for InfluxDB 的 VPC 网络地址和备份端口,格式为 ts-xxx:8088

    -db

    需要备份的数据库名称。

    -rp

    需要备份的保留策略名称。

    -shard

    需要备份的 Shard ID,可通过 SHOW SHARDS 查看。

    <备份目录>

    备份文件保存目录,例如 /root/tmp/influx_backup

  • 示例

    influxd backup -portable \
      -host ts-xxx.influxdata.tsdb.aliyuncs.com:8088 \
      -db example_db \
      -rp example_rp \
      -shard 123 \
      /root/tmp/influx_backup
    说明

    示例中的 ts-xxx.influxdata.tsdb.aliyuncs.com:8088example_dbexample_rp123/root/tmp/influx_backup 需要按实际迁移范围替换。

恢复 restore

参考官网文档,将备份后的数据恢复至已存在的数据库

  1. 在自建 InfluxDB 所在的 ECS 上执行恢复命令,将数据恢复至临时数据库。

    • 使用方式

      influxd restore -portable \
        -db <备份的数据库名称> \
        -rp <备份的保留策略名称> \
        -shard <Shard ID> \
        -newdb <临时数据库名称> \
        <备份目录>
      
    • 参数说明

      参数

      说明

      -portable

      读取 portable 备份格式。

      -db

      备份的数据库名称。

      -rp

      备份的保留策略名称。

      -shard

      备份的 Shard ID。

      -newdb

      恢复的临时数据库名称。

      <备份目录>

      数据备份所在的目录,例如 /root/tmp/influx_backup

    • 示例

      influxd restore -portable \
        -db example_db \
        -rp example_rp \
        -shard 123 \
        -newdb example_tmp_db \
        /root/tmp/influx_backup
      示例中的 example_dbexample_rp123example_tmp_db/root/tmp/influx_backup 需要按实际备份内容替换。
  2. 使用 InfluxQL 从临时数据库中查询数据,并写入目标数据库。

    如果数据量较大,SELECT INTO 可能因查询超时导致数据不完整。执行前确认以下事项:

    • 如果启用了查询超时(即设置了 INFLUXDB_COORDINATOR_QUERY_TIMEOUT),将其调整为较大的值。InfluxDB 默认不设置查询超时。

    • 对于数据量较大的场景,建议按时间范围分批执行 SELECT INTO,避免单次查询超时。

      SELECT *
      INTO "example_db"."example_rp".:MEASUREMENT
      FROM "example_tmp_db"."example_rp"/.*/
      GROUP BY *
    /.*/ 为 InfluxQL 正则语法,表示匹配所有 measurement。
  3. 验证数据完整性。分别查询临时数据库和目标数据库的数据量,确认数据一致后再执行下一步。

    SELECT COUNT(*) FROM "example_tmp_db"."example_rp"/.*/
    SELECT COUNT(*) FROM "example_db"."example_rp"/.*/
  4. 删除临时数据库。

    DROP DATABASE "example_tmp_db";

常见问题

  • Q:备份恢复是否会迁移增量数据?

    A:不会自动迁移。influxd backup 只覆盖执行备份操作时刻的数据,不包含备份完成后的新增数据。建议将数据同时写入云 TSDB for InfluxDB 和自建 InfluxDB 后,再迁移历史数据。

  • Q:如何查看云 TSDB for InfluxDB 实例的规格?

    A:登录 TSDB 控制台,进入实例详情页面。在配置信息区域查看实例规格信息,包括存储容量、CPU、数据库内存、磁盘类型和引擎版本等。

  • Q:如何确定实例是否还有读写访问?

    A:登录 TSDB 控制台,进入实例监控页面,选择引擎监控。通过每秒写入数据点监控查看是否仍有写入请求,通过每秒查询量监控查看是否仍有查询请求。

  • Q:如何迁移到其他数据库?

    A:建议优先迁移到自建 InfluxDB,迁移成本相对较低,可以尽量保留现有数据模型、查询语言和客户端使用方式。迁移到其他数据库时,不同数据库的数据模型、查询语言、时间精度、数据类型和导入工具与 InfluxDB 不一致,建议根据目标数据库能力自行评估和验证。本文不提供特定数据库的迁移步骤。

参考文档