多くの場合、移行は複雑かつ時間がかかります。データの移行とカットオーバー後に、パフォーマンスの不整合や問題が発生することもあります。
移行中にエラーが発生した場合に影響が大きくならないよう、フォールバック メカニズムを組み込み、ダウンタイムを最小限に抑えてソース データベースに戻せるようにすることをおすすめします。
リバース レプリケーションを使用すると、Spanner に書き込まれたデータをソース データベースにレプリケートしてフォールバックできます。フォールバックが必要な場合は、リバース レプリケーションを使用して、アプリケーションをソース データベースにポイントし、大幅なダウンタイムなしでリクエストの処理を続行できます。
リバース レプリケーション プロセスでは、次の処理を行う必要があります。
- データ型やコンテンツへの変更を処理する。
- 移行中に行われた変換を元に戻す。
- ソース データベースのシャーディング スキームを考慮して、データを適切な宛先に push する。
リバース レプリケーション フローを構築する際は、次の大まかなアプローチを検討してください。
- Spanner で発生した変更を読み取る。
- (省略可)リバース レプリケーションを有効にする前に、転送変更データ キャプチャ(CDC)移行を無効にする。
- Spanner は分散型データベースであるため、ソース データベースに書き込む前に、すべての変更をキャプチャして一時的に並べ替える。
- データをソース データベースに書き込む。