クイック スタート移行を使用して AlloyDB for PostgreSQL に移行する


このページでは、AlloyDB for PostgreSQL への同種の PostgreSQL 移行でクイックスタート継続的移行を実行する方法について説明します。

概要

クイック スタート移行は、同種の PostgreSQL シナリオ向けの軽量な継続的移行フローです。クイック スタート移行を使用すると、Database Migration Service は、必要なコア ネットワーキング リソースと移行リソース(ネットワーク アタッチメント、サブネット、Private Service Connect インターフェースを使用したプライベート接続構成、接続プロファイル、継続的な移行ジョブ)を自動的に構成できます。

クイックスタート移行では、データを既存の AlloyDB for PostgreSQL クラスタに移動することも、移行の構成時に新しいクラスタを作成することもできます。クイック スタート移行は、次の場合に最適です。

  • カスタマイズされたデータダンプの並列処理設定を必要としない基本的な移行。
  • データベースをある Google Cloud プロジェクトから別のプロジェクトに移行する。クイックスタート移行を構成するときに、移行元とは異なるプロジェクトに移行先クラスタを作成し、別のプロジェクトの Virtual Private Cloud(VPC)ネットワークにネットワーク アタッチメントとサブネットを作成するように Database Migration Service を設定できます。
  • Google CloudVirtual Private Cloud(VPC)ネットワークにプライベート IP アドレスを持つソース(Compute Engine 上のセルフマネージド データベースや、プライベート ネットワーキングが有効になっている Cloud SQL for PostgreSQL インスタンスなど)から移行する。

    Google Cloud の外部でホストされているソースには、VPC ネットワーク内のプライベート IP アドレスでアクセスできるように、追加のネットワーク コンポーネント(Cloud VPN 接続など)が必要になる場合があります。

  • ソース データベースには、VPC ネットワークで割り当てられたプライベート IP アドレスが必要です。Database Migration Service は、Private Service Connect インターフェース(ネットワーク アタッチメント)を使用して移行元データベースに接続します。クイックスタート移行では、パブリック IP 接続はサポートされていません。

クイック スタート移行の詳細については、Database Migration Service のメイン ドキュメントの クイック スタート移行の概要をご覧ください。

始める前に

  1. クイックスタート移行がシナリオを完全にサポートできるかどうかを確認します。 クイックスタート移行の制限事項をご覧ください。
  2. Google Cloud コンソールのプロジェクト セレクタ ページで、 Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Database Migration Service、Compute Engine、Network Connectivity Center、AlloyDB for PostgreSQL の API を有効にします。

    API を有効にする

必要なロール

Database Migration Service を使用して AlloyDB for PostgreSQL へのクイックスタート移行を実行するために必要な権限を取得するには、関連するプロジェクトの移行に関与するアカウントに必要な Identity and Access Management(IAM)ロールを付与するよう管理者に依頼してください。ロールの付与の詳細については、IAM ドキュメントの アクセス権の管理をご覧ください。

ソース プロジェクトのロールと権限

ソース データベースが存在する Google Cloud プロジェクトの特定のアカウントに、次のロールを付与します。

  • 移行を実行するユーザー アカウントの場合: Compute ネットワーク管理者ロール(roles/compute.networkAdmin)
  • 宛先プロジェクトの Database Migration Service サービス アカウントの場合: Compute ネットワーク閲覧者(roles/compute.networkViewer)

    Database Migration Service サービス アカウントは、Database Migration Service API を有効にすると作成されます。このサービス アカウントに関連付けられたメールアドレスは自動的に生成され、変更できません。このメールアドレスの形式は次のとおりです。

    service-DESTINATION_PROJECT_NUMBER@gcp-sa-datamigration.

これらの事前定義ロールには、Database Migration Service を使用したクイックスタート移行の一環として、移行元データベース プロジェクトで接続を設定するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限(ソース)」セクションを開いてご確認ください。

必要な権限(ソース)

Database Migration Service を使用して同種のクイックスタート移行を実行するには、次の権限が必要です。

移行を実行するユーザー アカウントの場合:

  • compute.networks.*
  • compute.subnetworks.*
  • compute.networkAttachments.*
  • networkconnectivity.internalRanges.create
  • networkconnectivity.internalRanges.get
  • networkconnectivity.operations.get

宛先プロジェクトの Database Migration Service サービス アカウントの場合:

  • compute.networkAttachments.get

宛先プロジェクトのロールと権限

移行先データベースが存在する Google Cloud プロジェクトで移行を実行するユーザー アカウントに、次のロールを付与します。

これらの事前定義ロールには、Database Migration Service を使用したクイックスタート移行の一環として、移行先データベース プロジェクトに必要な移行コンポーネントを設定するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限(宛先)」セクションを開いてご確認ください。

必要な権限(宛先)

Database Migration Service を使用して同種のクイックスタート移行を実行するには、次の権限が必要です。

  • datamigration.*
  • alloydb.clusters.create
  • alloydb.clusters.get
  • alloydb.clusters.list
  • alloydb.clusters.update
  • alloydb.clusters.delete
  • alloydb.instances.create
  • alloydb.instances.get
  • alloydb.instances.list
  • alloydb.instances.update
  • alloydb.instances.delete
  • alloydb.instances.executeSql
  • alloydb.operations.get
  • alloydb.users.list
  • alloydb.users.get
  • alloydb.users.create
  • alloydb.users.update
  • alloydb.users.delete

ソース データベースの構成

ソース PostgreSQL データベースを構成する手順は次のとおりです。

  1. インスタンスに移行専用のユーザー アカウントを作成します。
    • Cloud SQL for PostgreSQL ソースについては、Cloud SQL ドキュメントの ユーザーを作成するをご覧ください。
    • その他のソースについては、データベース プロバイダのドキュメントまたは PostgreSQL のドキュメントの ユーザーの作成と管理をご覧ください。
  2. 移行専用のユーザー アカウントに必要な権限を割り当てます。移行するデータベースごとに次のコマンドを実行します。
    -- Grant the REPLICATION attribute
    ALTER ROLE MIGRATION_USER REPLICATION;
    
    -- Grant database-level permissions.
    -- Repeat for each database you want to migrate.
    GRANT CONNECT, CREATE ON DATABASE DATABASE_NAME TO MIGRATION_USER;
    
    -- Grant schema-level usage.
    -- Repeat for each schema in each database you want to migrate.
    GRANT USAGE ON SCHEMA SCHEMA_NAME TO MIGRATION_USER;

    次のように置き換えます。

    • MIGRATION_USER は、移行ユーザー アカウントの名前に置き換えます。
    • DATABASE_NAME は、移行するデータベースの名前に置き換えます。
    • SCHEMA_NAME は、移行するデータベースのスキーマの名前に置き換えます。
  3. 移行ユーザー アカウントには、移行するテーブルに対するオーナー権限が必要です。このレベルのアクセス権を付与するには、次のいずれかを行います。
    • Cloud SQL for PostgreSQL 以外のソースの場合のみ: 移行アカウントに SUPERUSER PostgreSQL ロールを割り当てます。
    • すべてのソースの場合: テーブルを所有するユーザー グループに移行ユーザー アカウントを追加します。次のコマンドを実行します。
      -- Grant table ownership.
      GRANT TABLE_OWNER_GROUP_NAME TO MIGRATION_USER;

      次のように置き換えます。

      • TABLE_OWNER_GROUP_NAME は、移行する各テーブルを所有するユーザー グループの名前に置き換えます。
      • MIGRATION_USER は、移行ユーザー アカウントの名前に置き換えます。
  4. 主キーのないテーブルの場合: Database Migration Service は、変更データ キャプチャ(CDC)フェーズで主キーのないテーブルの UPDATE オペレーションまたは DELETE オペレーションを複製しません。このようなオペレーションをレプリケーションに含める場合は、REPLICA IDENTITY を使用して主キーのないテーブルを変更します。
    ALTER TABLE TABLE_NAME REPLICA IDENTITY FULL;
    ALTER TABLE TABLE_NAME REPLICA IDENTITY USING INDEX INDEX_NAME;

    次のように置き換えます。

    • TABLE_NAME は、主キーのないテーブルの名前です。
    • INDEX_NAME は、主キーのないテーブルの行を追跡できる一意のインデックスです。
  5. データベース フラグを使用してレプリケーション設定を構成します。

    セルフマネージド ソース

    データベース フラグの変更を保存するには、データベースを完全に再起動する必要があります。次の例では、SQL クエリを使用してフラグ値を変更します。SQL クエリを直接実行できない場合は、これらのフラグを変更する手順について、プロバイダのドキュメントをご覧ください。

    1. wal_level パラメータを logical に設定します。次のコマンドを実行します。
      ALTER SYSTEM SET wal_level = 'logical';
    2. wal_sender_timeout パラメータを 0 に設定します。この値は、非アクティブなレプリケーション接続を終了するために使用するタイムアウト メカニズムを無効にします。次のコマンドを実行します。
      ALTER SYSTEM SET wal_sender_timeout = 0;
    3. max_replication_slots パラメータを使用して、レプリケーション スロットの最大数を構成します。このパラメータは、移行ジョブごとに移行するデータベースの数に、テーブル同期用の予約分を加えた値以上に設定する必要があります。

      たとえば、5 つのデータベースを移行し、移行元インスタンスに 2 つの移行ジョブが作成されている場合、レプリケーション スロットの数は 5 * 2 = 10 以上にする必要があります。これに、すでに使用されているレプリケーション スロットの数を加えます。

      このパラメータを設定するには、次のコマンドを実行します。

      ALTER SYSTEM SET max_replication_slots = NUMBER_OF_SLOTS;
      ここで、NUMBER_OF_SLOTS はレプリケーション スロットの最大数を表します。
    4. max_wal_senders パラメータを、少なくとも max_replication_slots と同じ値に、インスタンスですでに使用されている送信者の数を加えた値に構成します。

      たとえば、max_replication_slots パラメータが 10 に設定されていて、すでに 2 つの送信者を使用している場合、同時に実行される WAL 送信者プロセスの数は 10 + 2 = 12 になります。

      このパラメータを設定するには、次のコマンドを実行します。

      ALTER SYSTEM SET max_wal_senders = NUMBER_OF_SENDERS;
      ここで、NUMBER_OF_SENDERS は、同時に実行される WAL 送信者プロセスの数を表します。
    5. max_worker_processes は、移行するデータベースの数と、インスタンスですでに使用されている max_worker_processes の数の合計以上に設定します。このパラメータを設定するには、次のコマンドを実行します。
      ALTER SYSTEM SET max_worker_processes = NUMBER_OF_PROCESSES;
      ここで、NUMBER_OF_PROCESSES は移行されるデータベースの数を表します。

    Cloud SQL for PostgreSQL ソース

    Cloud SQL ソースの場合、 Google Cloud コンソールでデータベース フラグを構成します。設定を有効にするには、データベース フラグを変更した後にインスタンスを再起動する必要があります。Cloud SQL でデータベース フラグを設定する方法については、Cloud SQL ドキュメントの データベース フラグを構成するをご覧ください。

    1. cloudsql.logical_decoding フラグを on に設定します。 このフラグを有効にすると、設定を有効にするためにインスタンスの再起動が必要になります。
    2. wal_sender_timeout パラメータを 0 に設定します。この値は、非アクティブなレプリケーション接続を終了するために使用するタイムアウト メカニズムを無効にします。
    3. max_replication_slots パラメータを使用して、レプリケーション スロットの最大数を構成します。このパラメータは、移行ジョブごとに移行するデータベースの数に、テーブル同期用の予約分を加えた値以上に設定する必要があります。

      たとえば、5 つのデータベースを移行し、移行元インスタンスに 2 つの移行ジョブが作成されている場合、レプリケーション スロットの数は 5 * 2 = 10 以上にする必要があります。これに、すでに使用されているレプリケーション スロットの数を加えます。

    4. max_wal_senders パラメータを、少なくとも max_replication_slots と同じ値に、インスタンスですでに使用されている送信者の数を加えた値に構成します。

      たとえば、max_replication_slots パラメータが 10 に設定されていて、すでに 2 つの送信者を使用している場合、同時に実行される WAL 送信者プロセスの数は 10 + 2 = 12 になります。

    5. max_worker_processes パラメータは、移行するデータベースの数と、インスタンスですでに使用されている max_worker_processes の数の合計以上に設定します。

クイック スタート移行を作成して実行する

クイックスタート移行を作成して実行するには、 Google Cloud コンソールまたは gcloud CLI を使用します。

コンソール

  1. Google Cloud コンソールで、[使ってみる] ページに移動します。

    [スタートガイド] に移動

  2. [ソースエンジン] メニューで [PostgreSQL] を選択します。
  3. [移行先エンジン] メニューで [AlloyDB for PostgreSQL] を選択します。

    [クイック スタート PostgreSQL 移行の紹介] セクションが表示されます。

  4. [クイック スタート PostgreSQL 移行の紹介] セクションで、[移行を開始] をクリックします。

    [AlloyDB for PostgreSQL への移行] ページが開きます。

  5. [移行を構成する] セクションで、次の操作を行います。
    1. [移行先リージョン] メニューから、移行先の AlloyDB for PostgreSQL クラスタのリージョンを選択します。
    2. [移行接頭辞] ボックスに、クイックスタート移行用に作成されたすべての移行エンティティ(接続プロファイル、プライベート接続構成、ネットワーク アタッチメントとそのサブネット、移行ジョブ)の名前に追加される、わかりやすい文字列を入力します。
    3. [構成タイプ] メニューから、次のいずれかを選択します。
      1. 既存の接続構成: ネットワーク アタッチメントと、Private Service Connect インターフェース メソッドを使用するプライベート接続構成がすでにある場合は、このオプションを選択します。このオプションは、以前にクイックスタート移行を使用し、同じネットワーキング リソースを再利用する場合に最適です。
      2. 新しい接続構成: このオプションを選択すると、ソース データベースの VPC ネットワークに新しいネットワーク アタッチメントとネットワーク アタッチメント サブネットが作成されます。プライベート接続構成は、宛先クラスタと同じプロジェクトに作成されます。
    4. [続行] をクリックします。
  6. [ソースを接続] セクションで、次の操作を行います。
    1. ソース データベースのホスト名またはプライベート IP アドレスを入力します。ソース データベース アドレスは、ソース VPC ネットワークから到達可能である必要があります。
    2. ホストへのアクセスに使用するポートを入力します。デフォルトの PostgreSQL ポートは 5432 です。
    3. 移行元データベースの専用移行アカウントのユーザー名とパスワードを入力します。
    4. [暗号化タイプ] メニューから、次のいずれかを選択します。
      • なし: ソース データベースで SSL / TLS 暗号化接続が必要ない場合。
      • 必須: ソース データベースで SSL / TLS 暗号化接続が必要な場合。このオプションでは、証明書の検証は必要ありません。
    5. [移行するデータベース] メニューで、[カスタマイズ] をクリックします。埋め込みデータベース検出機能が搭載されたサイドパネルを使用して、AlloyDB for PostgreSQL に移行するデータベースのみを選択します。
    6. [続行] をクリックします。
  7. [宛先の構成] セクションで、新しい宛先クラスタを作成するか、既存のクラスタを選択します。

    新しいクラスタ

    新しい宛先クラスタを作成する場合は、次の操作を行います。

    1. [宛先インスタンス タイプ] メニューから [新しいクラスタ] を選択します。

      Database Migration Service は、新しいクラスタにデフォルトの AlloyDB for PostgreSQL 構成を使用します。[カスタマイズ] をクリックして、マシンタイプ、ゾーンの可用性、データ保護設定などのクラスタ機能を調整します。クラスタ構成の詳細については、AlloyDB for PostgreSQL のドキュメントの クラスタとそのプライマリ インスタンスを作成するをご覧ください。

    2. [パスワード] フィールドに、デフォルトの postgres 管理者ユーザーのパスワードを入力します。Database Migration Service は、このユーザーとして接続してデータを移行します。

    既存のクラスタ

    データベースは、既存のクラスタに移行できます。宛先クラスタで Private Service Connect が有効になっていて、RUNNABLE 状態であり、AlloyDB コネクタで mTLS が適用されていないことを確認します。次のように対応します。

    1. [移行先インスタンスのタイプ] メニューから [既存のクラスタ] を選択します。
    2. [既存のクラスタ ID] メニューから、クラスタ ID を選択します。
  8. [移行を開始] をクリックします。

    Database Migration Service が継続的な移行ジョブを作成し、データのレプリケーションを開始します。AlloyDB for PostgreSQL で、移行の進行状況と移行先クラスタの健全性をモニタリングできます。詳細については、AlloyDB for PostgreSQL のドキュメントの クラスタとインスタンスの詳細を表示するをご覧ください。

gcloud

gcloud CLI を使用してクイックスタート移行を作成して実行するには、次の操作を行います。

  1. ネットワーク アタッチメントを構成する。
    新しいネットワーク アタッチメントを作成するか、既存のネットワーク アタッチメントを再利用するかを決定します。 ソース データベースのプライベート IP に到達できるネットワークにネットワーク アタッチメントが必要です。

    • 新しいネットワーク アタッチメントを作成する場合は、次のコマンドを実行します(クリックすると詳細が表示されます)。

      gcloud compute network-attachments create

      後述のコマンドデータを使用する前に、次のように置き換えます。

      • NETWORK_ATTACHMENT は、作成するネットワーク アタッチメントの名前に置き換えます。
      • REGION は、ネットワーク アタッチメントのリージョンに置き換えます。
      • DEST_PROJECT_ID は、宛先プロジェクトのプロジェクト ID に置き換えます。
      • SOURCE_PROJECT_ID: ソース ネットワークが存在するプロジェクトの ID。

      次のコマンドを実行します。

      Linux、macOS、Cloud Shell

      gcloud compute network-attachments create NETWORK_ATTACHMENT \
        --region=REGION \
        --connection-preference=ACCEPT_MANUAL \
        --producer-accept-list=DEST_PROJECT_ID \
        --subnets=default \
        --project=SOURCE_PROJECT_ID

      Windows(PowerShell)

      gcloud compute network-attachments create NETWORK_ATTACHMENT `
        --region=REGION `
        --connection-preference=ACCEPT_MANUAL `
        --producer-accept-list=DEST_PROJECT_ID `
        --subnets=default `
        --project=SOURCE_PROJECT_ID

      Windows(cmd.exe)

      gcloud compute network-attachments create NETWORK_ATTACHMENT ^
        --region=REGION ^
        --connection-preference=ACCEPT_MANUAL ^
        --producer-accept-list=DEST_PROJECT_ID ^
        --subnets=default ^
        --project=SOURCE_PROJECT_ID
  2. Database Migration Service テナント プロジェクトにネットワーク アタッチメントへのアクセスを許可します。
    ネットワーク アタッチメントで、Database Migration Service テナント プロジェクトからの接続を許可する必要があります。次の手順を行います。

    1. プライベート接続の作成をドライランで実行して、Database Migration Service テナント プロジェクト ID を取得します(クリックして展開)。

      gcloud database-migration private-connections create --validate-only

      後述のコマンドデータを使用する前に、次のように置き換えます。

      • PRIVATE_CONN は、プライベート接続リソースの名前に置き換えます。
      • REGION は、プライベート接続のリージョンに置き換えます。
      • NETWORK_ATTACHMENT_URI は、ネットワーク アタッチメントの URI に置き換えます。

      次のコマンドを実行します。

      Linux、macOS、Cloud Shell

      gcloud database-migration private-connections create PRIVATE_CONN \
        --region=REGION \
        --network-attachment=NETWORK_ATTACHMENT_URI \
        --display-name=PRIVATE_CONN \
        --format="value(metadata.metadata.tenant_project_id)" \
        --validate-only

      Windows(PowerShell)

      gcloud database-migration private-connections create PRIVATE_CONN `
        --region=REGION `
        --network-attachment=NETWORK_ATTACHMENT_URI `
        --display-name=PRIVATE_CONN `
        --format="value(metadata.metadata.tenant_project_id)" `
        --validate-only

      Windows(cmd.exe)

      gcloud database-migration private-connections create PRIVATE_CONN ^
        --region=REGION ^
        --network-attachment=NETWORK_ATTACHMENT_URI ^
        --display-name=PRIVATE_CONN ^
        --format="value(metadata.metadata.tenant_project_id)" ^
        --validate-only

      返されたテナント プロジェクト ID を保存して、後続のコマンドで使用します。

    2. Database Migration Service テナント プロジェクトと宛先プロジェクトがネットワーク アタッチメントに接続できるようにします(クリックして展開)。

      gcloud compute network-attachments update

      後述のコマンドデータを使用する前に、次のように置き換えます。

      • NETWORK_ATTACHMENT は、ネットワーク アタッチメントの名前に置き換えます。
      • REGION はリージョンに置き換えます。
      • DEST_PROJECT_ID は、宛先プロジェクトのプロジェクト ID に置き換えます。
      • DMS_TENANT_ID は、取得した Database Migration Service テナント プロジェクト ID に置き換えます。
      • SOURCE_PROJECT_ID: ソース ネットワークが存在するプロジェクトの ID。

      次のコマンドを実行します。

      Linux、macOS、Cloud Shell

      gcloud compute network-attachments update NETWORK_ATTACHMENT \
        --region=REGION \
        --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID \
        --project=SOURCE_PROJECT_ID

      Windows(PowerShell)

      gcloud compute network-attachments update NETWORK_ATTACHMENT `
        --region=REGION `
        --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID `
        --project=SOURCE_PROJECT_ID

      Windows(cmd.exe)

      gcloud compute network-attachments update NETWORK_ATTACHMENT ^
        --region=REGION ^
        --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID ^
        --project=SOURCE_PROJECT_ID
  3. プライベート接続を作成する。
    Database Migration Service がソース ネットワークに接続できるように、プライベート接続リソースを作成します(クリックして展開)。

    gcloud database-migration private-connections create

    後述のコマンドデータを使用する前に、次のように置き換えます。

    • PRIVATE_CONN は、プライベート接続リソースの名前に置き換えます。
    • REGION は、プライベート接続のリージョンに置き換えます。
    • NETWORK_ATTACHMENT_URI は、ネットワーク アタッチメントの URI に置き換えます。

    次のコマンドを実行します。

    Linux、macOS、Cloud Shell

    gcloud database-migration private-connections create PRIVATE_CONN \
      --region=REGION \
      --network-attachment=NETWORK_ATTACHMENT_URI \
      --display-name=PRIVATE_CONN

    Windows(PowerShell)

    gcloud database-migration private-connections create PRIVATE_CONN `
      --region=REGION `
      --network-attachment=NETWORK_ATTACHMENT_URI `
      --display-name=PRIVATE_CONN

    Windows(cmd.exe)

    gcloud database-migration private-connections create PRIVATE_CONN ^
      --region=REGION ^
      --network-attachment=NETWORK_ATTACHMENT_URI ^
      --display-name=PRIVATE_CONN
  4. ソース接続プロファイルを作成します。
    次のコマンドを実行します(クリックして展開)。

    gcloud database-migration connection-profiles create postgresql

    このサンプルでは、オプションの --no-async フラグを使用して、すべてのオペレーションが同期的に実行されるようにしています。そのため、一部のコマンドは完了するまでに時間がかかることがあります。--no-async フラグをスキップして、コマンドを非同期で実行できます。その場合は、gcloud database-migration operations describe コマンドを使用して、オペレーションが成功したかどうかを確認する必要があります。

    後述のコマンドデータを使用する前に、次のように置き換えます。

    • SOURCE_CONN_ID は、ソース接続プロファイル ID に置き換えます。
    • REGION は、接続プロファイルを保存するリージョンに置き換えます。
    • SOURCE_PRIVATE_IP は、ソース データベースのプライベート IP アドレスに置き換えます。
    • SOURCE_PORT は、ソース データベースのポートに置き換えます(デフォルトは 5432)。
    • SOURCE_USER は、ソース データベースの移行ユーザーのユーザー名に置き換えます。
    • SOURCE_PASSWORD は、移行元データベースの移行ユーザーのパスワードに置き換えます。
    • PRIVATE_CONN は、プライベート接続リソースの名前に置き換えます。

    次のコマンドを実行します。

    Linux、macOS、Cloud Shell

    gcloud database-migration connection-profiles create postgresql \
      SOURCE_CONN_ID \
      --region=REGION \
      --role=SOURCE \
      --host=SOURCE_PRIVATE_IP \
      --port=SOURCE_PORT \
      --username=SOURCE_USER \
      --password=SOURCE_PASSWORD \
      --private-connection=PRIVATE_CONN \
      --no-async

    Windows(PowerShell)

    gcloud database-migration connection-profiles create postgresql `
      SOURCE_CONN_ID `
      --region=REGION `
      --role=SOURCE `
      --host=SOURCE_PRIVATE_IP `
      --port=SOURCE_PORT `
      --username=SOURCE_USER `
      --password=SOURCE_PASSWORD `
      --private-connection=PRIVATE_CONN `
      --no-async

    Windows(cmd.exe)

    gcloud database-migration connection-profiles create postgresql ^
      SOURCE_CONN_ID ^
      --region=REGION ^
      --role=SOURCE ^
      --host=SOURCE_PRIVATE_IP ^
      --port=SOURCE_PORT ^
      --username=SOURCE_USER ^
      --password=SOURCE_PASSWORD ^
      --private-connection=PRIVATE_CONN ^
      --no-async
  5. 宛先接続プロファイルを作成します。
    新しい AlloyDB for PostgreSQL クラスタに移行するか、既存の AlloyDB for PostgreSQL クラスタに移行するかに応じて、タブを選択します。

    新しいクラスタ

    クイックスタート移行に新しい移行先クラスタを使用するには、まず AlloyDB for PostgreSQL Google Cloud CLI を使用してクラスタとそのプライマリ インスタンスを作成し、次に移行先の接続プロファイルを作成します。手順は次のとおりです。

    1. AlloyDB for PostgreSQL Google Cloud CLI を使用してクラスタとそのプライマリ インスタンスを作成します。 --enable-private-service-connect フラグを使用して、Private Service Connect の宛先クラスタを有効にします。クイック スタート移行では、Private Service Connect が有効な移行先のみがサポートされます。
    2. 新しいクラスタの宛先接続プロファイルを作成します。コマンドの詳細については、次のセクションを開いてください。

      gcloud database-migration connection-profiles create postgresql

      このサンプルでは、オプションの --no-async フラグを使用して、すべてのオペレーションが同期的に実行されるようにしています。そのため、一部のコマンドは完了するまでに時間がかかることがあります。--no-async フラグをスキップして、コマンドを非同期で実行できます。その場合は、gcloud database-migration operations describe コマンドを使用して、オペレーションが成功したかどうかを確認する必要があります。

      後述のコマンドデータを使用する前に、次のように置き換えます。

      • DEST_CONN_ID は、宛先接続プロファイルの識別子に置き換えます。
      • REGION は、接続プロファイルを保存するリージョンに置き換えます。このリージョンは、宛先クラスタのリージョンと同じにする必要があります。
      • DEST_CLUSTER は、移行先の AlloyDB for PostgreSQL クラスタの ID または完全なリソースパスに置き換えます。
      • DEST_USER は、移行先データベースの移行ユーザーのユーザー名に置き換えます。
      • DEST_PASSWORD は、移行先データベースの移行ユーザーのパスワードに置き換えます。

      次のコマンドを実行します。

      Linux、macOS、Cloud Shell

      gcloud database-migration connection-profiles create postgresql DEST_CONN_ID \
        --region=REGION \
        --alloydb-cluster=DEST_CLUSTER \
        --username=DEST_USER \
        --password=DEST_PASSWORD \
        --role=DESTINATION \
        --no-async

      Windows(PowerShell)

      gcloud database-migration connection-profiles create postgresql DEST_CONN_ID `
        --region=REGION `
        --alloydb-cluster=DEST_CLUSTER `
        --username=DEST_USER `
        --password=DEST_PASSWORD `
        --role=DESTINATION `
        --no-async

      Windows(cmd.exe)

      gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ^
        --region=REGION ^
        --alloydb-cluster=DEST_CLUSTER ^
        --username=DEST_USER ^
        --password=DEST_PASSWORD ^
        --role=DESTINATION ^
        --no-async

      次のようなレスポンスが返されます。

      Waiting for connection profile [CONNECTION_PROFILE_ID]
      to be created with [OPERATION_ID]
      
      Waiting for operation [OPERATION_ID] to complete...done.
      
      Created connection profile CONNECTION_PROFILE_ID [OPERATION_ID]
      

    既存のクラスタ

    既存の宛先クラスタに移行するには、事前に作成されたクラスタを指す接続プロファイルを作成します。次のコマンドを実行します(クリックして展開)。

    gcloud database-migration connection-profiles create postgresql

    このサンプルでは、オプションの --no-async フラグを使用して、すべてのオペレーションが同期的に実行されるようにしています。そのため、一部のコマンドは完了するまでに時間がかかることがあります。--no-async フラグをスキップして、コマンドを非同期で実行できます。その場合は、gcloud database-migration operations describe コマンドを使用して、オペレーションが成功したかどうかを確認する必要があります。

    後述のコマンドデータを使用する前に、次のように置き換えます。

    • DEST_CONN_ID は、宛先接続プロファイルの識別子に置き換えます。
    • REGION は、接続プロファイルを保存するリージョンに置き換えます。このリージョンは、宛先クラスタのリージョンと同じにする必要があります。
    • DEST_CLUSTER は、移行先の AlloyDB for PostgreSQL クラスタの ID または完全なリソースパスに置き換えます。
    • DEST_USER は、移行先データベースの移行ユーザーのユーザー名に置き換えます。
    • DEST_PASSWORD は、移行先データベースの移行ユーザーのパスワードに置き換えます。

    次のコマンドを実行します。

    Linux、macOS、Cloud Shell

    gcloud database-migration connection-profiles create postgresql DEST_CONN_ID \
      --region=REGION \
      --alloydb-cluster=DEST_CLUSTER \
      --username=DEST_USER \
      --password=DEST_PASSWORD \
      --role=DESTINATION \
      --no-async

    Windows(PowerShell)

    gcloud database-migration connection-profiles create postgresql DEST_CONN_ID `
      --region=REGION `
      --alloydb-cluster=DEST_CLUSTER `
      --username=DEST_USER `
      --password=DEST_PASSWORD `
      --role=DESTINATION `
      --no-async

    Windows(cmd.exe)

    gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ^
      --region=REGION ^
      --alloydb-cluster=DEST_CLUSTER ^
      --username=DEST_USER ^
      --password=DEST_PASSWORD ^
      --role=DESTINATION ^
      --no-async

    次のようなレスポンスが返されます。

    Waiting for connection profile [CONNECTION_PROFILE_ID]
    to be created with [OPERATION_ID]
    
    Waiting for operation [OPERATION_ID] to complete...done.
    
    Created connection profile CONNECTION_PROFILE_ID [OPERATION_ID]
    
  6. 継続的な移行ジョブを作成する。
    次のコマンドを実行して、継続的な移行ジョブを作成します(クリックして展開)。

    gcloud database-migration migration-jobs create

    このサンプルでは、オプションの --no-async フラグを使用して、すべてのオペレーションが同期的に実行されるようにしています。そのため、一部のコマンドは完了するまでに時間がかかることがあります。--no-async フラグをスキップして、コマンドを非同期で実行できます。その場合は、gcloud database-migration operations describe コマンドを使用して、オペレーションが成功したかどうかを確認する必要があります。

    後述のコマンドデータを使用する前に、次のように置き換えます。

    • MIGRATION_JOB_ID は、移行ジョブの ID に置き換えます。
    • REGION は、移行ジョブを保存するリージョンに置き換えます。
    • SOURCE_CONN_ID は、ソース接続プロファイルの ID に置き換えます。
    • DEST_CONN_ID は、宛先接続プロファイルの識別子に置き換えます。
    • DATABASES_LIST は、移行するデータベースのカンマ区切りのリストに置き換えます。

    次のコマンドを実行します。

    Linux、macOS、Cloud Shell

    gcloud database-migration migration-jobs create \
      MIGRATION_JOB_ID \
      --region=REGION \
      --type=CONTINUOUS \
      --source=SOURCE_CONN_ID \
      --destination=DEST_CONN_ID \
      --use-postgres-native \
      --postgres-max-additional-subscriptions=10 \
      --databases-filter=DATABASES_LIST \
      --no-async

    Windows(PowerShell)

    gcloud database-migration migration-jobs create `
      MIGRATION_JOB_ID `
      --region=REGION `
      --type=CONTINUOUS `
      --source=SOURCE_CONN_ID `
      --destination=DEST_CONN_ID `
      --use-postgres-native `
      --postgres-max-additional-subscriptions=10 `
      --databases-filter=DATABASES_LIST `
      --no-async

    Windows(cmd.exe)

    gcloud database-migration migration-jobs create ^
      MIGRATION_JOB_ID ^
      --region=REGION ^
      --type=CONTINUOUS ^
      --source=SOURCE_CONN_ID ^
      --destination=DEST_CONN_ID ^
      --use-postgres-native ^
      --postgres-max-additional-subscriptions=10 ^
      --databases-filter=DATABASES_LIST ^
      --no-async

    次のようなレスポンスが返されます。

    Waiting for migration job [MIGRATION_JOB_ID]
    to be created with [OPERATION_ID]
    
    Waiting for operation [OPERATION_ID] to complete...done.
    
    Created migration job MIGRATION_JOB_ID [OPERATION_ID]
    
  7. 移行ジョブを開始します。
    継続的な移行ジョブを開始するには、次のコマンドを実行します(クリックして展開)。

    gcloud database-migration migration-jobs start

    後述のコマンドデータを使用する前に、次のように置き換えます。

    • MIGRATION_JOB_ID は、移行ジョブ ID に置き換えます。

      識別子がわからない場合は、 gcloud database-migration migration-jobs list コマンドを使用して、特定のリージョン内のすべての移行ジョブを一覧表示し、その識別子を確認できます。

    • REGION は、移行ジョブが保存されているリージョンの ID に置き換えます。

    次のコマンドを実行します。

    Linux、macOS、Cloud Shell

    gcloud database-migration migration-jobs \
    start MIGRATION_JOB_ID \
      --region=REGION

    Windows(PowerShell)

    gcloud database-migration migration-jobs `
    start MIGRATION_JOB_ID `
      --region=REGION

    Windows(cmd.exe)

    gcloud database-migration migration-jobs ^
    start MIGRATION_JOB_ID ^
      --region=REGION

    結果

    このアクションは非同期で実行されます。そのため、このコマンドは、長時間実行オペレーションを表す Operation エンティティを返します。

    done: false
    metadata:
      '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata
      apiVersion: v1
      createTime: '2024-02-20T12:20:24.493106418Z'
      requestedCancellation: false
      target: MIGRATION_JOB_ID
      verb: start
    name: OPERATION_ID
    

    オペレーションが成功したかどうかを確認するには、返されたオペレーション オブジェクトをクエリするか、移行ジョブのステータスを確認します。

移行を完了する

アプリケーション トラフィックを新しい AlloyDB for PostgreSQL クラスタに切り替える場合は、次の手順で移行を完了します。

  1. 移行元データベースに対するすべての書き込みオペレーションを停止します。ソース データベースを読み取り専用モードに切り替えると、カットオーバー中にオペレーション クエリ機能を維持できます。
  2. 移行ジョブをプロモートします。クイックスタート移行の場合、移行プロセス中も宛先クラスタは書き込み可能なままです。移行ジョブをプロモートすると、レプリケーションが終了するだけで、宛先クラスタには影響しません。
  3. 省略可: 移行データを検証して、完全性と整合性を確認します。

次のステップ