LinuCレベル4 システムアーキテクト 可用性の設計 問30
可用性の設計/データレプリケーションと災害対策PostgreSQLで稼働している受注データベースで、オペレーターが誤って主要テーブルのデータを大量削除してしまった。削除操作が実行された時刻の直前の状態にデータを復元しなければならない。このような誤操作からの復旧を可能にするために事前に実施しておく設定として、最も適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「可用性の設計」に対応。実際の試験問題ではありません)
- Aストリーミングレプリケーションのスタンバイを1台追加し、プライマリに障害が発生した際にスタンバイへ切り替えられるようにする
- Barchive_mode=on+archive_commandでWALアーカイブを有効化し、ベースバックアップと組み合わせてPITRを実現する
- Cpg_dumpによる論理バックアップを毎日1回取得し、誤操作が発生した場合に直前のダンプからリストアする
- DLVMスナップショットをデータベース静止後に毎時1回作成し、誤操作後に最も近い時刻のスナップショットへロールバックする
正解:B
解説
Point-in-Time Recovery(PITR)は、ベースバックアップとWALアーカイブを組み合わせて任意の時点(秒単位)のデータベース状態に復元する機能。archive_mode=onとarchive_commandを設定すると完了したWALセグメントが指定した保管先にコピーされる。recovery_target_time(PostgreSQL 12以降)またはrecovery.conf(11以前)で復元したい時刻を指定してリカバリを実行することで、誤操作の直前の状態に精密に戻すことができる。
選択肢ごとの解説
- A誤り。ストリーミングレプリケーションのスタンバイはプライマリのWALをリアルタイムに適用するため、誤操作による削除もスタンバイに即座に伝播する。スタンバイに切り替えても削除後の状態がそのまま残り、誤操作前の状態には戻れない。
- B正しい。WALアーカイブとPITRにより誤操作が発生した時刻の直前という精密な時点への復元が可能。ベースバックアップ後のすべての更新がWALとして保管されているため任意の時点に巻き戻せる。正解。
- C誤り。pg_dumpは取得時点のスナップショットであり、前日夜に取得した場合は最大で前日夜の状態までしか戻せない。誤操作の直前という時点への復元は論理バックアップのみでは対応できないことが多い。
- D誤り。毎時のLVMスナップショットは有効な手段だが、スナップショットの間隔内(最大1時間)に発生した変更は失われる可能性がある。WALアーカイブと組み合わせるPITRと比べて任意時点への精密な復元には制約がある。