Erlang 记忆聚类

Erlang 记忆聚类,erlang,ejabberd,mnesia,Erlang,Ejabberd,Mnesia,如果我将两个节点聚集在一起,从我的在线实验和阅读中,我了解到节点A将像一个“主”节点,如果我希望,节点B将复制这些表。(否则它只会远程访问它们。) 如果节点B关闭,会发生什么情况?它只是重新复制自上次启动以来已更改的数据吗 另外,如果节点A发生故障会发生什么情况。节点B仍然可用吗?如果是这样,如果数据在节点B上更改,节点A是否将其复制到自身?到目前为止,我的理解是节点A不在乎节点B说了什么,但请有人告诉我我错了 因为被接受的答案是一个只有链接的答案,所以我想我会为任何一个出现的人记录这一点: M

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

如果节点B关闭,会发生什么情况?它只是重新复制自上次启动以来已更改的数据吗


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

因为被接受的答案是一个只有链接的答案,所以我想我会为任何一个出现的人记录这一点:

  • Mnesia没有一个主从架构。相反,有些节点具有数据的本地副本,有些节点具有远程副本。(通过从控制台运行
    mnesia:info()
    可以看到这一点。这里有一个
    远程
    表的列表,以及每个本地表的列表:
    ram\u copies
    disc\u copies
    disc\u copies
  • 如果一个节点宕机,只要有一个带有本地副本的表,涉及该表的操作就可以了
  • Mnesia的缺点之一是它受到网络分区事件的影响。如果集群中两个节点之间的网络连接出现故障,那么每个节点都会认为另一个节点已关闭,并继续写入数据。从中恢复是复杂的。不过,在更普通的情况下,如果一个节点发生故障,则具有本地数据副本的节点将继续运行,当故障节点恢复时,它将与集群同步备份

  • 是什么阻止你尝试它呢?你可能想阅读《Mnesia用户指南》