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