トラフィックを Firestore に移行する

このページでは、移行をモニタリングし、アプリケーションのダウンタイムを最小限に抑えるためにトラフィックを切り替えるタイミングを判断する、移行プロセスの最終段階について説明します。

手順は以下のとおりです。

  1. データ移行中にエラーが発生したかどうかを確認します。データ型とドキュメント サイズに関する現在の既知の制限事項に注意してください。
  2. 移行元データベースへの書き込みトラフィックをシャットダウンするタイミングを決定します。
  3. すべてのデータ(最近の変更イベントを含む)が MongoDB 互換の Firestore データベースに複製された日時を特定します。この時点で、読み取りトラフィックを新しい宛先にリダイレクトしても安全です。
  4. すべてのアプリケーション ワークロードが Firestore からのみデータを読み取るようになったら、MongoDB 互換の Firestore データベースへの書き込みトラフィックを有効にして転送しても安全です。

移行完了のマイルストーンを確認する

このセクションの手順では、 Google Cloud コンソール内の Dataflow へのアクセスが必要です。

Google Cloud コンソールで、[Dataflow] ページに移動します。

Dataflow に移動

ソース データベースがすべての読み取り / 書き込みトラフィックを受信している

Datastream パイプラインと Dataflow パイプラインの両方を開始した後も、ソース データベースは読み取りトラフィックと書き込みトラフィックの両方を受信し続ける必要があります。次のマイルストーンを使用して、移行を次のステップに進めるタイミングを判断できます。

  • Dataflow パイプラインのトランザクション書き込みイベント ステップで、データのバックログの処理が停止し、スループットがソース データベースのアクティブ トラフィックと一致する低い定常状態に低下します。

    トランザクション書き込みイベント

  • Datastream の [モニタリング] タブのデータ更新頻度は最小限であり、ソース データベースで進行中のトラフィックに非常に近い値になっています。

    データの鮮度

データ転送がこの定常状態に達したら、次のステップに進みます。

移行元データベースへの書き込みトラフィックをシャットダウンする

Datastream ストリームが一括バックフィルを完了し、Dataflow テンプレートがソース データベースのライブ変更に対してのみ一定の速度でトランザクション書き込みを行っていることを確認したら、カットオーバー プロセスを開始できます。このプロセスでは、残りのすべてのトラフィックを MongoDB 互換のターゲット Firestore データベースに複製するために、わずかなダウンタイムが必要になります。

  1. MongoDB 互換の移行元データベースへのすべての書き込みトラフィックを停止します。アプリケーションの要件と機能によっては、ソース データベースへの読み取りトラフィックを引き続き許可することが望ましい場合があります。

  2. Datastream のスループットとログ、Dataflow のスループット、データ遅延、ログをモニタリングして、最後の書き込みトラフィックが処理されたことを確認します。

  3. デッドレター キューを検査します。移行中に宛先データベースに書き込めなかったドキュメントがあるかどうかを判断し、移行を続行するかどうかを決定します。

読み取りトラフィックを Firestore に移行する

保留中のすべての変更ストリーム イベントが Firestore に複製されると、両方のデータベースにまったく同じデータが含まれます。これで、読み取りトラフィック、書き込みトラフィックの順に転送できます。

前の手順で MongoDB 互換の移行元データベースへの読み取りトラフィックを許可した場合:

  1. 読み取りトラフィックを転送します。
  2. MongoDB 互換のソース データベースに元々接続されていたすべてのサービスが、MongoDB 互換の Firestore データベースから読み取りを実行するように更新されていることを確認します。

書き込みトラフィックを Firestore に移行する

前の手順が完了したら、アプリケーションの書き込みトラフィックを Firestore に直接リダイレクトしても安全です。

移行パイプラインを停止する

これで移行は完了です。これで、Datastream ストリームと Dataflow ジョブを停止できます。

Datastream ストリームを一時停止します。

gcloud datastream streams update "$DATASTREAM_NAME" \
--location="$LOCATION" \
--state=PAUSED \
--update-mask=state

Dataflow パイプラインをシャットダウンするには:

  1. 現在のすべてのジョブを一覧表示します。

    gcloud dataflow jobs list --region="$LOCATION"
    

    出力には Dataflow ジョブのリストが表示されます。

  2. ジョブのリストで、DATAFLOW_START_TIME 環境変数で指定したタイムスタンプを含む NAME 値を見つけます。

    形式: dataflow-mongodb-to-firestore-DATAFLOW_START_TIME。例: dataflow-mongodb-to-firestore-20250514173638

  3. 対応する JOB_ID を取得します。例: 2025-05-14_17_36_39-10772223470853954680

  4. このジョブ ID のドレイン コマンドを実行します。

    gcloud dataflow jobs drain \
    JOB_ID \
    --region="$LOCATION"
    

    例:

    gcloud dataflow jobs drain \
    2025-05-14_17_36_39-10772223470853954680 \
    --region="$LOCATION"
    

次のステップ

トラブルシューティングのヒントについては、移行のトラブルシューティングをご覧ください。