如何将 mnesia 节点添加到现有集群
Posted
技术标签:
【中文标题】如何将 mnesia 节点添加到现有集群【英文标题】:How to add mnesia node to existing cluster 【发布时间】:2021-09-15 00:21:24 【问题描述】:我在节点 a
上安装了 mnesia。
我已经定义了一个模式和一个表。
现在我不知道如何添加另一个节点 b
以便 mnesia 现在可以分布式运行。
我的意思是分布式:
从节点a
发出一条记录在mnesia 中的insert
查询节点b
的mnesia时能够获取记录
我尝试过的:
启动节点a
并启动mnesia
create_schema
和 create_table
在节点 a
dirty_insert
在节点 a
然后
起始节点b
将节点b
连接到节点a
从节点 a
发出:mnesia:change_config(extra_db_nodes,[nodes()]).
// 不管我是从节点 a
还是节点 b
发出这个命令,我都会收到以下错误:
(a@DESKTOP-GOMS8S8)7> mnesia:change_config(extra_db_nodes,[nodes()])。 =错误报告==== 2021 年 7 月 3 日::13:33:16.147000 === 节点“a@DESKTOP-GOMS8S8”上的进程 出错,退出值: function_clause, [gen_server,do_abcast, [[['b@DESKTOP-GOMS8S8']], mnesia_controller, '$gen_cast',merging_schema,'a@DESKTOP-GOMS8S8'], [file,"gen_server.erl",line,263], mnesia_controller,connect_nodes2,3, [file,"mnesia_controller.erl",line,486]]
** 异常退出:function_clause 在函数 gen_server:do_abcast/3 称为 gen_server:do_abcast([['b@DESKTOP-GOMS8S8']], mnesia_controller, '$gen_cast', merging_schema,'a@DESKTOP-GOMS8S8') 来自 mnesia_controller:connect_nodes2/3 的调用(mnesia_controller.erl,第 486 行)
我只希望我对给定节点的 mnesia 所做的任何操作都反映在其他节点上
【问题讨论】:
【参考方案1】:nodes()
已经返回一个列表,所以不需要将返回值包装在一个列表中。试试这个:
mnesia:change_config(extra_db_nodes,nodes()).
【讨论】:
以上是关于如何将 mnesia 节点添加到现有集群的主要内容,如果未能解决你的问题,请参考以下文章