このページでは、不変性と保持の適用を提供する Backup Vault に Cloud SQL インスタンスをバックアップする方法について説明します。
Google Cloud コンソールでは、バックアップ プランを適用して Cloud SQL インスタンスを Backup Vault にバックアップできます。バックアップは、次の 2 つの方法のいずれかで行うことができます。どちらの方法でも、バックアップを Backup Vault に安全に保存できるため、データの損失やその他の予期しないイベントが発生した場合に、Cloud SQL インスタンスを確実に復元できます。
- スケジュール バックアップ: Cloud SQL インスタンスを、毎日、毎週、毎月、毎年などの特定の間隔で自動的にバックアップします。
- オンデマンド バックアップ。オンデマンド バックアップは、必要に応じていつでも作成できます。オンデマンド バックアップは、データベースに大幅な変更を加える前や、アドホックなデータ保護のためにバックアップを作成する場合に便利です。
始める前に
Cloud SQL インスタンスが配置されている場所で Backup and DR API を有効にします。
Backup and DR のバックアップ ジョブをモニタリングするために、バケットにオブザーバビリティ分析を設定します。
CMEK 対応インスタンスの場合: ソース Cloud SQL インスタンスが顧客管理の暗号鍵(CMEK)で保護されている場合は、Backup and DR サービス エージェントに
roles/cloudkms.cryptoKeyEncrypterDecrypterIdentity and Access Management ロールを付与する必要があります。この権限は、ソース Cloud SQL インスタンスで使用される Cloud Key Management Service 鍵に必要です。Backup and DR サービス エージェントは、Backup Vault が配置されているプロジェクトにあります。CMEK 対応の Cloud SQL インスタンスを保護する前に、このロールをサービス アカウントに付与します。
バックアップ ユーザーの IAM ロールと権限
スケジュール バックアップの構成やオンデマンド バックアップの実行に必要な権限を取得するには、Backup Vault プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
- Backup and DR バックアップ ユーザー (
roles/backupdr.backupUser) - 閲覧者 (
roles/viewer)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、スケジュール バックアップの構成またはオンデマンド バックアップの実行に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
スケジュール バックアップを構成するか、オンデマンド バックアップを実行するには、次の権限が必要です。
-
backupdr.backupPlans.list -
backupdr.backupPlanAssociations.createForCloudSqlInstance -
backupdr.backupPlanAssociations.fetchForCloudSqlInstance -
backupdr.backupPlanAssociations.updateForCloudSqlInstance -
backupdr.backupPlanAssociations.list -
backupdr.backupPlanAssociations.getForCloudSqlInstance -
backupdr.backupPlanAssociations.triggerBackupForCloudSqlInstance -
backupdr.backupPlanAssociations.deleteForCloudSqlInstance -
backupdr.backupPlans.useForCloudSqlInstance -
backupdr.locations.list -
backupdr.operations.get -
cloudasset.assets.searchAllResources
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
各 API 呼び出しに必要な動的権限
次の表に、各 API 呼び出しに必要な動的権限を示します。
| リソース | リソースに対して実行するアクション | 各 API 呼び出しに必要な権限 | 権限を割り当てるプロジェクト |
|---|---|---|---|
| Backup Vault | Backup Vault の作成 | backupdr.backupVaults.create |
管理者プロジェクト |
| Backup Vault を削除する | backupdr.backupVaults.delete |
管理者プロジェクト | |
| Backup Vault を更新する | backupdr.backupVaults.update |
管理者プロジェクト | |
| Backup Vault を一覧表示する | backupdr.backupVaults.list |
管理者プロジェクト | |
| Backup Vault を取得する | backupdr.backupVaults.get |
管理者プロジェクト | |
| バックアップ プラン | バックアップ プランを作成 | backupdr.backupPlans.create |
管理者プロジェクト |
| バックアップ プランを削除する | backupdr.backupPlans.delete |
管理者プロジェクト | |
| バックアップ プランを取得する | backupdr.backupPlans.get |
管理者プロジェクト | |
| バックアップ プランを一覧表示する | backupdr.backupPlans.list |
管理者プロジェクト | |
| バックアップ プランを更新する | backupdr.backupPlans.update |
管理者プロジェクト | |
| バックアップ プランのリビジョンを取得する | backupdr.backupPlanRevisions.get |
管理者プロジェクト | |
| バックアップ プランのリビジョンを一覧表示する | backupdr.backupPlanRevisions.list |
管理者プロジェクト | |
| バックアップ プランのリビジョンを作成する | backupdrproducer.backupPlanRevisions.create |
管理者プロジェクト | |
| バックアップ プランのリビジョンを削除する | backupdrproducer.backupPlanRevisions.delete |
管理者プロジェクト | |
| バックアップ プランの関連付け | バックアップ プランの関連付けを作成する | cloudsql.instances.updateBackupDrConfigbackupdr.backupPlanAssociations.createForCloudSqlInstancebackupdr.backupPlans.useForCloudSqlInstance |
ワークロード プロジェクト ワークロード プロジェクト 管理プロジェクト |
| バックアップ プランの関連付けを削除する | backupdr.backupPlanAssociations.deleteForCloudSqlInstancecloudsql.instances.updateBackupDrConfig |
ワークロード プロジェクト ワークロード プロジェクト |
|
| バックアップ プランの関連付けでオンデマンド バックアップをトリガーする | backupdr.backupPlanAssociations.triggerBackupForCloudSqlInstance |
ワークロード プロジェクト | |
| バックアップ プランの関連付けを取得する | backupdr.backupPlanAssociations.getForCloudSqlInstance |
ワークロード プロジェクト | |
| バックアップ プランの関連付けを一覧表示する | backupdr.backupPlanAssociations.list |
ワークロード プロジェクト | |
| バックアップ プランの関連付けを取得する | backupdr.backupPlanAssociations.fetchForCloudSqlInstance |
ワークロード プロジェクト | |
| バックアップ プランの関連付けを変更する | backupdr.backupPlanAssociations.updateForCloudSqlInstance |
ワークロード プロジェクト | |
| データソース | データソースを取得する | backupdr.bvdataSources.get |
管理者プロジェクト |
| データソースを一覧表示する | backupdr.backupPlanAssociations.list |
管理者プロジェクト | |
| ポイントインタイム リカバリの復元 | backupdr.bvdataSources.useReadOnlyForCloudSqlInstance |
管理者プロジェクト | |
| バックアップ | バックアップの取得 | backupdr.bvbackups.get |
管理者プロジェクト |
| バックアップを一覧表示する | backupdr.bvbackups.list |
管理者プロジェクト | |
| バックアップを取得する | backupdr.bvbackups.fetchForCloudSqlInstance |
管理者プロジェクト | |
| バックアップを削除 | backupdr.bvbackups.delete |
管理者プロジェクト | |
| バックアップを復元 | backupdr.bvbackups.useReadOnlyForCloudSqlInstance |
管理者プロジェクト | |
| データソース参照 | データソース参照を取得する | backupdr.dataSourceReferences.getForCloudSqlInstance |
ワークロード プロジェクト |
| データソース参照を一覧表示する | backupdr.dataSourceReferences.list |
ワークロード プロジェクト | |
| データソース参照を取得する | backupdr.dataSourceReferences.fetchForCloudSqlInstance |
ワークロード プロジェクト | |
| 運用 | 処理の一覧を表示します | backupdr.operations.list |
それぞれのプロジェクト |
| オペレーションの取得 | backupdr.operations.get |
それぞれのプロジェクト |
Cloud SQL プロジェクトで Backup Vault へのアクセス権を付与する
Backup Vault が作成されたプロジェクトとは異なるプロジェクトで Cloud SQL インスタンスをバックアップするには、Cloud SQL プロジェクト内の Backup Vault サービス エージェントに Backup and DR Cloud SQL オペレーター(roles/backupdr.cloudSqlOperator)IAM ロールを付与する必要があります。バックアップが保存される Backup Vault プロジェクトが Cloud SQL プロジェクトと異なる場合は、Cloud SQL プロジェクト内の Backup Vault サービス エージェントにロールを割り当てます。
Backup Vault が作成されたプロジェクトと同じプロジェクトで Cloud SQL インスタンスをバックアップする場合、ロールを付与する必要はありません。
バックアップするプロジェクト内の Backup Vault サービス エージェントにロールを付与する方法については、サービス エージェントにロールを付与するをご覧ください。
スケジュール バックアップを構成する
Cloud SQL インスタンスのスケジュール バックアップを構成する手順は次のとおりです。
コンソール
Google Cloud コンソールで、[Vaulted backups] ページに移動します。
[バックアップをスケジュール] をクリックします。
[リソースタイプ] リストから [Cloud SQL] を選択します。
[プロジェクト] リストから、Cloud SQL インスタンスが配置されているプロジェクトを選択します。
[リージョン] リストから、インスタンスが配置されているリージョンを選択します。
[リソース] リストで [参照] をクリックします。バックアップする Cloud SQL インスタンスを選択し、[完了] をクリックします。
[続行] をクリックします。
[バックアップ プラン] リストで、[選択] をクリックします。
Cloud SQL インスタンスを保護するバックアップ プランを選択します。
[完了] をクリックします。
バックアップの詳細を確認し、[スケジュール] をクリックします。
gcloud
バックアップ プランと Cloud SQL インスタンスを作成します。
gcloud backup-dr backup-plan-associations createコマンドを使用して、スケジュール バックアップを構成します。gcloud backup-dr backup-plan-associations create BACKUP_PLAN_ASSOCIATION_NAME \ --location=CSQL_REGION \ --project=CSQL_PROJECT_ID \ --resource=projects/CSQL_PROJECT_ID/instances/CSQL_INSTANCE_ID \ --resource-type=sqladmin.googleapis.com/Instance \ --backup-plan=projects/PROJECT_ID/locations/LOCATION/backupPlans/BACKUP_PLAN次のように置き換えます。
BACKUP_PLAN_ASSOCIATION_NAME: バックアップ プランの関連付けの名前。CSQL_REGION: Cloud SQL インスタンスが配置されているリージョン。CSQL_PROJECT_ID: Cloud SQL インスタンスが配置されているプロジェクトの名前。CSQL_INSTANCE_ID: Cloud SQL インスタンス ID。PROJECT_ID: バックアップ プランが存在するプロジェクトの名前。LOCATION: インスタンスのロケーション。BACKUP_PLAN: バックアップ プランの名前。
Terraform
Cloud SQL インスタンスに関連付けられているバックアップ プランを変更する
Cloud SQL インスタンスに適用されているバックアップ プランを別のバックアップ プランに交換できます。変更先のバックアップ プランは、次の条件を満たしている必要があります。
バックアップ プランが同じ Backup Vault にある。
バックアップ プランが Cloud SQL インスタンスと同じリージョンにある。
Cloud SQL インスタンスに関連付けられているバックアップ プランを変更するには、次の操作を行います。
コンソール
Google Cloud コンソールで、Backup and DR の [Vaulted backups] ページに移動します。
[Vaulted backups] ページには、バックアップ プランが適用されている(または以前に適用されていた)インスタンス、またはバックアップがプロジェクト内の Backup Vault に保存されているインスタンスのみが表示されます。
別のプランを適用するデータソースを選択します。バックアップの詳細ページまたは メニューから、[バックアップ プランを変更] を選択します。[バックアップ プランを選択] ウィンドウには、このインスタンスに有効なバックアップ プランのみが表示されます。
バックアップ プランを選択し、[適用] をクリックします。
gcloud
割り当てられたバックアップ プランを変更します。
gcloud backup-dr backup-plan-associations update BACKUP_PLAN_ASSOCIATION_NAME \ --workload-project=INSTANCE_PROJECT_ID \ --location=INSTANCE_REGION \ --backup-plan=BACKUP_PLAN \ --project=SELECTED_BACKUP_PLAN_PROJECT_ID次のように置き換えます。
BACKUP_PLAN_ASSOCIATION_NAME: バックアップ プランの関連付けリソースの名前。INSTANCE_PROJECT_ID: Cloud SQL インスタンスのプロジェクト ID。INSTANCE_REGION: Cloud SQL インスタンスのロケーション。BACKUP_PLAN: 切り替え先のバックアップ プランの名前。SELECTED_BACKUP_PLAN_PROJECT_ID: 選択したバックアップ プランのプロジェクト ID。
バックアップがスケジュールされているインスタンスを一覧表示する
バックアップがスケジュールされている Cloud SQL インスタンスを一覧表示するには、次の操作を行います。
コンソール
Google Cloud コンソールで、[Vaulted backups] ページに移動します。
テーブルの上部で、[テーブルをフィルタ] > [リソースタイプ] を選択します。[Cloud SQL] を選択します。これにより、バックアップ プランが適用されており、バックアップがプロジェクト内の Backup Vault に保存されている Cloud SQL インスタンスのみが表示されます。
gcloud
gcloud alpha backup-dr backup-plan-associations fetch-for-resource-type コマンドを使用して、バックアップがスケジュールされている Cloud SQL インスタンスを一覧表示します。
gcloud alpha backup-dr backup-plan-associations fetch-for-resource-type sqladmin.googleapis.com/Instance \
--location=LOCATION \
--project=PROJECT_ID
次のように置き換えます。
LOCATION: スケジュール バックアップのロケーション。
PROJECT_ID: Cloud SQL インスタンスが配置されているプロジェクトの名前。
オンデマンド バックアップ
バックアップ プランを使用して Cloud SQL インスタンスのオンデマンド バックアップを開始するには、選択したバックアップ ルールをトリガーしてすぐに実行します。オンデマンド バックアップでは通常、前回の増分バックアップ以降に変更されたデータのみがキャプチャされます。
オンデマンド バックアップを作成するときに、Cloud SQL インスタンスに関連付けられているバックアップ プランからルールを選択できます。このルールによって、オンデマンド バックアップをいつ削除するかを決定します。バックアップ ジョブのステータスは、[ジョブ] ページで確認できます。詳細については、 Google Cloud コンソールでバックアップ ジョブと復元ジョブをモニタリングするをご覧ください。
オンデマンド バックアップの作成
オンデマンド バックアップを作成する手順は次のとおりです。
コンソール
Google Cloud コンソールで、[Vaulted backups] ページに移動します。
[Vaulted backups] ページには、バックアップ プランが適用されており、バックアップがプロジェクト内の Backup Vault に保存されているデータリソースのみが表示されます。
バックアップするリソースを選択します。 メニューまたはリソースの詳細ページから、[オンデマンド バックアップを作成] を選択します。
[オンデマンド バックアップの作成] ウィンドウで、使用するバックアップ ルールを選択し、[作成] をクリックします。
オンデマンド バックアップ ジョブのステータスを表示するには、[通知] をクリックします。
gcloud
オンデマンド バックアップを作成します。既存のバックアップ プランの関連付けを使用して、オンデマンド バックアップを開始します。ルール ID を指定して、この単一のオンデマンド バックアップの有効期限を決定します。
gcloud backup-dr backup-plan-associations trigger-backup BACKUP_PLAN_ASSOCIATION_NAME \ --backup-rule-id=RULE_ID \ --project=PROJECT_ID \ --location=LOCATION \ [--no-async]次のように置き換えます。
BACKUP_PLAN_ASSOCIATION_NAME: バックアップ プランの関連付けの名前。
RULE_ID: オンデマンド バックアップを実行するために関連付けるバックアップ ルール名。
PROJECT_ID: プロジェクトの名前。
LOCATION: スケジュール バックアップのロケーション。
Cloud SQL インスタンスから保護を削除する
Cloud SQL インスタンスの保護を解除するには、インスタンスに適用されているバックアップ プランを削除します。Cloud SQL インスタンスからバックアップ プランを削除しても、バックアップ プランの使用中に作成されたバックアップは削除されません。これらの既存のバックアップは、有効期限が切れるまで引き続きアクセスして管理できます。
Cloud SQL インスタンスから保護を削除するには、次の操作を行います。
コンソール
Google Cloud コンソールで、[Vaulted backups] ページに移動します。
バックアップ プランを削除するデータベースの名前をクリックします。
[バックアップ プランを削除] を選択します。
gcloud
Cloud SQL インスタンスの保護を解除します。
gcloud backup-dr backup-plan-associations delete BACKUP_PLAN_ASSOCIATION_NAME \
--project=PROJECT_ID \
--location=LOCATION
次のように置き換えます。
BACKUP_PLAN_ASSOCIATION_NAME: 削除するバックアップ プランの関連付けの名前。
PROJECT_ID: プロジェクトの名前。
LOCATION: スケジュール バックアップのロケーション。
制限事項
CMEK で暗号化された Cloud SQL インスタンスの場合、Backup and DR は権限を事前に検証します。Backup Vault のプロジェクトの Backup and DR サービス エージェントに、ソース インスタンスの KMS 鍵に対する必要な roles/cloudkms.cryptoKeyEncrypterDecrypter ロールがない場合、バックアップ プランの関連付けの作成は失敗します。バックアップ プランを関連付ける前に、必要な IAM 権限が設定されていることを確認してください。