今回は、Goldの「障害復旧 - ホット・スタンバイ復旧」からの出題です。
レプリケーションの方式が同期か非同期かにかかわらず、通信が遮断中でも、マスタサーバでの参照系クエリは実行可能である
レプリケーションの方式が同期か非同期かにかかわらず、通信が遮断中でも、スタンバイサーバでの参照系クエリは実行可能である
同期レプリケーションの場合は、通信が遮断中は、マスタサーバでの更新系クエリは待機させられる
通信復旧後のデータの再同期処理には、アーカイブWALが必須となる
通信復旧後のデータの再同期処理に、アーカイブWALが利用される際は、マスタサーバのGUCパラメータrestore_commandが実行され、スタンバイサーバにアーカイブWALが転送される
※この例題は実際のOSS-DB技術者認定試験とは異なります。
【A,Bついて】
レプリケーションの方式が同期か非同期かにかかわらず、通信が遮断中でも、マスタおよびスタンバイサーバのいずれでも、参照系クエリは実行可能です。
よって、A,Bは適切な内容です。
【Cについて】
同期レプリケーションの場合は、更新系クエリの内容がスタンバイサーバに反映されるまで待機させられることになります。
よって、Cは適切な内容です。
非同期レプリケーションの場合は、更新系のクエリであっても待機せずにマスタサーバで実行可能となります。
ただし、マスタサーバで行われる更新はスタンバイサーバに全く反映されない状態であるため、スタンバイサーバで参照できるデータはマスタサーバと乖離していくことになります。
詳細は以下の公式ドキュメントをご参照ください。
https://www.postgresql.jp/document/10/html/warm-standby.html#SYNCHRONOUS-REPLICATION
【Dについて】
通信が遮断してから大量の更新がマスタサーバ側で行われ、その後に通信が復旧した場合、再同期処理に必要なWALが既にアーカイブ化されている可能性があります。このような場合は再同期処理にアーカイブWALが必要となりますが、更新量が少なく、アーカイブ化されていないWALのみで再同期処理が完了する場合は、必ずしもアーカイブWALは必須とはなりません。
よって、Dは適切な内容ではありません。
【Eについて】
再同期処理にアーカイブWALが必要となる場合は、スタンバイサーバのrecovery.confに記載されているrestore_commandが実行されます。
よって、Eは適切な内容ではありません。
正解は D と E です。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.