数日前、ここベオグラードで開催された IT カンファレンスに参加しました。On Agenda は、MySql と MySql でのクラスタリングに関するトピックでした。MySql の関係者は、クラスター スプリット ブレインの問題に対する最善の解決策があると述べました。これについて何か知っている人はいますか?
2 に答える
MySQL Cluster には少なくとも 3 つのシステムが必要です。これにより、ノードの 1 つをスプリット ブレイン シナリオに対処するためのアービトレータにすることができます。2 つのシステムはデータ ノード/mysqld ノードを実行でき、3 番目のシステムは管理ノードを実行する必要があります (通常、デフォルトではアービトレータですが、SQL ノードもそれらとして動作できます)。
スプリット ブレイン セットアップの場合 (つまり、2 つのデータ ノードが互いに通信できなくなりますが、まだ実行されている場合)、それらはそれを認識し、アービトレーターにどのノードが実行を継続できるかを決定するように依頼します。ノードがアービトレータと通信できない場合、ノードはシャットダウンします。アービトレーターが通信できるすべてのノードから、実行を継続するノードを選択し、他のノードにシャットダウンするように指示します。
通常、アービトレータは管理ノードですが、データ ノードになることもあります。アービトレーターが失敗した場合、クラスターは新しいアービトレーターを選択できます。ただし、アービトレーション中はこれを行うことができないため、データ ノードとアービトレータの両方が一度に失敗すると、3 番目のノードがシャットダウンします。
もちろん、複数のノード グループがある場合はもう少し複雑になりますが、基本的な考え方は同じです。
詳細については、MySQL Cluster FAQを参照してください。
これが正しいかどうかは主観的なものですが、mysql のクラスター サポートは優れていると聞いたことがあります。ただし、この概念は間違いなくサポートされており、postgres の Slony-I などの他のデータベースで使用されています。
ベストとはどのような側面を意味するのか (つまり、パフォーマンス、稼働時間、セットアップの容易さなど) を明確にすると、より有用な回答が得られる場合があります。