Mnesia聚类

ewi*_*sor 5 erlang mnesia ejabberd

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

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

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

Jam*_*ery 5

由于接受的答案是仅链接的答案,我想我会为任何出现的人记录这一点:

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