TSDB for InfluxDB®历史数据迁移方案
2026年10月23日,TSDB for InfluxDB®将正式退市。为确保您的正常使用,请在退市之前尽快完成数据迁移。本文将为您详细介绍TSDB for InfluxDB®历史数据迁移方案。
关于TSDB for InfluxDB®退市详情,请参见【通知】2026年10月23日时序数据库 InfluxDB® 版退市。
(推荐)迁移至Lindorm TSDB
云原生多模数据库 Lindorm时序引擎是一款高性能、低成本、稳定可靠的在线时序数据库引擎服务,提供高效读写、高压缩比存储、时序数据聚合计算、数据库内机器学习等能力。关于TSDB for InfluxDB®迁移至Lindorm TSDB的操作详情,请参见InfluxDB全量迁移至时序引擎。
迁移至自建InfluxDB
前提条件
TSDB for InfluxDB®实例版本已升级为最新版(1.8.14)。
已开通备份端口号:8088。
您可以通过阿里云工单系统提交工单,开通备份端口号。
需确保自建InfluxDB与TSDB for InfluxDB®实例的地域、可用区、实例规格、专有网络以及虚拟交换机相同。
本文以ECS环境为例,购买满足上述条件的ECS实例并安装V1.8.10版本的自建InfluxDB。详情请参见快速购买实例。
您可以阅读InfluxDB官网文档备份与恢复章节了解迁移流程。
注意事项
备份与恢复仅支持迁移历史数据,无法保证增量数据的迁移。因此,建议您将数据同时写入云TSDB for InfluxDB和自建InfluxDB后再迁移历史数据。
备份期间会额外占用存储空间,确保有2倍存储数据量以上的存储空间。
若当前实例内存水位负载超过80%,请升配后再进行备份与迁移。
按照Shard备份数据,备份需指定数据库、保留策略、Shard。
备份Backup
在已安装InfluxDB的ECS中执行如下命令。
influxd backup -portable \
-host ts-xxx.influxdata.tsdb.aliyuncs.com:8088 \
-db example_db \
-rp example_rp \
-shard 123 \
/root/tmp/influx_backup
参数介绍:
恢复Restore
在已安装InfluxDB的ECS中,执行如下命令,将数据恢复至临时数据库。
influxd restore -portable \ -db example_db \ -rp example_rp \ -shard 123 \ -newdb example_tmp_db \ /root/tmp/influx_backup
参数说明:
-db:备份的数据库名称。
-rp:备份的保留策略名称。
-shard:需要备份的分片ID。
newdb: 恢复的目标数据库。
数据备份所在的目标目录。
使用InfluxQL从临时数据库中查询数据并写回至目标数据库中。
SELECT * INTO "example_db"."example_rp".:MEASUREMENT FROM "example_tmp_db".autogen./.*/ GROUP BY *
删除临时数据库。
DROP DATABASE "example_tmp_db"
迁移至其他数据库
注意事项
查询一定要添加Tag过滤条件和时间过滤条件,否则大查询会造成实例不稳定。
导出CSV文件
您可以使用Influx-cli 工具(1.X版本)执行查询,将查询结果导出成CSV文件。
influx -ssl \
-host ts-xxx.influxdata.tsdb.aliyuncs.com \
-port 8086 \
-username "xxx" \
-password "xxx" \
-format "csv" \
-precision ms \
-database example_db \
-execute "select * from sensor" | \
> /root/tmp/ouput.csv
导出的CSV文件第一列为name列(代表measurement),若不需要该列则使用如下命令。
influx -ssl \
-host ts-xxx.influxdata.tsdb.aliyuncs.com \
-port 8086 \
-username "xxx" \
-password "xxx" \
-format "csv" \
-precision ms \
-database example_db \
-execute "select * from sensor" | \
sed -r 's/^[^,]+,//' | \
> /root/tmp/ouput.csv
导入至其他数据库
通过开源工具或写程序将CSV格式文件导入至其他数据库。示例如下。
示例1:导入至Lindorm TSDB
使用Influx-cli 工具(1.X版本)导出TSDB for InfluxDB®实例的数据。
将precision指定为ms或rfc3339,并去除measurement列。
influx -ssl \ -host ts-xxx.influxdata.tsdb.aliyuncs.com \ -port 8086 \ -username "xxx" \ -password "xxx" \ -format "csv" \ -precision ms \ -database example_db \ -execute "select * from sensor" | \ sed -r 's/^[^,]+,//' | \ > /root/tmp/ouput.csv
在Lindorm TSDB上创建目标数据库和目标表(需提前创建所有字段)。
通过Lindorm-cli导入CSV文件至目标数据库的目标表中。
lindorm-cli -url jdbc:lindorm:tsdb:url=http://ld-xxx-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242 \
-format=csv \
-input /root/tmp/ouput.csv \
-database example_db \
-table example_table
示例2:导入至自建InfluxDB
下载以下工具。
包含在InfluxDB发布包中:Influx-cli(1.X 版本)
单独发布包: Influx-cli(2.X 版本)
使用 Influx-cli(1.X 版本)工具导出数据。
influx -ssl \ -host ts-xxx.influxdata.tsdb.aliyuncs.com \ -port 8086 \ -username "xxx" \ -password "xxx" \ -format "csv" \ -database example_db \ -execute "select * from sensor" | \ > /root/tmp/ouput.csv
使用Influx-cli(2.X 版本)工具将CSV文件转换成行协议文件。详情请参见Write CSV data to InfluxDB。
influx write dryrun \ --format csv \ --header "name|measurement,time|dateTime,device_id|tag,humidity|long|0,region|tag,temperature|double|0.0" \ --skipHeader=1 \ -f /root/tmp/ouput.csv \ > /root/tmp/ouput.line
参数说明:
将行协议文件写入自建的1.X 版本InfluxDB。