云 InfluxDB 数据迁出方案
云 TSDB for InfluxDB 即将退市,需要将现有数据迁出。本文介绍如何使用 InfluxDB 的 backup 和 restore 工具,将云实例中的历史数据按 Shard 逐步迁移至自建 InfluxDB 1.x。
2026 年 10 月 23 日,TSDB for InfluxDB® 将正式退市。为确保业务正常运行,请在退市之前尽快完成数据迁移。关于 TSDB for InfluxDB® 退市详情,请参见【通知】2026年10月23日时序数据库 InfluxDB® 版退市。
前提条件
将云 TSDB for InfluxDB 升级至 1.8.14 或以上版本。
通过阿里云工单系统提交工单,联系技术支持开通 8088 备份端口。
在相同地域、可用区、专有网络和虚拟交换机下购买相同规格的 ECS 机器,用于迁移和自建 InfluxDB。具体操作,请参见快速购买实例。
下载开源版 InfluxDB 1.8.10,并完成安装、启动和基础配置,用于自建目标库。
阅读 InfluxDB 官网文档备份与恢复章节,了解备份和恢复流程。
确认云 TSDB for InfluxDB 实例的可用存储空间不低于 40%。若可用存储空间不足 40%,请先扩大存储空间后再执行迁移操作。
确认云 TSDB for InfluxDB 实例的内存水位不超过 60%。若内存水位超过 60%,需要先升配后再执行备份与迁移。
注意事项
请确保 TSDB for InfluxDB 实例的内存水位和可用存储空间满足前提条件要求,备份操作会额外消耗实例的存储空间和内存,资源不足会导致备份失败并影响实例正常运行。
备份与恢复仅支持迁移历史数据,无法保证增量数据的迁移。建议将数据同时写入云 TSDB for InfluxDB 和自建 InfluxDB 后,再迁移历史数据。
备份文件会占用自建 InfluxDB 所在 ECS 的存储空间,建议预留 2 倍存储数据量以上的可用空间。
数据迁移采用按时间分片串行导入策略,即完成某一时间分片内整个数据库的全量数据迁移后,再启动下一个时间分片的迁移。
流程概览
数据迁移按 Shard 逐个执行,完整流程如下:
确认前提条件已满足。
通过
SHOW SHARDS获取所有 Shard 信息。选择一个 Shard,在 ECS 上执行
influxd backup将数据备份到本地。执行
influxd restore将备份数据恢复至自建 InfluxDB 的临时数据库。通过
SELECT INTO将临时数据库中的数据写入目标数据库。验证目标数据库中的数据完整性。
删除临时数据库。
对剩余 Shard 重复步骤 3~7,直到所有 Shard 迁移完成。
操作说明
查看 Shard 列表
在执行备份前,通过 InfluxQL 查看所有 Shard 的信息,确定需要迁移的 Shard 范围:
SHOW SHARDS从返回结果中获取每个 Shard 的 id、database 和 retention_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:8088、example_db、example_rp、123和/root/tmp/influx_backup需要按实际迁移范围替换。
恢复 restore
参考官网文档,将备份后的数据恢复至已存在的数据库。
在自建 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_db、example_rp、123、example_tmp_db和/root/tmp/influx_backup需要按实际备份内容替换。
使用 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。验证数据完整性。分别查询临时数据库和目标数据库的数据量,确认数据一致后再执行下一步。
SELECT COUNT(*) FROM "example_tmp_db"."example_rp"/.*/ SELECT COUNT(*) FROM "example_db"."example_rp"/.*/删除临时数据库。
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 不一致,建议根据目标数据库能力自行评估和验证。本文不提供特定数据库的迁移步骤。