我正在编写分布式mnesia应用程序并使用模式。 当一个新节点加入集群时,它是由一个RPC调用(从中开始模式中的masternode)加入到Mnesia模式运行于以下功能:Erlang:如何从Mnesia集群中删除节点
start_Mnesia(MasterNode) ->
mnesia:start(),
mnesia:change_config(extra_db_nodes, [MasterNode]),
Tabs=mnesia:system_info(tables) -- [schema],
[mnesia:add_table_copy(Tab, node(), ram_copies) || Tab <- Tabs].
当节点崩溃或断开时,主节点收到一个nodedown
事件,并且该节点应该从群集中删除。我怎样才能做到这一点?
编辑: 我结束了以下解决方案: TabList是我的节点正在使用的模式中的所有表的列表。
Mnesia的:del_table_copy(标签列表,节点)
为什么要删除此节点?当它回来时,它将重新加入mnesia集群。 – user425720
当一个节点发生故障时,另一个(备份)节点启动并完成他的工作。因此,我需要旧节点(下降)离开集群,并且它应该在重新加入时设置为干净。 (然后他将成为备份节点,直到另一个节点失败) – muehsi
你有一个答案 - 所以我不会添加任何东西。事情是,我有这样的印象,你可能会滥用mnesia。本地表将不够用?你需要集群吗? – user425720