データベース クラスタリングとは何ですか? 同じデータベースを 2 つの異なるサーバー上に配置できるようにすると、それらのサーバー間でデータの同期が維持される仕組みはどのようなものですか? また、データベース サーバーの観点から、これは負荷分散とどう違うのでしょうか?
ベストアンサー1
データベース クラスタリングは少々曖昧な用語です。ベンダーによっては、2 台以上のサーバーが同じストレージを共有するクラスターと考えるところもあれば、複製されたサーバーのセットをクラスターと呼ぶところもあります。
レプリケーションは、地理的に分散したストレージを共有することなく、一連のサーバーを同期させる方法を定義します。その実行方法は主に 2 つあります。
マスター マスター (またはマルチ マスター) レプリケーション: どのサーバーでもデータベースを更新できます。これは通常、データベース内の別のモジュール (または場合によってはその上で実行されるまったく別のソフトウェア) によって処理されます。
欠点は、これをうまく実行するのが極めて難しく、一部のシステムではこのレプリケーション モードのときに ACID プロパティが失われることです。
利点は、柔軟性があり、データベースを更新しながら任意のサーバーの障害に対応できることです。
マスタースレーブレプリケーション: 権限のあるデータのコピーは 1 つだけ存在し、それがスレーブ サーバーにプッシュされます。
欠点は、フォールト トレランスが低いことです。マスターが停止すると、スレーブにはそれ以上の変更が加えられません。
利点は、マルチマスターよりも実行が簡単で、通常は ACID プロパティが保持されることです。
負荷分散は別の概念で、サーバーに送信されたクエリを分散して、負荷が可能な限り均等に分散されるようにします。これは通常、アプリケーション層 (または接続プール) で行われます。レプリケーションと負荷分散の唯一の直接的な関係は、負荷分散を可能にするためにレプリケーションが必要であることです。そうでなければ、単一のサーバーになります。