LinuCレベル4 システムアーキテクト 可用性の設計 問10
可用性の設計/データレプリケーションと災害対策PostgreSQLで運用中のシステムを、停止時間をできるだけ短くして新しいメジャーバージョンへ移行したい。あわせて、移行先へは業務で使う一部のテーブルだけを複製したい。この要件に合うレプリケーション方式として最も適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「可用性の設計」に対応。実際の試験問題ではありません)
- Aストリーミングレプリケーションで新バージョンのスタンバイを作り、同期が追いついた時点で昇格させて切り替える
- B同期モードのストリーミングレプリケーションに設定し、データ損失なしで新バージョンのサーバーへ切り替える
- C移行作業の開始時にサービスを止め、全データベースのダンプを取得して新バージョンのサーバーへリストアする
- Dパブリケーションとサブスクリプションによるロジカルレプリケーションで対象テーブルを複製し、追いついたら切り替える
正解:D
解説
ロジカルレプリケーションは、データの変更を論理的な単位で複製する方式で、パブリケーションに含めるテーブルを選べるうえ、異なるメジャーバージョン間でも複製できます。そのため、新バージョンのサーバーへ対象テーブルを複製して差分を追従させ、追いついた時点で接続先を切り替えれば、停止時間の短いメジャーバージョンアップが可能です。一方、ストリーミングレプリケーションはWALをそのまま適用する物理的な複製で、データベースクラスタ全体が対象になり、同じメジャーバージョンの間でしか使えません。ダンプとリストアは確実ですが、データ量に応じて停止時間が長くなります。
選択肢ごとの解説
- A誤り。ストリーミングレプリケーションは物理的な複製のため、異なるメジャーバージョンのスタンバイは作れず、テーブル単位の選択もできません。
- B誤り。同期モードはデータ損失を防ぐための設定で、メジャーバージョンの違いやテーブル単位での複製という要件は解決しません。
- C誤り。確実な方法ですが、ダンプとリストアの間はサービスを止める必要があり、データ量が多いと停止時間が長くなります。
- D正しい。ロジカルレプリケーションはテーブルを選んで複製でき、異なるメジャーバージョン間でも使えるため、短い停止での移行に適します。