このページでは、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)グループ認証を使用するインスタンス
始める前に
- 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)権限
- サイズが 1TB 未満の 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 の無料トライアル クラスタにコピーする手順は次のとおりです。
Console
- Google Cloud コンソールで、[クラスタ] ページに移動します。
- クラスタをまだプロビジョニングしていない場合は、[無料トライアルを開始] をクリックします。既存のクラスタがある場合は、[データを移行] をクリックします。
- [Cloud SQL バックアップからコピー] をクリックします。
- [Cloud SQL バックアップからコピー] ページで、必要な API を有効にします。API をすでに有効にしている場合は、API を再度有効にする必要はありません。
- [クラスタタイプを選択] ページで、[無料トライアル クラスタ] をクリックします。無料トライアル クラスタの利用資格がない場合は、このフィールドがグレー表示になります。
- [クラスタタイプを選択] をクリックします。
- コピー元の Cloud SQL インスタンスを選択し、[インスタンスの選択] をクリックします。Cloud SQL インスタンスをフィルタできます。
互換性のあるデータベース バージョンのみが表示されます。レプリカにはバックアップがなく、利用可能なインスタンスのリストには表示されません。 - インポート元のバックアップを選択し、[バックアップを選択] をクリックします。このページには、最新の 1,000 件のバックアップが表示されます。
- [無料のクラスタを作成する] ページで、クラスタ ID とネットワーキング情報を入力します。
- [無料トライアルを開始] をクリックします。
オペレーションが完了すると、プライマリ インスタンスが自動的に作成されます。選択した 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
を実行するか、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 レスポンスが返されます。
レスポンス
成功した場合、レスポンスの本文には
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": "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 メッセージで指定されたバックアップからボリュームが復元されます。
- クラスタが
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
のインスタンスが含まれます。 - インスタンスが
READY
状態に更新されたら、インスタンスに接続し、Cloud SQL スナップショットから復元されたデータにアクセスします。