AWS DMS の同種データ移行での PostgreSQL データベースからのデータの移行 - AWS データベース移行サービス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS DMS の同種データ移行での PostgreSQL データベースからのデータの移行

同種データ移行 を使用して、セルフマネージド型 PostgreSQL データベースを RDS for PostgreSQL または Aurora PostgreSQL に移行できます。AWS DMS は、データ移行用のためのサーバーレス環境を作成します。AWS DMS はさまざまなネイティブ PostgreSQL データベースツールを使用して、さまざまなタイプのデータ移行に対応します。

[フルロード] タイプの同種データ移行の場合、AWS DMS は pg_dump を使用してソースデータベースからデータを読み取り、サーバーレス環境にアタッチされているディスクに保存します。すべてのソースデータの読み取りを完了した後、AWS DMS はターゲットデータベースの pg_restore を使用してデータを復元します。

[フルロードと変更データキャプチャ (CDC)] タイプの同種データ移行の場合、AWS DMS は pg_dump を使用し、ソースデータベースからテーブルなしでスキーマオブジェクトを読み取り、サーバーレス環境にアタッチされているディスクに保存します。次に、ターゲットデータベースの pg_restore を使用してスキーマオブジェクトを復元します。AWS DMS が pg_restore プロセスを完了した後、Initial Data Synchronization オプションを使用して論理レプリケーションのパブリッシャーモデルとサブスクライバーモデルに自動的に切り替え、最初のテーブルデータをソースデータベースからターゲットデータベースに直接コピーし、継続的なレプリケーションを開始します。このモデルでは、単一または複数のサブスクライバーがパブリッシャノード上の単独または複数のパブリケーションにサブスクライブします。

変更データキャプチャ (CDC) タイプの同種データ移行の場合、AWS DMS がレプリケーションを開始するには、ネイティブ開始点が必要です。ネイティブ開始点を指定すると、AWS DMS はその時点からの変更をキャプチャします。または、データ移行設定で [すぐに] を選択すると、実際のデータ移行の開始時にレプリケーションの開始点を自動的にキャプチャできます。

注記

CDC のみの移行を正常に実行するには、ソースデータベースのすべてのスキーマとオブジェクトがターゲットデータベースに既に存在している必要があります。ただし、ターゲットにはソースには存在しないオブジェクトが含まれている場合があります。

次のコード例を使用すると、PostgreSQL データベースのネイティブ開始点を取得できます。

select confirmed_flush_lsn from pg_replication_slots where slot_name=‘migrate_to_target';

このクエリは、PostgreSQL データベースの pg_replication_slots ビューを使用してログシーケンス番号 (LSN) の値を取得します。

AWS DMS が PostgreSQL の同種データ移行のステータスを [停止済み][失敗][削除済み] に変更しても、パブリッシャーとレプリケーションは削除されません。移行を再開しない場合は、次のコマンドを使用してレプリケーションスロットとパブリッシャーを削除します。

SELECT pg_drop_replication_slot('migration_subscriber_{ARN}'); DROP PUBLICATION publication_{ARN};

次の図は、AWS DMS で同種データ移行を使用して PostgreSQL データベースを RDS for PostgreSQL または Aurora PostgreSQL に移行するプロセスを説明しています。

DMS 同種データ移行を使用した PostgreSQL データ移行のアーキテクチャ図

同種データ移行のソースとしての PostgreSQL データベースの使用のベストプラクティス

  • FLCDC タスクのサブスクライバー側の初期データ同期を高速化するには、max_logical_replication_workersmax_sync_workers_per_subscription を調整する必要があります。これらの値を増加させると、テーブルの同期速度が向上します。

    • max_logical_replication_workers – 論理レプリケーションワーカーの最大数を指定します。これには、サブスクライバー側の適用ワーカーとテーブル同期ワーカーの両方が含まれます。

    • max_sync_workers_per_subscriptionmax_sync_workers_per_subscription を増加させると、テーブルあたりのワーカー数ではなく、並列に同期されているテーブルの数にのみ影響があります。

    注記

    max_logical_replication_workersmax_worker_processes を超えず、max_sync_workers_per_subscriptionmax_logical_replication_workers 以下である必要があります。

  • 大きなテーブルを移行する場合、選択ルールを使用して別々のタスクに分割することを検討してください。例えば、大きなテーブルを個別のタスクに分割し、小さなテーブルを別の単一のタスクに分割できます。

  • サブスクライバー側のディスクと CPU の使用率をモニタリングして、最適なパフォーマンスを維持します。