Cloud TSDB for InfluxDB はまもなく提供終了となり、既存のデータを移行する必要があります。このトピックでは、InfluxDB の backup および restore ツールを使用して、クラウドインスタンスからセルフホストの InfluxDB 1.x インスタンスに履歴データをシャードごとに移行する方法について説明します。
Cloud TSDB for InfluxDB® は 2026 年 10 月 23 日に正式に提供終了となります。サービスの中断を避けるため、提供終了日までにデータ移行を完了してください。提供終了の詳細については、「TSDB for InfluxDB® 提供終了に関するお知らせ」をご参照ください。
前提条件
-
お使いの Cloud TSDB for InfluxDB インスタンスをバージョン 1.8.14 以降にアップグレードする必要があります。
-
Alibaba Cloud チケットシステムからチケットを起票してテクニカルサポートに連絡し、バックアップポート 8088 を有効にする必要があります。
-
お使いの Cloud TSDB for InfluxDB インスタンスと同じリージョン、ゾーン、VPC、vSwitch に、同じ仕様の ECS インスタンスを購入する必要があります。この ECS インスタンスは、移行およびセルフホストの InfluxDB のホスティングに使用します。詳細については、「ECS インスタンスの作成」をご参照ください。
-
オープンソースの InfluxDB 1.8.10 をダウンロードし、インストール、起動、基本設定を完了し、セルフホストの移行先インスタンスとして準備する必要があります。
-
InfluxDB の公式ドキュメントの「バックアップとリストア」セクションを読み、バックアップとリストアのプロセスを理解してください。
-
Cloud TSDB for InfluxDB インスタンスの利用可能なストレージが 40% 以上であることを確認してください。バックアップ操作はインスタンス上の一時ストレージを占有します。空きストレージが不足している場合、バックアップが失敗し、通常のインスタンス操作に影響を与える可能性があります。
-
Cloud TSDB for InfluxDB インスタンスのメモリ使用量が 60% を超えていないことを確認してください。メモリ使用量が 60% を超える場合は、バックアップと移行を実行する前にインスタンス仕様をアップグレードしてください。
注意事項
-
バックアップとリストアでは、履歴データのみを移行します。バックアップ後に書き込まれた増分データは、移行が保証されません。履歴データを移行する前に、Cloud TSDB for InfluxDB とセルフホストの InfluxDB の両方に同時にデータを書き込むことを推奨します。
-
バックアップファイルは、セルフホストの InfluxDB をホストする ECS インスタンスのストレージ領域を占有します。データ量の少なくとも 2 倍のストレージ容量を確保してください。
-
データ移行では、タイムシャードによるシリアルインポート戦略を使用します。次のタイムシャードを開始する前に、1 つのタイムシャード内でデータベース全体の完全なデータ移行を完了してください。
ワークフローの概要
移行はシャードごとに行います。完全なワークフローは次のとおりです:
-
すべての前提条件が満たされていることを確認します。
-
SHOW SHARDSを実行して、すべてのシャードに関する情報を取得します。 -
シャードを選択し、ECS インスタンスで
influxd backupを実行してデータをローカルにバックアップします。 -
influxd restoreを実行して、セルフホストの InfluxDB インスタンス上の一時データベースにバックアップを復元します。 -
SELECT INTOを使用して、一時データベースから宛先データベースにデータを書き込みます。 -
移行先データベースのデータ整合性を検証します。
-
一時データベースを削除します。
-
すべてのシャードが移行されるまで、残りのシャードに対して手順 3 から 7 を繰り返します。
手順
シャードリストの表示
バックアップを実行する前に、次の InfluxQL ステートメントを実行して、すべてのシャードの情報を表示し、移行するシャードを決定します:
SHOW SHARDS
結果から、各シャードのid、database、およびretention_policy フィールドを取得します。これらのフィールドは、後続のバックアップコマンドでパラメーターとして使用されます。バックアップおよび復元操作は、各シャードで個別に実行する必要があります。
バックアップ
セルフホストの InfluxDB をホストする ECS インスタンスでバックアップコマンドを実行し、シャードごとにデータをバックアップします。バックアップごとにデータベース名、保持ポリシー名、シャード ID を指定する必要があります。
-
構文
influxd backup -portable \ -host <source instance VPC address:8088> \ -db <database name> \ -rp <retention policy name> \ -shard <shard ID> \ <backup directory> -
パラメーター
パラメーター
説明
-portableポータブルバックアップ形式を使用します。
-hostCloud TSDB for InfluxDB インスタンスの VPC エンドポイントとバックアップポートは、
ts-xxx:8088形式です。-dbバックアップするデータベースの名前。
-rpバックアップする保持ポリシーの名前。
-shardバックアップするシャードの ID です。
SHOW SHARDSを実行してシャード ID を取得します。<バックアップディレクトリ>バックアップファイルを保存するディレクトリです。例:
/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を実際の移行範囲に適した値に置き換えてください。
リストア
公式ドキュメントを参照して、既存のデータベースにデータをリストアしてください。
-
セルフホストの InfluxDB をホストする ECS インスタンスで、リストアコマンドを実行して一時データベースにデータをリストアします。
-
構文
influxd restore -portable \ -db <backed-up database name> \ -rp <backed-up retention policy name> \ -shard <shard ID> \ -newdb <temporary database name> \ <backup directory> -
パラメーター
パラメーター
説明
-portableポータブルバックアップ形式を読み取ります。
-dbバックアップされたデータベースの名前。
-rpバックアップされた保持ポリシーの名前。
-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をバッチで実行してください。-- 'cpu' というメジャーメントのデータをコピーする例 SELECT * INTO "example_db"."example_rp"."cpu" FROM "example_tmp_db"."example_rp"."cpu" GROUP BY *
/.*/は、すべてのメジャーメントに一致する InfluxQL の正規表現構文です。 -
-
データ整合性を検証します。一時データベースと移行先データベースの両方で、行数をクエリします。次の手順に進む前に、データが一致していることを確認してください。
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:Cloud TSDB for InfluxDB インスタンスの仕様を確認するにはどうすればよいですか?
A: TSDB コンソールにログインし、[インスタンス詳細] ページに移動します。[設定情報] セクションで、ストレージ容量、 CPU、データベースメモリ、ディスクタイプ、エンジンバージョンなどのインスタンスの仕様を確認できます。
-
Q:インスタンスにまだ読み書きトラフィックがあるかどうかを判断するにはどうすればよいですか?
A: TSDB コンソールにログインし、[インスタンスモニタリング] ページに移動します。[エンジンモニタリング] を選択します。[秒間書き込みデータポイント数] メトリックで書き込みリクエストがまだアクティブかどうか、[秒間クエリ数] メトリックでクエリリクエストがまだアクティブかどうかを確認します。
-
Q:別のデータベースに移行するにはどうすればよいですか?
A:まず、セルフホストの InfluxDB インスタンスに移行することを推奨します。移行コストが比較的低く、既存のデータモデル、クエリ言語、クライアントの使用パターンを維持できます。別のデータベースに移行する場合、データモデル、クエリ言語、時間精度、データ型、およびインポートツールが InfluxDB とは異なる場合があります。ターゲットデータベースの機能に基づいて移行を評価および検証してください。このトピックでは、特定のデータベースの移行手順は提供していません。