このページでは、ポイントインタイム リカバリを使用してプライマリ Cloud SQL インスタンスを復元する方法について説明します。
ポイントインタイム リカバリの詳細については、ポイントインタイム リカバリをご覧ください。
ポイントインタイム リカバリ用のログストレージ
ポイントインタイム リカバリではトランザクションログが使用されます。これらのログは定期的に更新され、保存容量を使用します。トランザクション ログは、関連する自動バックアップによって自動的に削除されます。これは通常、約 7 日後に発生します。
トランザクション ログのサイズが原因でインスタンスに問題が発生している場合:
インスタンスのストレージ サイズを増やすことはできますが、ディスク使用量のトランザクションログ サイズの増加は一時的なものである可能性があります。
予期しないストレージの問題を避けるため、ストレージの自動増量を有効にすることをおすすめします。
ログを削除してストレージを復元する場合は、ポイントインタイム リカバリを無効にします。ストレージの使用量を減らしても、インスタンスにプロビジョニングされたストレージのサイズは縮小されません。
ログは継続的ではなく、1 日 1 回削除されます。ログの保持期間を 2 日に設定すると、少なくとも 2 日間、最大で 3 日間のログが保持されます。指定した日数分のログの保持を保証するために、バックアップの日数は、ログを保持する日数よりも 1 日長く設定することをおすすめします。
ポイントインタイム リカバリ用のデータベース復旧モデル
インスタンスでポイントインタイム リカバリを有効にすると、Cloud SQL は既存のデータベースと後続のデータベースの復旧モデルを自動的に完全復旧モデルに設定します。
SQL Server の復旧モデルの詳細については、Microsoft のドキュメントをご覧ください。
ポイントインタイム リカバリを有効にする
Google Cloud コンソールで新しいインスタンスを作成すると、[
自動バックアップ] の設定が自動的に有効になります。
次の手順では、既存のインスタンスでポイントインタイム リカバリを有効にします。
コンソール
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
Cloud SQL の [インスタンス] に移動
- ポイントインタイム リカバリを有効にするインスタンスの [その他の操作] メニュー を開き、[編集] をクリックします。
- [インスタンスのカスタマイズ] で、[データ保護] セクションを開きます。
- [ポイントインタイム リカバリを有効にする] チェックボックスをオンにします。
- [詳細オプション] を開きます。
- ログの保持日数を 1~7 で指定します。
- [保存] をクリックします。
gcloud
- インスタンスの概要を表示します。
gcloud sql instances describe INSTANCE_NAME
backupConfiguration
セクションに enabled: false
が表示されている場合は、スケジュール バックアップを有効にします。
gcloud sql instances patch INSTANCE_NAME \
--backup-start-time=HH:MM
backup-start-time
パラメータを UTC±00 タイムゾーンの 24 時間形式で指定します。
- ポイントインタイム リカバリを有効にします。
gcloud sql instances patch INSTANCE_NAME \
--enable-point-in-time-recovery
プライマリ インスタンスでポイントインタイム リカバリを有効にする場合は、次のパラメータを追加して、トランザクション ログの保持日数を構成することもできます。
--retained-transaction-log-days=RETAINED_TRANSACTION_LOG_DAYS
- 変更を確定します。
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
}
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id"
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
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
}
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id"
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
コンソール
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
Cloud SQL の [インスタンス] に移動
- 復元するインスタンスの [その他の操作] メニュー()を開き、[クローンを作成] をクリックします。
- 必要に応じて、[クローンの作成] ページで新しいクローンの ID を更新します。
- [過去の時点からクローンを作成] を選択します。
- ポイントインタイム リカバリ時間を入力します。
- [すべてのデータベース] を選択するか、データベース名を指定します。
データベース名を指定すると、1 つのみ選択されます。
デフォルトでは、ポイントインタイム リカバリはすべてのデータベースに適用されます。
- [クローンを作成] をクリックします。
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"
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone"
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/target-instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "CREATE",
"name": "operation-id",
"targetId": "target-instance-id",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
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"
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone"
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/target-instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "CREATE",
"name": "operation-id",
"targetId": "target-instance-id",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
ポイントインタイム リカバリを無効にする
コンソール
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
Cloud SQL の [インスタンス] に移動
- 無効にするインスタンスの [その他の操作] メニュー を開き、[編集] を選択します。
- [インスタンスのカスタマイズ] で、[データ保護] セクションを開きます。
- [ポイントインタイム リカバリを有効にする] をクリアします。
- [保存] をクリックします。
- インスタンスの [概要] ページの [構成] で、ポイントインタイム リカバリの設定が無効と表示されます。
gcloud
- ポイントインタイム リカバリを無効にします。
gcloud sql instances patch INSTANCE_NAME \
--no-enable-point-in-time-recovery
- 変更を確定します。
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
}
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id"
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
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
}
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id"
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
トランザクション ログの保持を設定する
トランザクション ログの保持日数を設定するには:
コンソール
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
Cloud SQL の [インスタンス] に移動
- トランザクション ログを設定するインスタンスの [その他の操作] メニュー を開き、[編集] を選択します。
- [インスタンスのカスタマイズ] で、[データ保護] セクションを開きます。
- [ポイントインタイム リカバリを有効にする] セクションで、[詳細オプション] を開きます。
-
ログの保持日数を 1~7 で指定します。
- [保存] をクリックします。
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"
}
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id"
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
次のステップ