我设置了ejabberd群集,一个是主人,另一个是奴隶,如here所述。
我已将.erlang.cookie和数据库文件从master复制到slave。
一切都很好。
问题是当我停止主节点时:
我被困在这里,请帮帮我。 感谢
答案 0 :(得分:5)
这是Mnesia的标准行为。如果您启动的节点不是最后一个在集群中停止的节点,那么它无法知道它是否具有最新的,最新的数据。
启动Mnesia群集的过程是以相反的顺序启动节点。
如果最后在Mnesia群集上看到的节点无法启动或加入群集,则需要使用Mnesia命令强制群集" master",即告诉它您认为这个节点具有最新的内容。这是通过使用Erlang命令mnesia:set_master_nodes/1完成的。
例如,从ejabberd Erlang命令行:
mnesia:set_master_nodes([node1@myhost]).
在大多数情况下,Mnesia群集会自动处理所有内容。当节点发生故障时,其他节点会知道并自动继续透明地工作。您需要将哪个节点设置为参考数据(使用set_master_nodes/1
)的唯一情况是,对于Mnesia来说这是不明确的,即在仅启动仍在运行节点时关闭的节点时或者当有一个netsplit。
答案 1 :(得分:0)
按照以下步骤链接: http://chadillac.tumblr.com/post/35967173942/easy-ejabberd-clustering-guide-mnesia-mysql 并调用easy_cluster模块的方法join_as_master(NodeName)。