雲 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 不一致,建議根據目標資料庫能力自行評估和驗證。本文不提供特定資料庫的遷移步驟。