このページでは、Cloud SQL バックアップを AlloyDB for PostgreSQL クラスタにコピーして、Cloud SQL for PostgreSQL インスタンスを移行する方法について説明します。Cloud SQL バックアップを AlloyDB クラスタにコピーすると、AlloyDB for PostgreSQL にデータをすばやく読み込むことができます。これにより、AlloyDB で評価または移行できます。
このページは、Cloud SQL に精通していることを前提としています。AlloyDB を初めて使用する場合は、AlloyDB の概要をご覧ください。
継続的なデータ レプリケーションを使用して Cloud SQL から AlloyDB にデータを移行する方法については、Database Migration Service(PostgreSQL から AlloyDB) をご覧ください。
以下はサポートされていません。
- プロジェクト間およびリージョン間の復元
- 顧客管理の暗号鍵(CMEK)を使用するインスタンス
- Identity and Access Management(IAM)グループ認証を使用するインスタンス
始める前に
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AlloyDB, Compute Engine, and Service Networking APIs.
- 以下のものが揃っていることを確認します。
- 必要な Identity and Access Management(IAM)権限
- サイズが 5 TB 未満の Cloud SQL バックアップ
- AlloyDB でサポートされている PostgreSQL のバージョン
必要なロール
Cloud SQL for PostgreSQL のバックアップを AlloyDB クラスタにコピーするために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与します。
- 閲覧者
(
roles/viewer
) - Cloud AlloyDB 管理者 (
roles/alloydb.admin
)
Cloud SQL バックアップを AlloyDB クラスタにコピーする
Cloud SQL バックアップを AlloyDB標準クラスタにコピーすると、バックアップは AlloyDB の同じバージョンの PostgreSQL に復元されます。たとえば、PostgreSQL 14 Cloud SQL バックアップは PostgreSQL 14 標準クラスタに復元されます。拡張機能のバージョンと PostgreSQL のマイナー バージョンは異なる場合があります。
Cloud SQL からバックアップをコピーする場合、AlloyDB の標準 クラスタでサポートされている項目の構成のみがサポートされます。
Cloud SQL バックアップを AlloyDB の標準トライアル クラスタにコピーする手順は次のとおりです。
コンソール
- Google Cloud コンソールで、[クラスタ] ページに移動します。
- [データを移行] をクリックし、[Cloud SQL バックアップからコピー] を選択します。
- [Cloud SQL バックアップからコピー] ページで、必要な API を有効にします。API をすでに有効にしている場合は、API を再度有効にする必要はありません。
- [クラスタタイプを選択] ページで、[プロビジョニングされたクラスタ] を選択します。
- [クラスタタイプを選択] をクリックします。
- バックアップのコピー元の Cloud SQL インスタンスを選択し、[インスタンスを選択] をクリックします。Cloud SQL インスタンスをフィルタできます。
互換性のあるデータベース バージョンのみが表示されます。レプリカにはバックアップがなく、使用可能なインスタンスのリストには表示されません。 - インポート元のバックアップを選択し、[バックアップを選択] をクリックします。このページには、最新の 1,000 件のバックアップが表示されます。
- [プロビジョニング済みクラスタを作成する] ページで、ネットワーキング情報を入力します。クラスタ ID はデフォルトで入力されますが、プロビジョニングされたクラスタをカスタマイズすることもできます。
- [CREATE CLUSTER] をクリックします。
オペレーションが完了すると、プライマリ インスタンスが自動的に作成されます。選択した Cloud SQL for PostgreSQL バックアップからコピーされたデータを含む、新しい AlloyDB クラスタが表示されます。
Cloud SQL for PostgreSQL のバックアップを AlloyDB クラスタにコピーすると、データベース フラグが Cloud SQL for PostgreSQL と AlloyDB にある場合は、データベース フラグが移行されます。リソースレベルの権限は自動的に移行されません。コピーが完了したら、権限と、不一致が原因で移行されなかったデータベース フラグを手動で設定する必要があります。
AlloyDB でサポートされている Cloud SQL for PostgreSQL のデータベース フラグについては、プロビジョニングされたクラスタを作成するをご覧ください。
REST API
- バックアップを復元するインスタンスのバックアップのリストを取得するには、
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
を実行して、ユーザー アカウントでGoogle Cloud 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
を実行して、ユーザー アカウントで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 レスポンスが返されます。
レスポンス
成功した場合、レスポンスの本文には
API レスポンスは、BackupRun
のリストが含まれます。"id": string,
を含むインスタンスのバックアップのリストを配列リストとして返します。 - 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": "STANDARD" }, // 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
を実行して、ユーザー アカウントで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
を実行して、ユーザー アカウントで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 メッセージで指定されたバックアップからボリュームが復元されます。
- クラスタが
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
を実行して、ユーザー アカウントで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
を実行して、ユーザー アカウントで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
のインスタンスが含まれます。 - インスタンスが
READY
状態に更新されたら、インスタンスに接続し、Cloud SQL スナップショットから復元されたデータにアクセスします。