Database Migration Service でクイック スタート移行を使用する

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

概要

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

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

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

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

  • データベース接続でサポートされている唯一の方法は Database Migration Service のプライベート 接続構成を使用した Private Service Connect インターフェースです。移行元データベースには、 VPC ネットワークにプライベート IP が割り当てられている必要があります。クイック スタート移行では、他の同種 ソース接続方法(パブリック IP 許可リスト、リバース SSH トンネル、 または VPC ピアリングなど)はサポートされていません。

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

始める前に

  1. クイック スタート移行でシナリオを完全にサポートできるかどうかを確認します。Database Migration Service のドキュメントの クイック スタート移行の制限事項 をご覧ください。
  2. ログイン Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、 新しいアカウントを登録します

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  4. Verify that billing is enabled for your Google Cloud project.

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Database Migration Service、Compute Engine、Network Connectivity Center、 および AlloyDB for PostgreSQL Admin 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 API を有効にすると、 の Database Migration Service サービスアカウントが作成されます。このアカウントに関連付けられたメールアドレスは自動的に生成され 、変更することはできません。このメールアドレスは次の形式を使用します。

    service-DESTINATION_PROJECT_NUMBERservice-DESTINATION_PROJECT_NUMBER@gcp-sa-datamigration.iam.gserviceaccount.com

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

必要な権限(移行元)

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

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

  • compute.networks.*
  • compute.subnetworks.*
  • compute.networkAttachments.*

**移行先** プロジェクトの Database Migration Service サービス アカウントの場合: compute.networkAttachments.get.

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

移行先 データベースが存在する プロジェクトで移行を実行するユーザー アカウントに次のロールを付与します: on the 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. インスタンスに移行専用のユーザー アカウントを作成します。
  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. 移行ユーザー アカウントには、移行するテーブルに対する所有権アクセスが必要です。このレベルのアクセス権を付与するには、次のいずれかを行います。
    • 移行アカウントに SUPERUSER PostgreSQL ロールを割り当てます。
      • Cloud SQL for PostgreSQL ソースの場合は、 cloudsqlsuperuser ロールを割り当てます。
      • その他のソースの場合は、 SUPERUSER ロール を割り当てるか、同等の権限セット についてデータベース プロバイダのドキュメントをご覧ください。
    • テーブルを所有するユーザー グループに移行ユーザー アカウントを追加します。 次のコマンドを実行します。
      -- 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 に設定します。 値 `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 に設定します。 値 `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 の数を合計した値以上に設定します。

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

クイック スタート移行を使用すると、新しい AlloyDB for PostgreSQL クラスタを作成してデータベースを移行したり、既存のクラスタにデータベースを移行したりできます。

新しいクラスタのクイック スタート移行

新しい AlloyDB for PostgreSQL クラスタを作成して、データベースをすぐに移行する手順は次のとおりです。

  1. [クラスタ] ページに移動します。

    クラスタに移動

  2. [**クラスタを作成**] > [**既存のデータベースから**] をクリックします。

    Database Migration Service のクイック スタート移行フォームが開きます。

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

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

    2. In the [Password] field, enter a password for the default postgresql admin user. Database Migration Service connects as this user to migrate your data.
  6. [移行を開始] をクリックします。

    Database Migration Service は移行ジョブを作成し、移行 プロセスを開始します。移行の進行状況と移行先クラスタの健全性は、AlloyDB for PostgreSQL でモニタリングできます。詳細については、 クラスタ情報を表示するをご覧ください。

既存のクラスタのクイック スタート移行

データベースを既存の AlloyDB for PostgreSQL クラスタに移行する手順は次のとおりです。

  1. [クラスタ] ページに移動します。

    クラスタに移動

  2. データベースを移行する AlloyDB for PostgreSQL クラスタを選択します。
  3. クラスタの詳細ページで、[データを移行] をクリックします。
  4. [データを移行] パネルで、[データベースを移行] をクリックします。

    Database Migration Service のクイック スタート移行フォームが開きます。

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

    Database Migration Service は移行ジョブを作成し、移行 プロセスを開始します。移行の進行状況と移行先クラスタの健全性は、AlloyDB for PostgreSQL でモニタリングできます。詳細については、 クラスタ情報を表示するをご覧ください。

移行を完了する

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

  1. 移行元データベースのすべての書き込みオペレーションを停止します。読み取り専用モードに切り替えて、オペレーション機能を維持できます。
  2. 移行ジョブをプロモートします。
  3. 省略可: 移行データの完全性を確認します。

次のステップ