Cloud SQL インスタンスを Backup Vault にバックアップする

このページでは、変更不可と強制保持を提供する Backup Vault に Cloud SQL インスタンスをバックアップする方法について説明します。

コンソールで、バックアップ プランを適用して Cloud SQL インスタンスを Backup Vault にバックアップできます。次のいずれかの方法でバックアップできます。 Google Cloud どちらの方法でも、バックアップを Backup Vault に安全に保存できるため、データ損失やその他の予期しないイベントが発生した場合に Cloud SQL インスタンスを確実に復元できます。

  • スケジュール バックアップ: Cloud SQL インスタンスを 特定の頻度(毎日、毎週、毎月、毎年など)で自動的にバックアップします。
  • オンデマンド バックアップ 。オンデマンド バックアップはいつでも作成できます。 オンデマンド バックアップは、データベースに大幅な変更を加える前にバックアップを作成する場合や、アドホック データ保護に役立ちます。

始める前に

  1. Cloud SQL インスタンスが配置されている場所で Backup and DR サービス API を有効にします。

    API の有効化

  2. Backup Vault を作成します

  3. バックアップ プランを作成します

  4. バックアップ ユーザーに IAM のロールと権限を割り当てます

  5. Cloud SQL プロジェクトで Backup Vault へのアクセス権を付与します

  6. Backup and DR のバックアップ ジョブをモニタリングするために、バケットに Observability Analytics を設定します。

  7. CMEK 対応インスタンスの場合: ソース Cloud SQL インスタンスが 顧客管理の暗号鍵(CMEK)で保護されている場合は、 Backup and DR サービス サービス エージェントに roles/cloudkms.cryptoKeyEncrypterDecrypter Identity and Access Management ロールを付与する必要があります。この権限は、ソース Cloud SQL インスタンスで使用される Cloud Key Management Service 鍵に必要です。

    Backup and DR サービス サービス エージェントは、Backup Vault が配置されているプロジェクトにあります。CMEK 対応の Cloud SQL インスタンスを保護する前に、このロールをサービス アカウントに付与します。

バックアップ ユーザーの IAM ロールと権限

スケジュール バックアップを構成するか、オンデマンド バックアップを実行するために必要な権限を取得するには、Backup Vault プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与の詳細については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

これらの事前定義ロールには スケジュール バックアップを構成するか、オンデマンド バックアップを実行するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

スケジュール バックアップを構成するか、オンデマンド バックアップを実行するには、次の権限が必要です。

  • backupdr.backupPlans.list
  • backupdr.backupPlanAssociations.createForCloudSqlInstance
  • backupdr.backupPlanAssociations.fetchForCloudSqlInstance
  • 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 管理者プロジェクト
バックアップ プランの関連付け バックアップ プランの関連付けの作成 cloudsql.instances.updateBackupDrConfig
backupdr.backupPlanAssociations.createForCloudSqlInstance
backupdr.backupPlans.useForCloudSqlInstance
ワークロード プロジェクト
ワークロード プロジェクト
管理者プロジェクト
バックアップ プランの関連付けの削除 backupdr.backupPlanAssociations.deleteForCloudSqlInstance
cloudsql.instances.updateBackupDrConfig
ワークロード プロジェクト
ワークロード プロジェクト
バックアップ プランの関連付けでオンデマンド バックアップをトリガーする backupdr.backupPlanAssociations.triggerBackupForCloudSqlInstance ワークロード プロジェクト
バックアップ プランの関連付けの取得 backupdr.backupPlanAssociations.getForCloudSqlInstance ワークロード プロジェクト
バックアップ プランの関連付けの一覧表示 backupdr.backupPlanAssociations.list ワークロード プロジェクト
バックアップ プランの関連付けの取得 backupdr.backupPlanAssociations.fetchForCloudSqlInstance ワークロード プロジェクト
データソース データソースの取得 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 インスタンスのスケジュール バックアップを構成するには、次の手順を使用します。

コンソール

  1. コンソールで、[Vault に保存されているバックアップ] ページに移動します。 Google Cloud

    [Vault に保存されているバックアップ] に移動

  2. [バックアップをスケジュール] をクリックします。

  3. [リソースの種類] リストから [Cloud SQL] を選択します。

  4. [プロジェクト] リストから、Cloud SQL インスタンスが配置されているプロジェクトを選択します。

  5. [リージョン] リストから、インスタンスが配置されているリージョンを選択します。

  6. [リソース] リストで、[ブラウジング] をクリックします。バックアップする Cloud SQL インスタンスを選択して、[完了] をクリックします。

  7. [続行] をクリックします。

  8. [バックアップ プラン] リストで、[選択] をクリックします。

  9. Cloud SQL インスタンスを保護するバックアップ プランを選択します。

  10. [完了] をクリックします。

  11. バックアップの詳細を確認して、[スケジュール] をクリックします。

gcloud

  1. バックアップ プランと Cloud SQL インスタンスを作成します。

  2. 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

Terraform リソースを使用して、スケジュール バックアップを構成できます


# Before creating a backup plan association, you need to create backup plan (google_backup_dr_backup_plan)
# and Cloud SQL Instance (google_sql_database_instance).
resource "google_backup_dr_backup_plan_association" "csql_association" {
  provider                   = google-beta
  location                   = "us-central1"
  backup_plan_association_id = "my-csql-bpa"
  resource                   = "projects/${google_sql_database_instance.default.project}/instances/${google_sql_database_instance.default.name}"
  resource_type              = "sqladmin.googleapis.com/Instance"
  backup_plan                = google_backup_dr_backup_plan.csql_default.name
}

バックアップがスケジュールされているインスタンスを一覧表示する

バックアップがスケジュールされている Cloud SQL インスタンスを一覧表示するには、次の手順を使用します。

コンソール

  1. コンソールで、[Vault に保存されているバックアップ] ページに移動します。 Google Cloud

    [Vault に保存されているバックアップ] に移動

  2. 表の上部で、[表をフィルタリング] [>] [リソースタイプ] を選択します。 [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 をご覧ください。

オンデマンド バックアップの作成

オンデマンド バックアップを作成するには、次の手順を使用します。

コンソール

  1. コンソールで、[Vault に保存されているバックアップ] ページに移動します。 Google Cloud

    [Vault に保存されているバックアップ] に移動

    [Vault に保存されているバックアップ] ページには、バックアップ プランが適用され、バックアップがプロジェクト内の Backup Vault に保存されているデータリソースのみが表示されます。

  2. バックアップするリソースを選択します。 メニューから、またはリソースの詳細ページから、 [Create on-demand backup]を選択します。

  3. [オンデマンド バックアップの作成] ウィンドウで、使用するバックアップ ルールを選択して [作成] をクリックします。

  4. オンデマンド バックアップ ジョブのステータスを表示するには、[通知] をクリックします。

gcloud

  1. オンデマンド バックアップを作成します。既存のバックアップ プランの関連付けを使用して、オンデマンド バックアップを開始します。ルール 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 インスタンスの保護を解除するには、次の手順を使用します。

コンソール

  1. コンソールで、[Vault に保存されているバックアップ] ページに移動します。 Google Cloud

    [Vault に保存されているバックアップ] に移動

  2. バックアップ プランを削除するデータベースの名前をクリックします。

  3. [バックアップ プランを削除] を選択します。

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 権限が付与されていることを確認してください。

次のステップ