Backup Vault から Cloud SQL インスタンスを復元する

このドキュメントでは、 Google Cloud コンソールまたは gcloud CLI を使用して、Backup Vault から Cloud SQL インスタンスを復元する方法について説明します。新しいインスタンスまたは既存のインスタンスに復元する方法、ソース インスタンスを上書きする方法、ポイントインタイム リカバリ(PITR)を実行する方法について説明します。

Backup and DR サービスのコンセプト機能の詳細については、Backup and DR サービスの概要をご覧ください。最初にデータベースをバックアップする場合は、Cloud SQL インスタンスを Backup Vault にバックアップするをご覧ください。

障害復旧と復元性

Backup and DR サービスは、Cloud SQL インスタンスの障害復旧オプションを提供します。Backup Vault に保存されたバックアップは、ソース インスタンスのライフサイクルとプロジェクトから独立しています。

  • プロジェクトの削除: ソース Cloud SQL インスタンスを含む元のワークロード プロジェクトが削除されても、バックアップを復元できます。これは、CMEK で暗号化されたバックアップに必要な復号権限が、ワークロード プロジェクトではなく、バックアップ Vault のプロジェクト内の Backup and DR サービス エージェントに付与されているためです。これにより、バックアップ ボルトと Cloud Key Management Service 鍵がそのまま残り、サービス エージェントに権限がある限り、バックアップにアクセスして復元できます。

  • 柔軟な復元ターゲット: 同じプロジェクトまたは別のプロジェクトの新しいインスタンスに復元できるため、復元シナリオの柔軟性が向上します。

始める前に

Backup Vault から Cloud SQL インスタンスを復元する前に、必要なロールがあることを確認してください。

バックアップ ボルトから Cloud SQL インスタンスを復元するために必要な権限を取得するには、次の IAM ロールの付与を管理者に依頼してください。

  • 復元ターゲットを作成するには: ターゲット インスタンスが配置されているプロジェクトに対する Cloud SQL 管理者 roles/cloudsql.admin
  • Vault からバックアップを読み取る場合: ソース バックアップが存在するプロジェクトに対する Backup and DR 復元ユーザー roles/backupdr.restoreUser

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

これらの事前定義ロールには、Backup Vault から Cloud SQL インスタンスを復元するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

Backup Vault から Cloud SQL インスタンスを復元するには、次の権限が必要です。

  • 復元ターゲットを作成するには: cloudsql.instances.restore
  • Vault からバックアップを読み取るには: backupdr.bvbackups.useReadOnlyForCloudSqlInstance

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

最新のバックアップから Cloud SQL インスタンスを復元する

Cloud SQL インスタンスを復元するには、次の操作を行います。

コンソール

  1. Google Cloud コンソールで、[Vaulted backups] ページに移動します。

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

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

  2. 復元するバックアップを選択します。バックアップのバックアップ詳細ページまたは メニューから、[復元] を選択します。

    [復元ページ] が表示されます。ここで、次の復元オプションを選択します。

    • [リソースタイプ] に Cloud SQL が事前入力されます。

    • [リソース名] で、復元する Cloud SQL インスタンスを選択します。

    • [バックアップ] をクリックすると、利用可能なすべてのバックアップが表示されるペインが開きます。復元する特定のバックアップを選択します。

    • [復元先を選択] で、Cloud SQL インスタンスを復元するプロジェクトを選択します。

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

  4. [復元先の選択] を求めるメッセージが表示されたら、次のオプションから選択します。

    • 新しいインスタンスに復元: バックアップに保存されている構成に基づいて新しいインスタンスを作成します。復元の完了後にインスタンスをカスタマイズできます。小文字、数字、ハイフンを使用して新しいインスタンス ID を指定します。先頭には英字を使用してください。
    • 既存のインスタンスを上書きする: 使用可能なインスタンスのリストから、上書きする既存のインスタンスを選択します。

    • ソース インスタンスを上書きする: 現在のインスタンスを上書きします。以前のポイントインタイム リカバリ ログを含め、選択したインスタンスの現在のデータがすべて上書きされます。上書きされたデータは後で復元できません。本番環境での使用は推奨されません。

gcloud

  1. 復元するバックアップを含むデータソースを見つけます。データソースは、Cloud SQL インスタンス プロジェクトまたは Backup Vault プロジェクトから確認できます。

    • Cloud SQL インスタンス プロジェクトから: data-source-reference を使用します

      gcloud alpha backup-dr data-source-references fetch-for-resource-type sqladmin.googleapis.com/Instance \
      --location=LOCATION \
      --project=CSQL_INSTANCE_PROJECT_ID \
      --filter='dataSourceGcpResourceInfo.cloudSqlInstanceProperties.name="projects/CSQL_INSTANCE_PROJECT_ID/instances/CSQL_INSTANCE_ID"' \
      --format="table(RESOURCE_NAME,DATA_SOURCE)"
      

      次のように置き換えます。

      • LOCATION: Backup Vault のロケーション。

      • CSQL_INSTANCE_ID: Cloud SQL インスタンスのデータベース名。

      • CSQL_INSTANCE_PROJECT_ID: Cloud SQL インスタンスを含むプロジェクト。

    • Backup Vault プロジェクトから: data-source を使用します。

      gcloud backup-dr data-sources list \
      --location=LOCATION \
      --project=BACKUP_VAULT_PROJECT_ID \
      --filter='dataSourceGcpResource.cloudSqlInstanceDatasourceProperties.name=projects/CSQL_INSTANCE_PROJECT_ID/instances/CSQL_INSTANCE_ID' \
      --format="table(dataSourceGcpResource.cloudSqlInstanceDatasourceProperties.name:label=RESOURCE_NAME,name:label=DATA_SOURCE)"
      

      次のように置き換えます。

      • LOCATION: Backup Vault のロケーション。

      • CSQL_INSTANCE_ID: Cloud SQL インスタンスの名前。

      • CSQL_INSTANCE_PROJECT_ID: Cloud SQL インスタンスを含むプロジェクト。

      • BACKUP_VAULT_PROJECT_ID: Backup Vault を含むプロジェクト。

  2. gcloud backup-dr backups list コマンドを使用してデータソース内のすべてのバックアップを一覧表示し、復元するバックアップを一覧表示して選択します。

    gcloud backup-dr backups list --data-source=DATA_SOURCE \
    --format="table(consistencyTime,backupType,name:label=BACKUP_NAME)"
    
  3. gcloud sql backups restore コマンドを使用して Cloud SQL インスタンスを復元します。

    gcloud sql backups restore BACKUP_NAME \
    --restore-instance=RESTORE_INSTANCE \
    --project=RESTORE_PROJECT
    --region=RESTORE_REGION
    

    次のように置き換えます。

    • BACKUP_NAME: データの復元元となる Backup Vault の名前。

    • RESTORE_INSTANCE: ターゲット Cloud SQL インスタンス名。

    • RESTORE_PROJECT: Cloud SQL インスタンスを復元するプロジェクト。

    • RESTORE_REGION: 新しい Cloud SQL インスタンスに復元するリージョン。リージョン バックアップの場合、これは省略可能です。既存のインスタンスに復元する場合は使用しないでください。

  4. 省略可: 他のプロパティをオーバーライドするには、Backup and DR Service gcloud CLI コマンドの概要をご覧ください。

Cloud SQL インスタンスを別の時点に復元する

次の手順に沿って、Cloud SQL インスタンスを特定の時点に復元します。特定の時点に復元すると、Cloud SQL クローンが作成されます。

  1. Google Cloud コンソールで、[Vaulted backups] ページに移動します。

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

  2. 表の上部で [表をフィルタリング] を選択し、[リソースタイプ] をクリックします。[Cloud SQL] を選択します。これにより、バックアップ プランが適用され、バックアップがプロジェクト内の Backup Vault に保存されている Cloud SQL インスタンスのみが表示されます。

  3. [特定の時点から復元] をクリックします。Cloud SQL の [クローンの作成] ページが開きます。

  4. Backup Vault を使用して PITR を実行するの手順に沿って操作します。

次のステップ

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