オンデマンド バックアップと自動バックアップを作成、管理する

このページでは、自動バックアップのスケジュールと無効化、オンデマンド バックアップの作成と管理、Cloud SQL インスタンスのバックアップの表示について説明します。

バックアップの詳細については、バックアップの概要をご覧ください。

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

オンデマンド バックアップを作成するには:

Console

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

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

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [バックアップ] を選択します。
  4. [バックアップを作成] をクリックします。
  5. [バックアップを作成] ページで、必要に応じて説明を追加し、[作成] をクリックします。

gcloud

バックアップを作成します。

gcloud sql backups create \
--async \
--instance=INSTANCE_NAME

--description パラメータを使用してバックアップの説明を入力できます。

カスタム ロケーションにバックアップを作成するには:

gcloud sql backups create \
--async \
--instance=INSTANCE_NAME \
--location=BACKUP_LOCATION

REST v1

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

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

HTTP メソッドと URL:

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

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

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

REST v1beta4

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

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

HTTP メソッドと URL:

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

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

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

自動バックアップのスケジュール

インスタンスの自動バックアップをスケジュールするには:

Console

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

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

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [バックアップ] を選択します。
  4. [設定] の横にある [編集] をクリックします。
  5. データを自動的にバックアップする時間枠を選択します。
  6. [保存] をクリックします。

gcloud

  1. インスタンスを編集して、バックアップの開始時刻を指定します。
    gcloud sql instances patch INSTANCE_NAME --backup-start-time=HH:MM
    backup-start-time パラメータは、UTC±00 タイムゾーンの 24 時間形式で指定され、4 時間のバックアップの時間枠の開始を指定します。バックアップはバックアップ時間枠の任意の時刻に開始できます。
  2. 変更を確認します。
    gcloud sql instances describe INSTANCE_NAME
    backupConfiguration セクションで、enabled: true と指定した時刻が表示されていることを確認します。

Terraform

データベースのバックアップを作成するには、Terraform リソースを使用します。

resource "google_sql_database_instance" "default" {
  name             = "sqlserver-instance-backup"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier = "db-custom-2-7680"
    backup_configuration {
      enabled    = true
      start_time = "20:55"
    }
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

変更を適用する

Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。

Cloud Shell を準備する

  1. Cloud Shell を起動します。
  2. Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。

    このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。

ディレクトリを準備する

Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。

  1. Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイル名の拡張子は .tf にする必要があります(例: main.tf)。このチュートリアルでは、このファイルを main.tf とします。
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。

    新しく作成した main.tf にサンプルコードをコピーします。

    必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。

  3. 環境に適用するサンプル パラメータを確認し、変更します。
  4. 変更を保存します。
  5. Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行います。
    terraform init

    最新バージョンの Google プロバイダを使用する場合は、-upgrade オプションを使用します。

    terraform init -upgrade

変更を適用する

  1. 構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
    terraform plan

    必要に応じて構成を修正します。

  2. 次のコマンドを実行します。プロンプトで「yes」と入力して、Terraform 構成を適用します。
    terraform apply

    Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。

  3. Google Cloud プロジェクトを開いて結果を表示します。Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。

変更を削除する

変更を削除するには、次の操作を行います。

  1. 削除の保護を無効にするには、Terraform 構成ファイルで deletion_protection 引数を false に設定します。
    deletion_protection =  "false"
  2. 次のコマンドを実行します。プロンプトで「yes」と入力して、更新された Terraform 構成を適用します。
    terraform apply
  1. 以前に Terraform 構成で適用されたリソースを削除するために、次のコマンドを実行してプロンプトで「yes」と入力します。

    terraform destroy

REST v1

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

  • PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
  • INSTANCE_NAME: 高可用性構成を行うプライマリまたはリードレプリカ インスタンスの名前
  • START_TIME: 時刻(時と分)

HTTP メソッドと URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

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

{
  "settings":
  {
    "backupConfiguration":
    {
      "startTime": "START_TIME",
      "enabled": true,
      "binaryLogEnabled": true
    }
  }
}

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

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

REST v1beta4

バックアップのカスタム ロケーションの設定

規制で義務付けられている場合にのみ、カスタム バックアップ ロケーションを使用してください。規制で必要とされない場合は、デフォルトのマルチリージョン バックアップ ロケーションを使用します。

カスタム ロケーションは、オンデマンド バックアップと自動バックアップに使用できます。有効なロケーションの値の一覧については、インスタンスのロケーションをご覧ください。

カスタム ロケーションでインスタンスを更新するには:

Console

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

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

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [バックアップ] を選択します。
  4. [設定] の横にある [編集] をクリックします。
  5. [自動バックアップ] セクションで、[詳細オプション] を開きます。
  6. [マルチリージョン(デフォルト)] または [リージョン] をクリックします。
  7. [ロケーション] プルダウン メニューからロケーションを選択します。
  8. [保存] をクリックします。

gcloud

リファレンス情報については、gcloud sql instances patch をご覧ください。

gcloud sql instances patch INSTANCE_NAME \
--backup-location=BACKUP_LOCATION
  

Terraform

データベース インスタンスのバックアップのカスタム ロケーションを指定するには、Terraform リソースを使用します。

resource "google_sql_database_instance" "default" {
  name             = "sqlserver-instance-with-backup-location"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier = "db-custom-2-7680"
    backup_configuration {
      enabled  = true
      location = "us-central1"
    }
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

REST v1

バックアップ ロケーションにインスタンスの settings.backupConfiguration.location パラメータを使用します。

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

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

HTTP メソッドと URL:

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

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

{
  "region": "region"
  "settings":
  {
    "backupConfiguration":
    {
      "location": "backup-region",
      "enabled": true,
    }
  }
}

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

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

REST v1beta4

バックアップ ロケーションにインスタンスの settings.backupConfiguration.location パラメータを使用します。

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

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

HTTP メソッドと URL:

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

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

{
  "region": "region"
  "settings":
  {
    "backupConfiguration":
    {
      "location": "backup-region",
      "enabled": true,
    }
  }
}

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

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

バックアップのリストを表示する

バックアップのリストとバックアップの詳細を表示するには、次のオプションを使用します。

Google Cloud コンソールでは、スキップされたバックアップと失敗したバックアップはバックアップ履歴に表示されません。スキップされたバックアップを表示するには、gcloud または API を使用します。

Console

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

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

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [バックアップ] を選択して、最近のバックアップ、および作成日時とバックアップの種類を表示します。

gcloud

  • インスタンスのバックアップを一覧表示します。
    gcloud sql backups list \
    --instance INSTANCE_NAME
    

    標準リスト パラメータを使用して、結果のフィルタリングや制御を行うことができます。完全なリストについては、gcloud sql backups list コマンドのリファレンス ページをご覧ください。

  • backups list コマンドの出力からバックアップの ID を指定してバックアップの詳細を表示します。
    gcloud sql backups describe BACKUP_ID \
    --instance INSTANCE_NAME
        

REST v1

BackupRuns:list ページの API Explorer を使用して REST API リクエストを送信することもできます。

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

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

HTTP メソッドと URL:

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

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

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

REST v1beta4

BackupRuns:list ページの API Explorer を使用して REST API リクエストを送信することもできます。

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

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

HTTP メソッドと URL:

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

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

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

停止時にバックアップのリストを表示する

インスタンスが停止しているリージョンにある場合、backupRuns.list API でワイルドカード(-)を使用すると、そのインスタンスのバックアップのみを表示できます。ワイルドカードを使用すると、プロジェクト内のすべてのバックアップが返されます。別のインスタンスへの復元をご覧ください。

インスタンスに対して顧客管理の暗号鍵(CMEK)が有効になっているリージョンでサービスが停止している場合、そのインスタンスのバックアップを別のリージョンに復元することはできません。これは、インスタンスで CMEK が有効になっている場合、Cloud SQL が暗号化にリージョンの Cloud KMS 鍵を使用するためです。CMEK インスタンスのバックアップを復元するには、Cloud SQL に CMEK 鍵へのアクセス権が必要です。リージョンが停止した場合、そのリージョンの Cloud KMS 鍵にはアクセスできません。

gcloud

  1. プロジェクト内のすべてのインスタンスのバックアップを一覧表示します。
    gcloud sql backups list --instance -

    コマンドから次のような情報が返されます。

    {
          "kind": "sql#backupRun",
          "status": "SUCCESSFUL",
          "enqueuedTime": "2020-01-21T11:25:33.818Z",
          "id": "backup-id",
          "startTime": "2020-01-21T11:25:33.858Z",
          "endTime": "2020-01-21T11:26:18.663Z",
          "type": "AUTOMATED",
          "windowStartTime": "2020-01-21T10:00:00.479Z",
          "instance": "instance-id",
          "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/backupRuns/backup-id",
          "location": "us"
          "backupKind": "SNAPSHOT"
        }
  2. 必要なインスタンスのバックアップを見つけます。このバックアップを復元するには、別のインスタンスへの復元をご覧ください。

REST v1

  1. プロジェクト内のすべてのバックアップを一覧表示します。

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

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

    HTTP メソッドと URL:

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

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

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

  2. 必要なインスタンスのバックアップを見つけます。このバックアップを復元するには、別のインスタンスへの復元をご覧ください。

REST v1beta4

  1. プロジェクト内のすべてのバックアップを一覧表示します。

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

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

    HTTP メソッドと URL:

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

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

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

  2. 必要なインスタンスのバックアップを見つけます。このバックアップを復元するには、別のインスタンスへの復元をご覧ください。

バックアップ ロケーションの表示

インスタンスに対して実行されたバックアップのロケーションを確認するには、次のように backupRuns を使用します。

Console

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

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

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [バックアップ] を選択します。
  4. バックアップ リストの [ロケーション] 列には、各バックアップのロケーションのタイプ(マルチリージョンまたはリージョン)と特定のマルチリージョンまたはリージョンが表示されます。

gcloud

リファレンス情報については、gcloud sql instances describe をご覧ください。

  1. インスタンスのバックアップを一覧表示します。
    gcloud sql backups list \
    --instance INSTANCE_NAME
    

    標準リスト パラメータを使用して、結果のフィルタリングや制御を行うことができます。完全なリストについては、gcloud sql backups list コマンドのリファレンス ページをご覧ください。

  2. 特定のバックアップの詳細を一覧表示するには、backups list コマンドの出力の ID を使用します。
    gcloud sql backups describe BACKUP_ID \
    --instance INSTANCE_NAME
    

REST v1

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

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

HTTP メソッドと URL:

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

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

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

前の例では:
  • REGION は元のインスタンスのリージョンです。
  • BACKUP_LOCATION は Cloud SQL でバックアップを保存するロケーションです。

REST v1beta4

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

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

HTTP メソッドと URL:

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

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

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

前の例では:
  • REGION は元のインスタンスのリージョンです。
  • BACKUP_LOCATION は Cloud SQL でバックアップを保存するロケーションです。

自動バックアップの保持期間を設定する

保持する自動バックアップの数を設定するには:

Console

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

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

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [バックアップ] を選択します。
  4. [編集] をクリックします。
  5. [バックアップを自動化する] セクションで、[詳細オプション] を開きます。
  6. 一度に保存するバックアップの数を入力します。

    値はデフォルト(7)以上にする必要があります。

  7. [保存] をクリックします。

gcloud

インスタンスを編集して、保持する自動バックアップの数を設定します。値はデフォルト(7)以上にする必要があります。

gcloud sql instances patch INSTANCE_NAME \
--retained-backups-count=NUM_TO_RETAIN

Terraform

データベース インスタンスのために保持する自動バックアップの数を指定するには、Terraform リソースを使用します。

resource "google_sql_database_instance" "default" {
  name             = "sqlserver-instance-backup-retention"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier = "db-custom-2-7680"
    backup_configuration {
      enabled = true
      backup_retention_settings {
        retained_backups = 365
        retention_unit   = "COUNT"
      }
    }
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

REST v1beta4

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

  • unit: 省略可。保持単位には整数または文字列を指定できます。現在サポートされている(デフォルトの)値は、1 または "COUNT" です。
  • num-to-retain: 保持する自動バックアップの数。値はデフォルト(7)以上にする必要があります。
  • project-id: プロジェクト ID
  • instance-id: インスタンス ID

HTTP メソッドと URL:

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

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

{
  "settings":
  {
    "backupConfiguration":
    {
      "backupRetentionSettings":
      {
        "retentionUnit": unit,
        "retainedBackups": "num-to-retain"
      }
    }
  }
}

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

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

バックアップを削除する

自動バックアップやオンデマンド バックアップは削除できます。

バックアップを削除しても、バックアップと同じサイズが解放されるとは限りません。これは、バックアップは増分で行われるため、新しいバックアップの整合性を維持する目的で、削除された古いバックアップの内容の一部が新しいバックアップに転送されるためです。

Console

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

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

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [バックアップ] を選択します。
  4. 削除するバックアップのその他の操作アイコン(その他アイコン)をクリックします。
  5. [削除] を選択します。
  6. [バックアップを削除] ウィンドウで、フィールドに「Delete」と入力して [削除] をクリックします。

gcloud

Cloud SQL インスタンスのバックアップを削除します。

gcloud beta sql backups delete BACKUP_ID \
--instance INSTANCE_NAME
      

パラメータの完全なリストについては、gcloud beta sql backups delete コマンドのリファレンス ページをご覧ください。

REST v1

  1. バックアップを一覧表示して、削除するバックアップの ID を取得します。

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

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

    HTTP メソッドと URL:

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

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

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

  2. バックアップを削除します。

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

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

    HTTP メソッドと URL:

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

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

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

REST v1beta4

  1. バックアップを一覧表示して、削除するバックアップの ID を取得します。

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

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

    HTTP メソッドと URL:

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

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

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

  2. バックアップを削除します。

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

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

    HTTP メソッドと URL:

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

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

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

自動バックアップを無効にする

インスタンスの自動バックアップを無効にするには:

Console

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

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

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [バックアップ] を選択します。
  4. [自動バックアップを管理] をクリックします。
  5. [バックアップを自動化する] のチェックボックスをオフにします。
  6. [保存] をクリックします。

gcloud

インスタンスを編集してバックアップを無効にします。

gcloud sql instances patch INSTANCE_NAME \
--no-backup

REST v1

REST v1beta4

次のステップ