トラフィックを Firestore に移行する
このページでは、移行をモニタリングし、アプリケーションのダウンタイムを最小限に抑えるためにトラフィックを切り替えるタイミングを判断する、移行プロセスの最終段階について説明します。
手順は以下のとおりです。
- データ移行中にエラーが発生したかどうかを確認します。データ型とドキュメント サイズに関する現在の既知の制限事項に注意してください。
- 移行元データベースへの書き込みトラフィックをシャットダウンするタイミングを決定します。
- すべてのデータ(最近の変更イベントを含む)が MongoDB 互換の Firestore データベースに複製された日時を特定します。この時点で、読み取りトラフィックを新しい宛先にリダイレクトしても安全です。
- すべてのアプリケーション ワークロードが Firestore からのみデータを読み取るようになったら、MongoDB 互換の Firestore データベースへの書き込みトラフィックを有効にして転送しても安全です。
移行完了のマイルストーンを確認する
このセクションの手順では、 Google Cloud コンソール内の Dataflow へのアクセスが必要です。
Google Cloud コンソールで、[Dataflow] ページに移動します。
ソース データベースがすべての読み取り / 書き込みトラフィックを受信している
Datastream パイプラインと Dataflow パイプラインの両方を開始した後も、ソース データベースは読み取りトラフィックと書き込みトラフィックの両方を受信し続ける必要があります。次のマイルストーンを使用して、移行を次のステップに進めるタイミングを判断できます。
Dataflow パイプラインのトランザクション書き込みイベント ステップで、データのバックログの処理が停止し、スループットがソース データベースのアクティブ トラフィックと一致する低い定常状態に低下します。
Datastream の [モニタリング] タブのデータ更新頻度は最小限であり、ソース データベースで進行中のトラフィックに非常に近い値になっています。
データ転送がこの定常状態に達したら、次のステップに進みます。
移行元データベースへの書き込みトラフィックをシャットダウンする
Datastream ストリームが一括バックフィルを完了し、Dataflow テンプレートがソース データベースのライブ変更に対してのみ一定の速度でトランザクション書き込みを行っていることを確認したら、カットオーバー プロセスを開始できます。このプロセスでは、残りのすべてのトラフィックを MongoDB 互換のターゲット Firestore データベースに複製するために、わずかなダウンタイムが必要になります。
MongoDB 互換の移行元データベースへのすべての書き込みトラフィックを停止します。アプリケーションの要件と機能によっては、ソース データベースへの読み取りトラフィックを引き続き許可することが望ましい場合があります。
Datastream のスループットとログ、Dataflow のスループット、データ遅延、ログをモニタリングして、最後の書き込みトラフィックが処理されたことを確認します。
デッドレター キューを検査します。移行中に宛先データベースに書き込めなかったドキュメントがあるかどうかを判断し、移行を続行するかどうかを決定します。
読み取りトラフィックを Firestore に移行する
保留中のすべての変更ストリーム イベントが Firestore に複製されると、両方のデータベースにまったく同じデータが含まれます。これで、読み取りトラフィック、書き込みトラフィックの順に転送できます。
前の手順で MongoDB 互換の移行元データベースへの読み取りトラフィックを許可した場合:
- 読み取りトラフィックを転送します。
- MongoDB 互換のソース データベースに元々接続されていたすべてのサービスが、MongoDB 互換の Firestore データベースから読み取りを実行するように更新されていることを確認します。
書き込みトラフィックを Firestore に移行する
前の手順が完了したら、アプリケーションの書き込みトラフィックを Firestore に直接リダイレクトしても安全です。
移行パイプラインを停止する
これで移行は完了です。これで、Datastream ストリームと Dataflow ジョブを停止できます。
Datastream ストリームを一時停止します。
gcloud datastream streams update "$DATASTREAM_NAME" \
--location="$LOCATION" \
--state=PAUSED \
--update-mask=state
Dataflow パイプラインをシャットダウンするには:
現在のすべてのジョブを一覧表示します。
gcloud dataflow jobs list --region="$LOCATION"
出力には Dataflow ジョブのリストが表示されます。
ジョブのリストで、
DATAFLOW_START_TIME
環境変数で指定したタイムスタンプを含むNAME
値を見つけます。形式:
dataflow-mongodb-to-firestore-DATAFLOW_START_TIME
。例:dataflow-mongodb-to-firestore-20250514173638
対応する
JOB_ID
を取得します。例:2025-05-14_17_36_39-10772223470853954680
。このジョブ ID のドレイン コマンドを実行します。
gcloud dataflow jobs drain \ JOB_ID \ --region="$LOCATION"
例:
gcloud dataflow jobs drain \ 2025-05-14_17_36_39-10772223470853954680 \ --region="$LOCATION"
次のステップ
トラブルシューティングのヒントについては、移行のトラブルシューティングをご覧ください。