インスタンスを復元する

このページでは、バックアップからインスタンスを復元する方法とインスタンスのポイントインタイム リカバリを実行する方法について説明します。

復元オペレーションやポイントインタイム リカバリの詳細、ベスト プラクティス、要件については、インスタンスの復元の概要をご覧ください。

バックアップからインスタンスを復元する

バックアップを使用して、バックアップの取得元の同じインスタンスを復元するか、バックアップを使用して同じプロジェクト内の別のインスタンスを復元できます。

別のインスタンスに復元する

バックアップから別のインスタンスに復元すると、ターゲット インスタンス上のデータが、バックアップを作成したときのソース インスタンスの状態に更新されます。詳細については、復元の実行についての全般的なヒント別のインスタンスへの復元のヒントと要件をご覧ください。

プロジェクトのバックアップのリストが必要だが、停止が原因でインスタンスの概要ページに表示できない場合は、backupRuns.list API でワイルドカード(-)を使用できます。ワイルドカード オプションでプロジェクト内のすべてのインスタンスのバックアップのリストを取得します。詳細については、停止時にバックアップを表示するをご覧ください。

コンソール

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. ターゲット インスタンスにリードレプリカがある場合は、右端にあるその他の操作メニュー その他アイコン を使用して、それらを削除します。
  3. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  4. SQL ナビゲーション メニューから [バックアップ] を選択します。
  5. 復元するバックアップを見つけて、[復元] を選択します。
  6. [バックアップからのインスタンスの復元] ページの [バックアップの詳細を確認] で、正しいバックアップを選択していることを確認します。
  7. [復元先の選択] で、[既存のインスタンスを上書きする] を選択します。
  8. [インスタンス] プルダウン メニューから、復元に使用するインスタンスを選択します。選択したインスタンスとそのすべてのデータが上書きされます。
  9. 選択を確定するには、上書きするインスタンスの名前を [移行先インスタンス ID] フィールドに入力します。
  10. 復元プロセスを開始するには、[復元] をクリックします。
  11. ターゲット インスタンスの [オペレーション] タブに移動して、復元オペレーションのステータスを確認します。
  12. 復元オペレーションが完了したら、前に削除したレプリカを再作成します。

gcloud

  1. ターゲット インスタンスについて記述し、レプリカがあるかどうかを確認します。
    gcloud sql instances describe TARGET_INSTANCE_NAME

    replicaNames にリストされているインスタンスをメモします。

  2. すべてのレプリカを削除します。
    gcloud sql instances delete REPLICA_NAME

    レプリカごとに繰り返します。

  3. インスタンスのバックアップのリストを取得します。
    gcloud sql backups list \
    --instance SOURCE_INSTANCE_NAME
  4. 使用するバックアップを見つけ、その ID 値を記録します。
  5. ターゲット インスタンスの指定されたバックアップから復元します。
    gcloud sql backups restore BACKUP_ID \
    --restore-instance=TARGET_INSTANCE_NAME \
    --backup-instance=SOURCE_INSTANCE_NAME
        
  6. 復元が完了したら、前に削除したレプリカを再作成します。

REST v1

  1. ターゲット インスタンスのすべてのレプリカを一覧表示します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=replicaNames

    リクエストを送信するには、次のいずれかのオプションを開きます。

    次のような JSON レスポンスが返されます。

  2. すべてのレプリカを削除します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • replica-id: レプリカ ID

    HTTP メソッドと URL:

    DELETE https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-id

    リクエストを送信するには、次のいずれかのオプションを開きます。

    次のような JSON レスポンスが返されます。

    レプリカごとに繰り返します。

  3. ソース インスタンスのバックアップの一覧を表示し、使用するバックアップの ID を取得します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/backupRuns

    リクエストを送信するには、次のいずれかのオプションを開きます。

    次のような JSON レスポンスが返されます。

    または、インスタンスが停止しているリージョンにある場合は、プロジェクト内のすべてのバックアップを一覧表示します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID。プロジェクト内のすべてのバックアップのリストの場合は -

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/-/backupRuns

    リクエストを送信するには、次のいずれかのオプションを開きます。

    次のような JSON レスポンスが返されます。

    復元が必要なインスタンスのバックアップを見つけます。
  4. バックアップからターゲット インスタンスを復元します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • target-instance-id: ターゲット インスタンス ID
    • source-instance-id: ソース インスタンス ID
    • backup-id バックアップ ID

    HTTP メソッドと URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/target-instance-id/restoreBackup

    リクエストの本文(JSON):

    {
      "restoreBackupContext":
      {
        "backupRunId": backup-id,
        "instanceId": "source-instance-id"
      }
    }
    

    リクエストを送信するには、次のいずれかのオプションを開きます。

    次のような JSON レスポンスが返されます。

  5. 復元オペレーションが完了したら、前に削除したレプリカを再作成します。

REST v1beta4

  1. ターゲット インスタンスのすべてのレプリカを一覧表示します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=replicaNames

    リクエストを送信するには、次のいずれかのオプションを開きます。

    次のような JSON レスポンスが返されます。

  2. すべてのレプリカを削除します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • replica-id: レプリカ ID

    HTTP メソッドと URL:

    DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-id

    リクエストを送信するには、次のいずれかのオプションを開きます。

    次のような JSON レスポンスが返されます。

    レプリカごとに繰り返します。

  3. ソース インスタンスのバックアップの一覧を表示し、使用するバックアップの ID を取得します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/backupRuns

    リクエストを送信するには、次のいずれかのオプションを開きます。

    次のような JSON レスポンスが返されます。

  4. バックアップからターゲット インスタンスを復元します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • target-instance-id: ターゲット インスタンス ID
    • source-instance-id: ソース インスタンス ID
    • backup-id バックアップ ID

    HTTP メソッドと URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/target-instance-id/restoreBackup

    リクエストの本文(JSON):

    {
      "restoreBackupContext":
      {
        "backupRunId": backup-id,
        "instanceId": "source-instance-id"
      }
    }
    

    リクエストを送信するには、次のいずれかのオプションを開きます。

    次のような JSON レスポンスが返されます。

  5. 復元オペレーションが完了したら、前に削除したレプリカを再作成します。

同じインスタンスに復元する

バックアップから同じインスタンスに復元すると、そのインスタンス上のデータが、バックアップを作成したときの状態に戻ります。インスタンスの復元については、復元の実行についての全般的なヒントをご覧ください。

コンソール

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. ターゲット インスタンスにリードレプリカがある場合は、右端にあるその他の操作メニュー その他アイコン を使用して、それらを削除します。
  3. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  4. SQL ナビゲーション メニューから [バックアップ] を選択します。
  5. 使用するバックアップを見つけて、[復元] を選択します。
  6. [バックアップからのインスタンスの復元] ページの [バックアップの詳細を確認] で、正しいバックアップを選択していることを確認します。
  7. [復元先の選択] で、[ソース インスタンスを上書きする] を選択します。

    移行元インスタンスの名前が括弧で囲まれて指定されていることを確認します。

  8. 選択を確定するには、[移行先インスタンス ID] フィールドにインスタンス名を入力します。
  9. 復元プロセスを開始するには、[復元] をクリックします。
  10. インスタンスの [オペレーション] ページに移動して、復元オペレーションのステータスを確認します。
  11. 復元オペレーションが完了したら、最初の手順で削除したレプリカを再作成します。

gcloud

  1. インスタンスにレプリカがあるかどうかを示します。
    gcloud sql instances describe INSTANCE_NAME

    replicaNames にリストされているインスタンスをメモします。

  2. すべてのレプリカを削除します。
    gcloud sql instances delete REPLICA_NAME

    すべてのレプリカについて繰り返します。

  3. インスタンスのバックアップをリストします。
    gcloud sql backups list --instance INSTANCE_NAME
  4. 使用するバックアップを見つけ、その ID 値を記録します。
  5. 指定したバックアップからインスタンスを復元します。
    gcloud sql backups restore BACKUP_ID \
    --restore-instance=INSTANCE_NAME
  6. 復元オペレーションが完了したら、最初の手順で削除したレプリカを再作成します。

REST v1

  1. インスタンスのすべてのレプリカを一覧表示します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=replicaNames

    リクエストを送信するには、次のいずれかのオプションを開きます。

    次のような JSON レスポンスが返されます。

  2. すべてのレプリカを削除します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • replica-id: レプリカ ID

    HTTP メソッドと URL:

    DELETE https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-id

    リクエストを送信するには、次のいずれかのオプションを開きます。

    次のような JSON レスポンスが返されます。

    リードレプリカごとに繰り返します。

  3. インスタンスのバックアップを一覧表示し、使用するバックアップの ID を取得します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/backupRuns

    リクエストを送信するには、次のいずれかのオプションを開きます。

    次のような JSON レスポンスが返されます。

  4. バックアップからインスタンスを復元します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID
    • backup-id バックアップ ID

    HTTP メソッドと URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/restoreBackup

    リクエストの本文(JSON):

    {
      "restoreBackupContext":
      {
        "backupRunId": "backup-id",
      }
    }
    

    リクエストを送信するには、次のいずれかのオプションを開きます。

    次のような JSON レスポンスが返されます。

  5. 復元オペレーションが完了したら、前に削除したレプリカを再作成します。

REST v1beta4

  1. インスタンスのすべてのレプリカを一覧表示します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=replicaNames

    リクエストを送信するには、次のいずれかのオプションを開きます。

    次のような JSON レスポンスが返されます。

  2. すべてのレプリカを削除します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • replica-id: レプリカ ID

    HTTP メソッドと URL:

    DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-id

    リクエストを送信するには、次のいずれかのオプションを開きます。

    次のような JSON レスポンスが返されます。

    リードレプリカごとに繰り返します。

  3. インスタンスのバックアップを一覧表示し、使用するバックアップの ID を取得します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/backupRuns

    リクエストを送信するには、次のいずれかのオプションを開きます。

    次のような JSON レスポンスが返されます。

  4. バックアップからインスタンスを復元します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID
    • backup-id バックアップ ID

    HTTP メソッドと URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/restoreBackup

    リクエストの本文(JSON):

    {
      "restoreBackupContext":
      {
        "backupRunId": "backup-id",
      }
    }
    

    リクエストを送信するには、次のいずれかのオプションを開きます。

    次のような JSON レスポンスが返されます。

  5. 復元オペレーションが完了したら、前に削除したレプリカを再作成します。

別のプロジェクトのインスタンスに復元する

project パラメータを使用して、バックアップが実行されたプロジェクトとは別のプロジェクトのインスタンスにデータを復元できます。project パラメータを使用するときに、データを復元するプロジェクトのインスタンスで restoreBackup を呼び出します。バックアップから別のインスタンスに復元すると、ターゲット インスタンス上のデータが、バックアップを作成したときのソース インスタンスの状態に更新されます。

権限

別のプロジェクトに復元するユーザーは、ターゲット プロジェクトに対する cloudsql.instances.restoreBackup 権限と、ソース インスタンスに対する cloudsql.backupRuns.get 権限を持っている必要があります。これらの権限は、Cloud SQL Admin ロールに含まれています。

別のプロジェクトのインスタンスにデータを復元するには:

REST v1

backupId を取得するには、以下を実行します。

リクエストのデータを使用する前に、次のように置き換えます。

  • project-id: プロジェクト ID
  • instance-id: インスタンス ID

HTTP メソッドと URL:

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/backupRuns

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

バックアップを別のプロジェクトのインスタンスに復元します。

リクエストのデータを使用する前に、次のように置き換えます。

  • source-project-id: ソース プロジェクト ID
  • target-project-id: ターゲット プロジェクト ID
  • target-instance-id: ターゲット インスタンス ID
  • source-instance-id: ソース インスタンス ID
  • backup-id バックアップ ID

HTTP メソッドと URL:

POST https://sqladmin.googleapis.com/v1/projects/target-project-id/instances/target-instance-id/restoreBackup

リクエストの本文(JSON):

{
  "restoreBackupContext":
  {
    "backupRunId": backup-id,
    "project": "source-project-id",
    "instanceId": "source-instance-id"
  }
}

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

project プロパティについて詳しくは、restoreBackup をご覧ください。

REST v1beta4

backupId を取得するには、以下を実行します。

リクエストのデータを使用する前に、次のように置き換えます。

  • project-id: プロジェクト ID
  • instance-id: インスタンス ID

HTTP メソッドと URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/backupRuns

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

バックアップを別のプロジェクトのインスタンスに復元します。

リクエストのデータを使用する前に、次のように置き換えます。

  • source-project-id: ソース プロジェクト ID
  • target-project-id: ターゲット プロジェクト ID
  • target-instance-id: ターゲット インスタンス ID
  • source-instance-id: ソース インスタンス ID
  • backup-id バックアップ ID

HTTP メソッドと URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/target-project-id/instances/target-instance-id/restoreBackup

リクエストの本文(JSON):

{
  "restoreBackupContext":
  {
    "backupRunId": backup-id,
    "project": "source-project-id",
    "instanceId": "source-instance-id"
  }
}

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

project プロパティについて詳しくは、restoreBackup をご覧ください。

ポイントインタイム リカバリを実行する

ポイントインタイム リカバリを実行するには、ポイントインタイム リカバリをご覧ください。

リカバリ位置を確認する

ポイントインタイム リカバリを実行するには、事前にバイナリログ ファイル名とインスタンスを復元するポイントインタイムに対応する位置を確認する必要があります。

この作業を行うには、リカバリ位置の確認をご覧ください。

次のステップ