如何将 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_schemacreate_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 节点添加到现有集群的主要内容,如果未能解决你的问题,请参考以下文章

从 mnesia 集群中移除 not_exist_already 节点(方案)

如何删除额外的节点

在一个 mnesia 集群中,查询哪个节点?

将节点添加到 Kubernetes 中的现有集群

将节点添加到现有 Cassandra 集群

Postgres XL 将数据节点添加到现有集群