Cloud SQL への同種の PostgreSQL 移行の場合、Database Migration Service は移行先の Cloud SQL for PostgreSQL インスタンスに接続し、継続的な移行プロセスを管理します。移行先インスタンスは移行元データベースへの接続を確立し、Database Migration Service はエンドツーエンドのデータ パイプラインをオーケストレートしてモニタリングします。
Cloud SQL への標準の同種 PostgreSQL 移行の場合、Database Migration Service は継続的な移行をサポートしています。継続的な移行では、初期データがスナップショット ダンプから読み込まれ、その後、論理デコードと pglogical 拡張機能を使用して、ソース データベースの write-ahead log(WAL)から継続的にデータ変更がレプリケートされます。継続的な
クイックスタート移行の場合、Database Migration Service は pgnative を使用します。
継続的な移行フェーズ
継続的な移行は、次のフェーズを順番に実行します。
標準的な移行
-
レプリケーションの設定とオーケストレーション: 移行ジョブを作成すると、Database Migration Service は、移行先の Cloud SQL for PostgreSQL インスタンスをレプリカとして機能するように構成し、
pglogical拡張機能を使用してレプリケーション サブスクリプションを確立します。既存の Cloud SQL インスタンスに移行する場合、Database Migration Service はインスタンスをデモートして外部レプリカとして構成します(データベースを読み取り専用モードにすることはありません)。 - 初期スナップショット フェーズ: 移行ジョブを開始すると、Database Migration Service は、移行元インスタンスで選択したデータベースの一貫したスナップショットを取得します。このプロセスでは、スナップショットの初期化中に短いテーブルロック(通常はテーブルあたり 10 秒未満)が発生します。移行元データベースは、プロセス全体で読み取りと書き込みを引き続き受け入れます。
- データ読み込みフェーズ: Database Migration Service は、移行元データベースから初期スナップショット データをストリーミングし、移行先の Cloud SQL for PostgreSQL インスタンスに読み込みます。
- 制約とインデックスの作成: 最初のデータ読み込みが完了すると、移行先インスタンスにテーブル制約(主キーと外部キーを含む)とセカンダリ インデックスが作成されます。データ読み込みを制約の作成から分離すると、データの取り込み速度が最適化されます。
-
変更データ キャプチャ(CDC)フェーズ: 制約が適用されると、Database Migration Service は継続的な CDC フェーズに入ります。CDC 中に、Database Migration Service は
pglogicalを使用して、移行元データベースの論理レプリケーション ストリームから継続的な DML 変更をキャプチャし、ほぼリアルタイムで移行先インスタンスに適用します。 - カットオーバーとプロモーション フェーズ: アプリケーション トラフィックを移行先インスタンスに切り替える準備ができたら、移行元データベースへの書き込みを停止し、レプリケーション ラグがゼロになったことを確認して、Database Migration Service でプロモーションを開始します。プロモート中、Database Migration Service は移行先インスタンスを移行元から切断し、レプリケーション スロットを削除して、移行先をスタンドアロンの読み取り/書き込み Cloud SQL for PostgreSQL プライマリ インスタンスに変換します。
クイック スタート移行
-
レプリケーションの設定とオーケストレーション: 移行ジョブを作成すると、Database Migration Service は Private Service Connect インターフェースを使用してプライベート IP 経由のネットワーク接続を自動的に設定します(プライベート接続構成、ネットワーク アタッチメント、サブネットを自動的に作成します)。ソース データベースと宛先データベースの間に、PostgreSQL の論理レプリケーション(
pgnativeを使用)を使用してレプリケーションを確立します。ソースにpglogical拡張機能をインストールしたり、宛先インスタンスを降格したりする必要はありません。宛先は、他のデータベースにトラフィックを処理するアクティブなインスタンスにできます。 - 初期スナップショット フェーズ: 移行ジョブを開始すると、Database Migration Service は、移行元データベース サーバーで選択されたデータベース(ジョブごとに最大 50 個のデータベースを移行)の一貫したスナップショットを取得します。移行元データベースは、プロセス全体で読み取りと書き込みを引き続き受け入れます。
- データ読み込みフェーズ: Database Migration Service は、プライベート接続を介して、初期スナップショット データを移行先の Cloud SQL for PostgreSQL インスタンスに直接ストリーミングします。移行先のデータベース オブジェクトには、Database Migration Service によって生成された( Google Cloud コンソールを使用する場合)か、Google Cloud CLI で指定された移行ユーザーの所有権が割り当てられます。
- 制約とインデックスの作成: 最初のデータ読み込みが完了すると、取り込みパフォーマンスを最大化しながらスキーマの忠実性を確保するために、移行先インスタンスにテーブル制約とセカンダリ インデックスが作成されます。
-
変更データ キャプチャ(CDC)フェーズ: 制約が適用されると、Database Migration Service は継続的な CDC フェーズに入ります。CDC 中に、Database Migration Service は
pgnativePostgreSQL 論理レプリケーション ストリームから進行中の DML 変更をストリーミングし、ほぼリアルタイムで移行先インスタンスに適用します。主キーのないテーブルの場合、テーブルのレプリカ ID がINDEXまたはFULLに構成されていると、UPDATEオペレーションとDELETEオペレーションを複製できます。 - カットオーバーとプロモーション フェーズ: アプリケーション トラフィックを移行先インスタンスに切り替える準備ができたら、移行元データベースへの書き込みを停止し、レプリケーション ラグがゼロに達したことを確認して、Database Migration Service でプロモーションを開始します。プロモーション中、Database Migration Service は CDC レプリケーションを完了し、レプリケーション スロットを終了して、移行パイプラインを切断します。これにより、移行先の Cloud SQL for PostgreSQL データベースはクライアント接続に対して完全に動作可能な状態になります。
次のステップ
Database Migration Service での PostgreSQL データと機能のサポートの詳細については、既知の制限事項をご覧ください。
移行の完全な手順については、Cloud SQL for PostgreSQL への移行を開始するをご覧ください。