AlloyDB for PostgreSQL を評価する場合や、継続的なレプリケーションを設定せずに既存のワークロードを移行する場合は、Cloud SQL for PostgreSQL バックアップを AlloyDB の クラスタに直接コピーできます。
このページは、Cloud SQL に精通していることを前提としています。AlloyDB を初めて使用する場合は、AlloyDB の概要をご覧ください。
継続的なデータ レプリケーションを使用して Cloud SQL から AlloyDB にデータを移行する方法については、Database Migration Service(PostgreSQL から AlloyDB)をご覧ください。
以下の項目はサポートされていません。
- プロジェクト間およびクロスリージョン復元
- 顧客管理の暗号鍵(CMEK)を使用するインスタンス
- Identity and Access Management(IAM)グループ認証を使用するインスタンス
始める前に
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
-
AlloyDB、Compute Engine、Service Networking API がまだ有効になっていない場合は、有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法を確認する。 - 次のように構成されていることを確認します。
- 必要な Identity and Access Management(IAM)権限
- サイズが 15TB 未満の Cloud SQL バックアップ
- AlloyDB でサポートされている PostgreSQL のバージョン
必要なロール
Cloud SQL for PostgreSQL のバックアップを AlloyDB クラスタにコピーするために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与します。
- Cloud SQL 閲覧者(
roles/cloudsql.viewer)またはcloudsql.backupRuns.export権限を含むカスタムロール。 - AlloyDB 管理者(
roles/alloydb.admin)
Cloud SQL バックアップを AlloyDB クラスタにコピーする
Cloud SQL バックアップを AlloyDBStandardクラスタにコピーすると、同じバージョンのバックアップが AlloyDB の PostgreSQL に復元されます。たとえば、PostgreSQL 14 Cloud SQL のバックアップは PostgreSQL 14 Standardのクラスタに復元されます。拡張機能のバージョンと PostgreSQL のマイナー バージョンは異なる場合があります。
Cloud SQL からバックアップをコピーする場合、AlloyDBStandard クラスタでサポートされている項目のみを構成できます。
Cloud SQL バックアップを AlloyDBStandardクラスタにコピーする手順は次のとおりです。
コンソール
- Cloud de Confiance コンソールで、[クラスタ] ページに移動します。
- [データを移行] をクリックし、[Cloud SQL バックアップからコピー] を選択します。
- [Cloud SQL バックアップからコピー] ページで、必要な API を有効にします。API をすでに有効にしている場合は、API を再度有効にする必要はありません。
- [クラスタタイプの選択] ページで、[プロビジョニング済みのクラスタ] を選択します。
- [クラスタタイプの選択] をクリックします。
- バックアップのコピー元の Cloud SQL インスタンスを選択し、[インスタンスの選択] をクリックします。Cloud SQL インスタンスをフィルタできます。
互換性のあるデータベース バージョンのみが表示されます。レプリカにはバックアップがなく、使用可能なインスタンスのリストには表示されません。 - インポート元のバックアップを選択し、[バックアップの選択] をクリックします。このページには、最新の 1,000 件のバックアップが表示されます。
- [プロビジョニング済みクラスタの作成] ページで、ネットワーキング情報を入力します。クラスタ ID はデフォルトで入力されますが、プロビジョニングされたクラスタをカスタマイズすることもできます。
- [クラスタを作成] をクリックします。
オペレーションが完了すると、プライマリ インスタンスが自動的に作成されます。選択した Cloud SQL for PostgreSQL バックアップからコピーされたデータを含む、新しい AlloyDB クラスタが表示されます。
Cloud SQL for PostgreSQL のバックアップを AlloyDB クラスタにコピーすると、データベース フラグが Cloud SQL for PostgreSQL と AlloyDB にある場合は、データベース フラグが移行されます。リソースレベルの権限は自動的に移行されません。コピーが完了したら、権限と、不一致が原因で移行されなかったデータベース フラグを手動で設定する必要があります。
AlloyDB でサポートされている Cloud SQL for PostgreSQL のデータベース フラグについては、プロビジョニングされたクラスタを作成するをご覧ください。
gcloud
gcloud CLI を使用するには、gcloud CLI をインストールして初期化するか、Cloud Shell を使用します。
gcloud alloydb clusters migrate-cloud-sqlコマンドを実行します。
gcloud alloydb clusters migrate-cloud-sqlCLUSTER_ID\ --cloud-sql-backup-id=CLOUD_SQL_BACKUP_ID\ --cloud-sql-instance-id=CLOUD_SQL_INSTANCE_ID\ --cloud-sql-project-id=CLOUD_SQL_PROJECT_ID\ --password=PASSWORD\ --region=REGION\ --database-version=DATABASE_VERSION\ --subscription-type=STANDARD次のように置き換えます。
CLUSTER_ID: Cloud SQL for PostgreSQL クラスタ ID。CLOUD_SQL_BACKUP_ID: 移行元の Cloud SQL バックアップ ID。これはバックアップ ID にする必要があります。CLOUD_SQL_INSTANCE_ID: 移行元の Cloud SQL インスタンス ID。これはインスタンス ID にする必要があります。CLOUD_SQL_PROJECT_ID: 移行元の Cloud SQL プロジェクト ID。これはプロジェクト ID にする必要があります。PASSWORD: クラスタの作成時に設定する PostgreSQL ユーザーの初期パスワード。REGION: ロケーション(例:asia-east1、us-east1)。リージョンの一覧については、ロケーションをご覧ください。DATABASE_VERSION: クラスタのデータベース バージョン。POSTGRES_14、POSTGRES_15、POSTGRES_16、POSTGRES_17、POSTGRES_18のいずれかにする必要があります。データベース バージョンは、Cloud SQL バックアップのバージョンと同じである必要があります。
gcloud alloydb operations describeコマンドを実行して、バックアップ オペレーションのステータスを確認します。gcloud alloydb operations describeOPERATION_ID\ --region=REGION_ID\ --project=PROJECT_ID次のように置き換えます。
OPERATION_ID: Cloud SQL for PostgreSQL オペレーションの名前。REGION_ID: Cloud SQL for PostgreSQL クラスタがデプロイされるリージョン。PROJECT_ID: プロジェクト ID。
gcloud alloydb instances createコマンドを使用して、プライマリ インスタンスを作成します。
REST API
- バックアップを復元するインスタンスのバックアップのリストを取得するには、
backupRuns.listメソッドを呼び出します。GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns次のように置き換えます。
PROJECT_ID: プロジェクト ID。INSTANCE_ID: インスタンス ID。
リクエストを送信するには、次のいずれかのオプションを使用します。
curl(Linux、macOS、Cloud Shell)
次のコマンドは、
gcloud initまたはgcloud auth loginを実行してユーザー アカウントでgcloud CLIにログインしているか、Cloud Shellを使用してgcloud CLIに自動的にログインしていることを前提としています。gcloud auth listを実行すると、現在アクティブなアカウントを確認できます。次のコマンドを実行します。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"PowerShell(Windows)
次のコマンドは、
gcloud initまたはgcloud auth loginを実行してユーザー アカウントでgcloud CLIにログインしているか、Cloud Shellを使用してgcloud CLIに自動的にログインしていることを前提としています。gcloud auth listを実行すると、現在アクティブなアカウントを確認できます。次のコマンドを実行します。
$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/v1/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
レスポンス
成功した場合、レスポンスの本文には
BackupRunオブジェクトのリストが含まれます。{ "kind": string, "items": [ { object (BackupRun) } ], "nextPageToken": string }API レスポンスは、
"id": stringを含むインスタンスのバックアップのリストを配列リストとして返します。 clusters.restoreFromCloudSQLメソッドを呼び出します。POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters:restoreFromCloudSQL次のように置き換えます。
PROJECT_ID: プロジェクト ID。REGION: AlloyDB クラスタがデプロイされているリージョン。
リクエストの本文(JSON):
{ "clusterId": string, "cluster": { "databaseVersion": "POSTGRES_14/POSTGRES_15/POSTGRES_16/POSTGRES_17/POSTGRES_18", "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/v1/projects/PROJECT_ID/locations/REGION/clusters:restoreFromCloudSQL"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/v1/projects/PROJECT_ID/locations/REGION/clusters:restoreFromCloudSQL"|Select-Object -Expand Content次のような JSON レスポンスが返されます。
レスポンス
成功した場合、レスポンスの本文には
Operationのインスタンスが含まれます。AlloyDB は、指定されたプロジェクトとロケーションに新しいクラスタを作成し、CloudSQLBackupRunSource メッセージで指定されたバックアップからボリュームを復元します。
- クラスタが
READY状態の場合は、projects.locations.clusters.instances.createメソッドを呼び出してプライマリ インスタンスを作成します。POST https://alloydb.googleapis.com/v1/{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/v1/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/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID/instances"|Select-Object -Expand Content次のような JSON レスポンスが返されます。
レスポンス
成功した場合、レスポンスの本文には、新しく作成された
Operationのインスタンスが含まれます。 - インスタンスが
READY状態に更新されたら、インスタンスに接続し、Cloud SQL スナップショットから復元されたデータにアクセスします。