Google Cloud コンソールで新しいインスタンスを作成すると、自動バックアップとポイントインタイム リカバリ(PITR)の両方が自動的に有効になります。既存のインスタンスに対して PITR を構成するには、次の操作を行います。
PITR を有効にする
Google Cloud コンソールで新しいインスタンスを作成すると、[自動バックアップ] と [ポイントインタイム リカバリを有効にする] の両方が自動的に有効になります。次の手順では、既存のプライマリ インスタンスで PITR を有効にします。
コンソール
-
Google Cloud コンソールで、Cloud SQL の [インスタンス] ページに移動します。
- PITR を有効にするインスタンスの [その他の操作] メニュー
を開き、[編集] をクリックします。 - [インスタンスのカスタマイズ] で、[データ保護] セクションを開きます。
- [ポイントインタイム リカバリを有効にする] チェックボックスをオンにします。
- [ログの日数] フィールドに、ログを保持する日数を入力します。Cloud SQL Enterprise Plus エディションの場合は 1~35、Cloud SQL Enterprise エディションの場合は 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 時間形式で指定します。- PITR を有効にします。
gcloud sql instances patch INSTANCE_NAME \ --enable-point-in-time-recovery
プライマリ インスタンスで PITR を有効にする場合は、次のパラメータを追加して、トランザクション ログの保持日数を構成することもできます。
--retained-transaction-log-days=RETAINED_TRANSACTION_LOG_DAYS - 変更を確定します。
gcloud sql instances describe INSTANCE_NAME
変更が成功すると、
backupConfigurationセクションにpointInTimeRecoveryEnabled: trueが表示されます。
Terraform
PITR を有効にするには、Terraform リソースを使用します。
変更を適用する
Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。
Cloud Shell を準備する
- Cloud Shell を起動します。
-
Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。
このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。
ディレクトリを準備する
Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。
-
Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は
.tfにする必要があります(例:main.tf)。このチュートリアルでは、このファイルをmain.tfとします。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。
新しく作成した
main.tfにサンプルコードをコピーします。必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。
- 環境に適用するサンプル パラメータを確認し、変更します。
- 変更を保存します。
-
Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行います。
terraform init
最新バージョンの Google プロバイダを使用する場合は、
-upgradeオプションを使用します。terraform init -upgrade
変更を適用する
-
構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
terraform plan
必要に応じて構成を修正します。
-
次のコマンドを実行します。プロンプトで「
yes」と入力して、Terraform 構成を適用します。terraform apply
Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。
- Google Cloud プロジェクトを開いて結果を表示します。 Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。
変更を削除する
変更を削除するには、次の手順を行います。
- 削除からの保護を無効にするには、Terraform 構成ファイルで
deletion_protection引数をfalseに設定します。deletion_protection = "false"
- 次のコマンドを実行します。プロンプトで「
yes」と入力して、更新された Terraform 構成を適用します。terraform apply
-
次のコマンドを実行します。プロンプトで「
yes」と入力して、以前に Terraform 構成で適用されたリソースを削除します。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,
"pointInTimeRecoveryEnabled": true
}
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
REST v1beta4
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
- INSTANCE_NAME: 高可用性構成を行うプライマリまたはリードレプリカ インスタンスの名前
- START_TIME: 時刻(時と分)
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
リクエストの本文(JSON):
{
"settings":
{
"backupConfiguration":
{
"startTime": "START_TIME",
"enabled": true,
"pointInTimeRecoveryEnabled": true
}
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
PITR を無効にする
コンソール
-
Google Cloud コンソールで、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
}
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような 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 レスポンスが返されます。
トランザクション ログの保持を設定する
write-ahead log を保持する日数を設定するには:
コンソール
-
Google Cloud コンソールで、Cloud SQL の [インスタンス] ページに移動します。
- トランザクション ログを設定するインスタンスの [その他の操作] メニュー
を開き、[編集] を選択します。 - [インスタンスのカスタマイズ] で、[データ保護] セクションを開きます。
- [ポイントインタイム リカバリを有効にする] セクションで、[詳細オプション] を開きます。
- ログを保持する日数を Cloud SQL Enterprise Plus エディションの場合は 1~35、Cloud SQL Enterprise エディションの場合は 1~7 で指定します。
- [保存] をクリックします。
gcloud
インスタンスを編集して、ログ先行書き込みログを保持する日数を設定します。
次のように置き換えます。
- INSTANCE_NAME: トランザクション ログを有効にするインスタンスの名前。
DAYS_TO_RETAIN: トランザクション ログを保持する日数。Cloud SQL Enterprise Plus エディションの場合、有効な範囲は 1~35 日で、デフォルトは 14 日です。Cloud SQL Enterprise エディションの場合、有効な範囲は 1~7 日で、デフォルトは 7 日です。
値を指定しない場合、Cloud SQL はデフォルト値を使用します。この設定は、PITR が有効な場合にのみ効果があります。トランザクション ログをより長期間保持するには、より大きなストレージ サイズが必要になります。
gcloud sql instances patch INSTANCE_NAME
--retained-transaction-log-days=DAYS_TO_RETAIN
REST v1
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: プロジェクト ID。
- INSTANCE_ID: インスタンス ID。
DAYS_TO_RETAIN: トランザクション ログを保持する日数。Cloud SQL Enterprise Plus エディションの場合、有効な範囲は 1~35 日で、デフォルトは 14 日です。Cloud SQL Enterprise エディションの場合、有効な範囲は 1~7 日で、デフォルトは 7 日です。
値が指定されていない場合は、デフォルト値が使用されます。この設定は、PITR が有効な場合にのみ効果があります。トランザクション ログをより長期間保持するには、より大きなストレージ サイズが必要になります。
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
リクエストの本文(JSON):
{
"settings":
{
"backupConfiguration":
{
"transactionLogRetentionDays": "DAYS_TO_RETAIN"
}
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
REST v1beta4
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: プロジェクト ID。
- INSTANCE_ID: インスタンス ID。
DAYS_TO_RETAIN: トランザクション ログを保持する日数。Cloud SQL Enterprise Plus エディションの場合、有効な範囲は 1~35 日で、デフォルトは 14 日です。Cloud SQL Enterprise エディションの場合、有効な範囲は 1~7 日で、デフォルトは 7 日です。
値が指定されていない場合は、デフォルト値が使用されます。この設定は、PITR が有効な場合にのみ効果があります。トランザクション ログをより長期間保持するには、より大きなストレージ サイズが必要になります。
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
リクエストの本文(JSON):
{
"settings":
{
"backupConfiguration":
{
"transactionLogRetentionDays": "DAYS_TO_RETAIN"
}
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
PITR に使用されるトランザクション ログの保存場所を確認する
PITR に使用されるトランザクション ログが、Cloud SQL インスタンスによってどこに保存されるのかを確認できます。
gcloud
インスタンスが PITR のログをディスクまたは Cloud Storage のどちらに保存するかを確認するには、次のコマンドを使用します。
gcloud sql instances describe INSTANCE_NAME
INSTANCE_NAME は、インスタンス名で置き換えます。
同じプロジェクト内の複数のインスタンスのトランザクション ログの保存場所を確認することもできます。複数のインスタンスのロケーションを確認するには、次のコマンドを使用します。
gcloud sql instances list --show-transactional-log-storage-state
レスポンスの例:
NAME DATABASE_VERSION LOCATION TRANSACTIONAL_LOG_STORAGE_STATE my_01 POSTGRES_12 us-central-1 DISK my_02 POSTGRES_12 us-central-1 CLOUD_STORAGE ...
コマンドの出力で、そのインスタンスでの PITR のトランザクション ログが保存されている場所に関する情報が、transactionalLogStorageState フィールドまたは TRANSACTIONAL_LOG_STORAGE_STATE 列に示されます。トランザクション ログ ストレージの状態には、次のようなものがあります。
DISK: インスタンスは、PITR に使用されるトランザクション ログをディスクに保存します。 Cloud SQL Enterprise エディションのインスタンスを Cloud SQL Enterprise Plus エディションにアップグレードすると、アップグレード プロセスでログの保存場所が Cloud Storage に自動的に切り替わります。詳細については、インプレース アップグレードを使用してインスタンスを Cloud SQL Enterprise Plus エディションにアップグレードするをご覧ください。インスタンスのエディションをアップグレードせずに、ダウンタイムなしで、gcloud CLI または Cloud SQL Admin API を使用して保存場所を切り替えることもできます。詳細については、トランザクション ログ ストレージを Cloud Storage に切り替えるをご覧ください。SWITCHING_TO_CLOUD_STORAGE: インスタンスが PITR トランザクション ログの保存場所を Cloud Storage に切り替えています。SWITCHED_TO_CLOUD_STORAGE: インスタンスが、PITR トランザクション ログの保存場所をディスクから Cloud Storage に切り替えました。CLOUD_STORAGE: インスタンスは、PITR に使用されるトランザクション ログを Cloud Storage に保存します。
トランザクション ログ ストレージを Cloud Storage に切り替える
インスタンスで PITR 用のトランザクション ログをディスクに保存している場合は、ダウンタイムなしで、保存場所を Cloud Storage に切り替えることができます。保存場所を切り替えるプロセス全体は、トランザクション ログの保持期間(日数)とほぼ同じ時間で完了します。切り替えを開始するとすぐに、Cloud Storage にトランザクション ログが蓄積されるようになります。オペレーション中は、PITR に使用されるトランザクション ログの保存場所を確認するのコマンドを使用して、プロセス全体のステータスを確認できます。
Cloud Storage に切り替えるプロセス全体が完了した後は、Cloud SQL で Cloud Storage のトランザクション ログが PITR に使用されます。
gcloud
保存場所を Cloud Storage に切り替えるには、次のコマンドを使用します。
gcloud sql instances patch INSTANCE_NAME \ --switch-transaction-logs-to-cloud-storage
INSTANCE_NAME は、インスタンス名に置き換えます。インスタンスはレプリカ インスタンスではなく、プライマリ インスタンスである必要があります。レスポンスは次の例のようになります。
The following message is used for the patch API method.
{"name": "INSTANCE_NAME", "project": "PROJECT_NAME", "switchTransactionalLogsToCloudStorageEnabled": "true"}
Patching Cloud SQL instance...done.
Updated
[https://sqladmin.prod.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME].
コマンドでエラーが返された場合は、Cloud Storage への切り替えのトラブルシューティングで、考えられる対応策を確認してください。
REST v1
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: プロジェクト ID。
- INSTANCE_ID: インスタンス ID。インスタンスはレプリカ インスタンスではなく、プライマリ インスタンスである必要があります。
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
リクエストの本文(JSON):
{
"switchTransactionLogsToCloudStorageEnabled": true
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
リクエストでエラーが返された場合は、Cloud Storage への切り替えのトラブルシューティングで、考えられる対応策を確認してください。
REST v1beta4
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: プロジェクト ID。
- INSTANCE_ID: インスタンス ID。インスタンスはレプリカ インスタンスではなく、プライマリ インスタンスである必要があります。
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
リクエストの本文(JSON):
{
"switchTransactionLogsToCloudStorageEnabled": true
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
リクエストでエラーが返された場合は、Cloud Storage への切り替えのトラブルシューティングで、考えられる対応策を確認してください。
Cloud Storage への切り替えのトラブルシューティング
次の表に、トランザクション ログの保存場所をディスクから Cloud Storage に切り替える際に INVALID REQUEST コードとともに返される可能性のあるエラーを示します。
| 問題 | トラブルシューティング |
|---|---|
Switching the storage location of the transaction logs
used for PITR is not supported for instances with database type %s.
|
Cloud SQL for MySQL インスタンスまたは Cloud SQL for PostgreSQL インスタンスで gcloud CLI コマンドを実行していること、または API リクエストを実行していることを確認します。Cloud SQL for SQL Server では、gcloud CLI または Cloud SQL Admin API を使用してトランザクション ログの保存場所を切り替えることはできません。 |
PostgreSQL transactional logging is not enabled on this instance.
|
PostgreSQL では、ポイントインタイム リカバリ(PITR)用のトランザクション ログとして write-ahead log 書き込みが使用されます。PITR をサポートするには、PostgreSQL のインスタンスで write-ahead log 書き込みを有効にする必要があります。write-ahead log 書き込みを有効にする方法の詳細については、PITR を有効にするをご覧ください。 |
This instance is already storing transaction logs used for PITR in
Cloud Storage
|
トランザクション ログの保存場所を確認するには、PITR に使用されるトランザクション ログの保存場所を確認するのコマンドを実行します。 |
The instance is already switching transaction logs used for PITR from disk
to Cloud Storage.
|
切り替えオペレーションが完了するまでお待ちください。 オペレーションのステータスとトランザクション ログの保存場所を確認するには、PITR に使用されるトランザクション ログの保存場所を確認するのコマンドを実行します。 |
次のステップ
- クローンのフラグを構成する。