如何将 mnesia 节点添加到现有集群

问题描述

我在节点 a 上安装了 mnesia。 我已经定义了一个架构和一个表。 现在我不知道如何添加一个节点 b 以便 mnesia 现在可以分布式运行。

分布式我的意思是:

我尝试过的:

  • 启动节点 a 并启动 mnesia
  • create_schema 和节点 create_table 上的 a
  • dirty_insert 在节点 a

然后

  • 起始节点 b

  • 将节点 b 连接到节点 a

  • from node a issue : mnesia:change_config(extra_db_nodes,[nodes()]). // 如果我从 node a 或 node 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,"mnesia_controller.erl"},486}]}]}

    ** 异常退出:function_clause 在函数 gen_server:do_abcast/3 中 称为 gen_server:do_abcast([['b@DESKTOP-GOMS8S8']],mnesia_controller,'a@DESKTOP-GOMS8S8'}})
    从 mnesia_controller:connect_nodes2/3 调用(mnesia_controller.erl,第 486 行)

我只是希望我对给定节点的 mnesia 执行的任何操作都反映在其他节点上

解决方法

nodes() 已经返回一个列表,因此不需要将返回值包装在一个列表中。试试这个:

mnesia:change_config(extra_db_nodes,nodes()).