説明
Cloud SQL インスタンスに必要な自動バックアップがない場合、誤操作や障害で破損したデータの復旧が難しくなることがあります。レプリカや高可用性はバックアップの代わりにはならず、機能を有効にしただけで復旧目標を満たすとは限りません。
エンジンと選択したバックアップ方式に合う設定が必要です。リードレプリカ自体にはバックアップを設定できないため、元のインスタンスの保護を確認してください。特定時点への復元に必要なログもエンジンによって異なります。
想定される影響
- 復旧可能なバックアップがないと、データを永久に失ったり、サービス停止が長引いたりするおそれがあります。
- 保持期間や復元手順が要件に合わないと、必要な時点へ復旧できない場合があります。
対処方法
保護するインスタンスで対応する自動バックアップを有効にし、実行時刻と保持期間を復旧目標に合わせてください。標準バックアップの例では settings.backup_configuration.enabled を true に設定します。必要に応じてエンジンに合う特定時点への復元を構成し、バックアップの成功と実際の復元を試験してください。
例
MySQL インスタンス作成の抜粋です。インストールしたモジュールとサービスが対応する mysql_database_version と cloud_sql_tier、実際のプロジェクトとサービスアカウントの JSON ファイルを指定してください。既存インスタンスには、更新に対応しない google.cloud 1.14.0 モジュールではなく、対応する Cloud SQL 管理手段を使ってください。
変更前
- name: create a second instance
google.cloud.gcp_sql_instance:
name: "{{ resource_name }}-2"
database_version: "{{ mysql_database_version }}"
settings:
tier: "{{ cloud_sql_tier }}"
region: us-central1
project: test_project
auth_kind: serviceaccount
service_account_file: "/tmp/auth.pem"
state: present
- name: create a forth instance
google.cloud.gcp_sql_instance:
name: "{{ resource_name }}-2"
database_version: "{{ mysql_database_version }}"
settings:
backup_configuration:
binary_log_enabled: no
enabled: no
tier: "{{ cloud_sql_tier }}"
region: us-central1
project: test_project
auth_kind: serviceaccount
service_account_file: "/tmp/auth.pem"
state: present
最初のタスクはバックアップ設定を省略し、二つ目は自動バックアップとバイナリログを無効にします。省略だけでは実際のバックアップ状態は分かりません。二つは別々の設定例です。
変更後
- name: create a instance
google.cloud.gcp_sql_instance:
name: "{{ resource_name }}-2"
database_version: "{{ mysql_database_version }}"
settings:
backup_configuration:
binary_log_enabled: yes
enabled: yes
tier: "{{ cloud_sql_tier }}"
region: us-central1
project: test_project
auth_kind: serviceaccount
service_account_file: /tmp/auth.pem
state: present
自動バックアップと MySQL のバイナリログを有効にします。実行時刻、保持期間、復元可能性を確認し、他のエンジンへ同じバイナリログ設定をそのまま適用しないでください。