5

2つのノードをクラスター化する場合、オンラインでの実験と読み取りから、ノードAは「マスター」ノードのようになり、ノードBは必要に応じてテーブルをコピーすることを理解しています。(それ以外の場合は、リモートでアクセスするだけです。)

ノードBがダウンした場合はどうなりますか?最後に更新されてから変更されたデータを再コピーするだけですか?

また、ノードAがダウンした場合はどうなりますか。ノードBはまだ使用できますか?その場合、ノードBでデータが変更された場合、ノードAはそれを自分自身にコピーしますか?これまでの私の理解では、ノードAはノードBの発言を気にしませんが、誰かが私が間違っていると言ってください。

4

1 に答える 1

5

受け入れられた回答はリンクのみの回答であるため、来た人のためにこれを文書化すると考えました:

  1. Mnesia は、プライマリー セカンダリー アーキテクチャーを持つことでうまく機能しません。代わりに、一部のノードにはデータのローカル コピーがあり、一部のノードにはリモート コピーがあります。(これmnesia:info()は、コンソールから実行することで確認できます。remoteテーブルのリストと、各ローカル テーブルのリストがあります: ram_copiesdisc_copiesおよびdisc_only_copies。)
  2. ノードがダウンした場合、ローカル コピーを含むテーブルが存在する限り、そのテーブルに関する操作は問題ありません。
  3. Mnesia の欠点の 1 つは、ネットワーク パーティション イベントの影響を受けることです。クラスター内で 2 つのノード間のネットワーク接続が悪くなると、それぞれがもう一方のノードがダウンしていると見なし、データの書き込みを続行します。これからの回復は複雑です。ただし、より平凡なケースでは、1 つのノードがダウンしても、データのローカル コピーを持つノードは継続し、ダウンしたノードが回復すると、クラスターと同期します。
于 2015-08-25T14:20:09.850 に答える