Cloud SQL for PostgreSQL から AlloyDB for PostgreSQL に移行する

このページでは、Cloud SQL バックアップを AlloyDB for PostgreSQL 無料試用クラスタにコピーして、Cloud SQL for PostgreSQL インスタンスを移行する方法について説明します。Cloud SQL バックアップを AlloyDB クラスタにコピーすると、Cloud SQL for PostgreSQL にデータをすばやく読み込むことができます。これにより、AlloyDB への評価または移行が可能になります。

このページは、Cloud SQL に精通していることを前提としています。AlloyDB を初めて使用する場合は、AlloyDB の概要をご覧ください。

継続的なデータ レプリケーションを使用して Cloud SQL から AlloyDB にデータを移行する方法については、Database Migration Service for PostgreSQL to AlloyDB をご覧ください。

以下はサポートされていません。

  • プロジェクト間およびリージョン間の復元
  • 顧客管理の暗号鍵(CMEK)を使用するインスタンス
  • Identity and Access Management(IAM)グループ認証を使用するインスタンス

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

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

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the AlloyDB, Compute Engine, and Service Networking APIs.

    Enable the APIs

  7. 以下のものが揃っていることを確認します。

必要なロール

Cloud SQL for PostgreSQL のバックアップを AlloyDB クラスタにコピーするために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与します。

Cloud SQL バックアップを AlloyDB クラスタにコピーする

Cloud SQL バックアップを AlloyDB の無料トライアルクラスタにコピーすると、バックアップが AlloyDB の同じバージョンの PostgreSQL に復元されます。たとえば、PostgreSQL 14 Cloud SQL バックアップは PostgreSQL 14 無料トライアルクラスタに復元されます。拡張機能のバージョンと PostgreSQL のマイナー バージョンが異なる場合があります。

Cloud SQL からバックアップをコピーする場合、AlloyDB の無料トライアル クラスタでサポートされている項目の構成のみがサポートされます。

Cloud SQL バックアップを AlloyDB の無料トライアル クラスタにコピーする手順は次のとおりです。

Console

  1. Google Cloud コンソールで、[クラスタ] ページに移動します。

    [クラスタ] に移動

  2. クラスタをまだプロビジョニングしていない場合は、[無料トライアルを開始] をクリックします。既存のクラスタがある場合は、[データを移行] をクリックします。
  3. [Cloud SQL バックアップからコピー] をクリックします。
  4. [Cloud SQL バックアップからコピー] ページで、必要な API を有効にします。API をすでに有効にしている場合は、API を再度有効にする必要はありません。
  5. [クラスタタイプを選択] ページで、[無料トライアル クラスタ] をクリックします。無料トライアル クラスタの利用資格がない場合は、このフィールドがグレー表示になります。
  6. [クラスタタイプを選択] をクリックします。
  7. コピー元の Cloud SQL インスタンスを選択し、[インスタンスの選択] をクリックします。Cloud SQL インスタンスをフィルタできます。
    互換性のあるデータベース バージョンのみが表示されます。レプリカにはバックアップがなく、利用可能なインスタンスのリストには表示されません。
  8. インポート元のバックアップを選択し、[バックアップを選択] をクリックします。このページには、最新の 1,000 件のバックアップが表示されます。
  9. [無料のクラスタを作成する] ページで、クラスタ ID とネットワーキング情報を入力します。
  10. [無料トライアルを開始] をクリックします。

オペレーションが完了すると、プライマリ インスタンスが自動的に作成されます。選択した Cloud SQL for PostgreSQL バックアップからコピーされたデータを含む新しい AlloyDB クラスタが表示されます。

Cloud SQL for PostgreSQL のバックアップを AlloyDB クラスタにコピーしても、データベース フラグとリソースレベルの権限は自動的に移行されません。コピーが完了したら、これらのフラグと権限を手動で設定する必要があります。

AlloyDB でサポートされている Cloud SQL for PostgreSQL のデータベース フラグについては、無料クラスタを作成するページをご覧ください。

REST API

  1. バックアップを復元するインスタンスのバックアップのリストを取得するには、backupsRuns.list メソッドを呼び出します。
          GET "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"
          

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

    • PROJECT_ID: プロジェクト ID。
    • INSTANCE_ID: インスタンス ID。

    JSON 本文のリクエスト:

          {
            "kind": string,
            "items": [
              {
                object (BackupRun)
              }
            ],
            "nextPageToken": string
          }
          

    リクエストを送信するには、次のいずれかのオプションを使用します。

    curl(Linux、macOS、Cloud Shell)

    次のコマンドは、gcloud init または gcloud auth login を実行するか、Cloud Shell を使用してユーザー アカウントで gcloud CLI にログインしていることを前提としています。Cloud Shell を使用すると、gcloud CLI に自動的にログインします。

    gcloud auth list を実行すると、現在アクティブなアカウントを確認できます。

    リクエスト本文を request.json という名前のファイルに保存し、次のコマンドを実行します。

            curl -X GET \
                   -H "Authorization: Bearer $(gcloud auth print-access-token)" \
                   -H "Content-Type: application/json; charset=utf-8" \
                   "https://sqladmin.googleapis.com//sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"
            

    PowerShell(Windows)

    次のコマンドは、gcloud init または gcloud auth login を実行するか、Cloud Shell を使用してユーザー アカウントで gcloud CLI にログインしていることを前提としています。Cloud Shell を使用すると、gcloud CLI に自動的にログインします。

    gcloud auth list を実行すると、現在アクティブなアカウントを確認できます。

    リクエスト本文を request.json という名前のファイルに保存し、次のコマンドを実行します。

             $cred = gcloud auth print-access-token
             $headers = @{ "Authorization" = "Bearer $cred" }
             Invoke-WebRequest `
              -Method GET `
              -Headers $headers `
              -ContentType: "application/json; charset=utf-8" `
              -Uri
              "https://sqladmin.googleapis.com//sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"|Select-Object -Expand Content
          

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

    レスポンス

    成功した場合、レスポンスの本文には BackupRun のリストが含まれます。

    API レスポンスは、"id": string, を含むインスタンスのバックアップのリストを配列リストとして返します。

  2. restoreFromCloudSQL メソッドを呼び出します。

            POST https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters:restoreFromCloudSQL
          

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

    • PROJECT_ID: プロジェクト ID。
    • REGION: AlloyDB クラスタがデプロイされているリージョン。

    JSON 本文のリクエスト:

          {
            "clusterId": string,
            "cluster": {
              "databaseVersion": "POSTGRES_14/POSTGRES_15/POSTGRES_16",
              "subscriptionType": "TRIAL"
            },
            // Union field source can be only one of the following:
            "cloudsqlBackupRunSource": {
              object (CloudSQLBackupRunSource)
            }
            // End of list of possible types for union field source.
          }
          

    リクエストを送信するには、次のいずれかのオプションを使用します。

    curl(Linux、macOS、Cloud Shell)

    次のコマンドは、gcloud init または gcloud auth login を実行するか、Cloud Shell を使用してユーザー アカウントで gcloud CLI にログインしていることを前提としています。Cloud Shell を使用すると、gcloud CLI に自動的にログインします。

    gcloud auth list を実行すると、現在アクティブなアカウントを確認できます。

    リクエスト本文を request.json という名前のファイルに保存し、次のコマンドを実行します。

            curl -X POST \
                   -H "Authorization: Bearer $(gcloud auth print-access-token)" \
                   -H "Content-Type: application/json; charset=utf-8" \
                   -d @request.json \
                   "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters:restoreFromCloudSQL"
          

    PowerShell(Windows)

    次のコマンドは、gcloud init または gcloudauth login を実行するか、Cloud Shell を使用してユーザー アカウントで gcloud CLI にログインしていることを前提としています。Cloud Shell を使用すると、gcloud CLI に自動的にログインします。

    gcloud auth list を実行すると、現在アクティブなアカウントを確認できます。

    リクエスト本文を request.json という名前のファイルに保存し、次のコマンドを実行します。

            $cred = gcloud auth print-access-token
            $headers = @{ "Authorization" = "Bearer $cred" }
            Invoke-WebRequest `
              -Method POST `
              -Headers $headers `
              -ContentType: "application/json; charset=utf-8" `
              -InFile request.json `
              -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters:restoreFromCloudSQL"|Select-Object -Expand Content
          

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

    レスポンス

    成功した場合、レスポンスの本文には Operation のインスタンスが含まれます。

    指定されたプロジェクトとロケーションに新しいクラスタが作成され、CloudSQLBackupRunSource メッセージで指定されたバックアップからボリュームが復元されます。

  3. クラスタが READY 状態の場合は、projects.locationsinstances.create メソッドを呼び出してプライマリ インスタンスを作成します。
          POST https://alloydb.googleapis.com/v1beta/{parent=projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID}/instances
          

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

    • PROJECT_ID: プロジェクト ID。
    • REGION: AlloyDB クラスタがデプロイされているリージョン。
    • CLUSTER_ID: クラスタ ID。

    JSON 本文のリクエスト:

            {
              "instanceId": "string",
              "instance": {
                "object": "Instance"
              }
            }
          

    リクエストの本文には Instance のインスタンスが含まれます。

    リクエストを送信するには、次のいずれかのオプションを使用します。

    curl(Linux、macOS、Cloud Shell)

    次のコマンドは、gcloud init または gcloud auth login を実行するか、Cloud Shell を使用してユーザー アカウントで gcloud CLI にログインしていることを前提としています。Cloud Shell を使用すると、gcloud CLI に自動的にログインします。

    gcloud auth list を実行すると、現在アクティブなアカウントを確認できます。

    リクエスト本文を request.json という名前のファイルに保存し、次のコマンドを実行します。

            curl -X POST \
                 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
                 -H "Content-Type: application/json; charset=utf-8" \
                 -d @request.json \
                 "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID/instances"
          

    PowerShell(Windows)

    次のコマンドは、gcloud init または gcloud auth login を実行するか、Cloud Shell を使用してユーザー アカウントで gcloud CLI にログインしていることを前提としています。Cloud Shell を使用すると、gcloud CLI に自動的にログインします。

    gcloud auth list を実行すると、現在アクティブなアカウントを確認できます。

    リクエスト本文を request.json という名前のファイルに保存し、次のコマンドを実行します。

             $cred = gcloud auth print-access-token
             $headers = @{ "Authorization" = "Bearer $cred" }
             Invoke-WebRequest `
               -Method POST `
               -Headers $headers `
               -ContentType: "application/json; charset=utf-8" `
               -InFile request.json `
               -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID/instances"|Select-Object -Expand Content
          

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

    レスポンス

    成功した場合、レスポンスの本文には、新しく作成された Operation のインスタンスが含まれます。

  4. インスタンスが READY 状態に更新されたら、インスタンスに接続し、Cloud SQL スナップショットから復元されたデータにアクセスします。

次のステップ