Mnesia聚类

时间:2010-11-02 18:03:34

标签: erlang ejabberd mnesia

如果我将2个节点聚集在一起,从我的在线实验和阅读中我了解到,节点A将像一个“主”节点,如果我想要节点B将复制表。 (否则它只是远程访问它们。)

如果节点B发生故障会发生什么?它是否仅重新复制自上次更改以来已更改的数据?

如果节点A发生故障,会发生什么。 Node B仍然可用吗?如果是这样,如果在节点B上更改数据,节点A是否将其复制到自身?到目前为止,我的理解是节点A并不关心节点B所说的,但有人请告诉我我错了。

1 个答案:

答案 0 :(得分:4)

由于接受的答案只是一个链接答案,我想我会为任何出席的人记录:

  1. Mnesia通过拥有主从架构并不是很有效。相反,某些节点具有本地数据副本,而某些节点具有远程副本。 (您可以通过从控制台运行mnesia:info()来看到这一点。有一个remote表列表,以及每个本地表的列表:ram_copiesdisc_copiesdisc_only_copies。)
  2. 如果某个节点出现故障,只要有一个带有本地副本的表,涉及该表的操作就可以了。
  3. Mnesia的一个缺点是它受网络分区事件的影响。如果在您的群集中两个节点之间的网络连接变坏,那么每个节点都会认为另一个节点已关闭,并继续写入数据。从中恢复很复杂。但在更平凡的情况下,如果一个节点发生故障,那么具有本地数据副本的节点将继续运行,当下行节点恢复时,它将与群集同步备份。