ポイントインタイム リカバリを使用する

このページでは、ポイントインタイム リカバリを使用してプライマリ Cloud SQL インスタンスを復元する方法について説明します。

ポイントインタイム リカバリの詳細については、ポイントインタイム リカバリをご覧ください。

ポイントインタイム リカバリ用のログストレージ

ポイントインタイム リカバリではトランザクションログが使用されます。これらのログは定期的に更新され、保存容量を使用します。トランザクション ログは、関連する自動バックアップによって自動的に削除されます。これは通常、約 7 日後に発生します。

トランザクション ログのサイズが原因でインスタンスに問題が発生している場合:

  • インスタンスのストレージ サイズを増やすことはできますが、ディスク使用量のトランザクションログ サイズの増加は一時的なものである可能性があります。

  • 予期しないストレージの問題を避けるため、ストレージの自動増量を有効にすることをおすすめします。

  • ログを削除してストレージを復元する場合は、ポイントインタイム リカバリを無効にします。ストレージの使用量を減らしても、インスタンスにプロビジョニングされたストレージのサイズは縮小されません。

  • ログは継続的ではなく、1 日 1 回削除されます。ログの保持期間を 2 日に設定すると、少なくとも 2 日間、最大で 3 日間のログが保持されます。指定した日数分のログの保持を保証するために、バックアップの日数は、ログを保持する日数よりも 1 日長く設定することをおすすめします。

ポイントインタイム リカバリ用のデータベース復旧モデル

インスタンスでポイントインタイム リカバリを有効にすると、Cloud SQL は既存のデータベースと後続のデータベースの復旧モデルを自動的に完全復旧モデルに設定します。

SQL Server の復旧モデルの詳細については、Microsoft のドキュメントをご覧ください。

ポイントインタイム リカバリを有効にする

Google Cloud コンソールで新しいインスタンスを作成すると、[自動バックアップ] の設定が自動的に有効になります。

次の手順では、既存のインスタンスでポイントインタイム リカバリを有効にします。

コンソール

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

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

  2. ポイントインタイム リカバリを有効にするインスタンスの [その他の操作] メニュー その他の操作アイコン を開き、[編集] をクリックします。
  3. [インスタンスのカスタマイズ] で、[データ保護] セクションを開きます。
  4. [ポイントインタイム リカバリを有効にする] チェックボックスをオンにします。
  5. [詳細オプション] を開きます。
  6. ログの保持日数を 1~7 で指定します。
  7. [保存] をクリックします。

gcloud

  1. インスタンスの概要を表示します。
    gcloud sql instances describe INSTANCE_NAME
    
  2. backupConfiguration セクションに enabled: false が表示されている場合は、スケジュール バックアップを有効にします。
    gcloud sql instances patch INSTANCE_NAME \
    --backup-start-time=HH:MM
    

    backup-start-time パラメータを UTC±00 タイムゾーンの 24 時間形式で指定します。

  3. ポイントインタイム リカバリを有効にします。
    gcloud sql instances patch INSTANCE_NAME \
    --enable-point-in-time-recovery
    

    プライマリ インスタンスでポイントインタイム リカバリを有効にする場合は、次のパラメータを追加して、トランザクション ログの保持日数を構成することもできます。

    --retained-transaction-log-days=RETAINED_TRANSACTION_LOG_DAYS
    
  4. 変更を確定します。
    gcloud sql instances describe INSTANCE_NAME

    変更が成功すると、backupConfiguration セクションに pointInTimeRecoveryEnabled: true が表示されます。

REST v1

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

  • project-id: プロジェクト ID
  • instance-id: インスタンス ID
  • start-time「HH:MM」形式の時刻

HTTP メソッドと URL:

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

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

{
  "settings":
  {
    "backupConfiguration":
    {
      "startTime": "start-time",
      "enabled": true,
      "pointInTimeRecoveryEnabled": true
    }
  }
}

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

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

REST v1beta4

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

  • project-id: プロジェクト ID
  • instance-id: インスタンス ID
  • start-time「HH:MM」形式の時刻

HTTP メソッドと URL:

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

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

{
  "settings":
  {
    "backupConfiguration":
    {
      "startTime": "start-time",
      "enabled": true,
      "pointInTimeRecoveryEnabled": true
    }
  }
}

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

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

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

コンソール

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

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

  2. 復元するインスタンスの [その他の操作] メニュー(その他の操作アイコン)を開き、[クローンを作成] をクリックします。
  3. 必要に応じて、[クローンの作成] ページで新しいクローンの ID を更新します。
  4. [過去の時点からクローンを作成] を選択します。
  5. ポイントインタイム リカバリ時間を入力します。
  6. [すべてのデータベース] を選択するか、データベース名を指定します。
    データベース名を指定すると、1 つのみ選択されます。 デフォルトでは、ポイントインタイム リカバリはすべてのデータベースに適用されます。
  7. [クローンを作成] をクリックします。

gcloud

ポイントインタイム リカバリを使用してクローンを作成します。

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

  • SOURCE_INSTANCE_NAME - 復元元のインスタンスの名前。
  • NEW_INSTANCE_NAME - クローンの名前。
  • TIMESTAMP - ソース インスタンスの UTC タイムゾーン(RFC 3339 形式)。例: 2012-11-15T16:19:00.094Z
gcloud sql instances clone SOURCE_INSTANCE_NAME \
NEW_INSTANCE_NAME \
--point-in-time 'TIMESTAMP'

REST v1

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

  • project-id: プロジェクト ID
  • target-instance-id: ターゲット インスタンス ID
  • source-instance-id: ソース インスタンス ID
  • restore-timestamp: 復元の終点となるポイントインタイム

JSON リクエストでは、必要に応じて最大 1 つのデータベース名を指定できます。次に例を示します。"databaseNames": "my-database"

HTTP メソッドと URL:

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

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

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "pointInTime": "restore-timestamp"
  }
}

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

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

REST v1beta4

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

  • project-id: プロジェクト ID
  • target-instance-id: ターゲット インスタンス ID
  • source-instance-id: ソース インスタンス ID
  • restore-timestamp: 復元の終点となるポイントインタイム

JSON リクエストでは、必要に応じて最大 1 つのデータベース名を指定できます。次に例を示します。"databaseNames": "my-database"

HTTP メソッドと URL:

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

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

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "pointInTime": "restore-timestamp"
  }
}

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

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

ポイントインタイム リカバリを無効にする

コンソール

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

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

  2. 無効にするインスタンスの [その他の操作] メニュー その他の操作アイコン を開き、[編集] を選択します。
  3. [インスタンスのカスタマイズ] で、[データ保護] セクションを開きます。
  4. [ポイントインタイム リカバリを有効にする] をクリアします。
  5. [保存] をクリックします。
  6. インスタンスの [概要] ページの [構成] で、ポイントインタイム リカバリの設定が無効と表示されます。

gcloud

  1. ポイントインタイム リカバリを無効にします。
    gcloud sql instances patch INSTANCE_NAME \
    --no-enable-point-in-time-recovery
  2. 変更を確定します。
    gcloud sql instances describe INSTANCE_NAME
    

    変更が成功すると、backupConfiguration セクションに pointInTimeRecoveryEnabled: false が表示されます。

REST v1

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

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

HTTP メソッドと URL:

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

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

{
  "settings":
  {
    "backupConfiguration":
    {
      "enabled": false,
      "pointInTimeRecoveryEnabled": false
    }
  }
}

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

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

REST v1beta4

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

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

HTTP メソッドと URL:

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

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

{
  "settings":
  {
    "backupConfiguration":
    {
      "enabled": false,
      "pointInTimeRecoveryEnabled": false
    }
  }
}

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

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

トランザクション ログの保持を設定する

トランザクション ログの保持日数を設定するには:

コンソール

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

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

  2. トランザクション ログを設定するインスタンスの [その他の操作] メニュー その他の操作アイコン を開き、[編集] を選択します。
  3. [インスタンスのカスタマイズ] で、[データ保護] セクションを開きます。
  4. [ポイントインタイム リカバリを有効にする] セクションで、[詳細オプション] を開きます。
  5. ログの保持日数を 1~7 で指定します。
  6. [保存] をクリックします。

gcloud

インスタンスを編集して、トランザクション ログを保持する日数を設定します。

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

  • INSTANCE-NAME - トランザクション ログを有効にするインスタンスの名前。
  • DAYS-TO-RETAIN - トランザクション ログの保持日数。有効な範囲は 1~7 です。指定しない場合、7(デフォルト値)が設定されます。ポイントインタイム リカバリが有効になっている場合にのみ有効です。トランザクション ログをより長期間保持するには、より大きなストレージ サイズが必要になります。
gcloud sql instances patch INSTANCE-NAME 
--retained-transaction-log-days=DAYS-TO-RETAIN

REST v1beta4

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

  • days-to-retain: トランザクション ログの保持日数(1~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":
    {
      "transactionLogRetentionDays": "days-to-retain"
    }
  }
}

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

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

次のステップ