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

时间:2021-07-03 10:42:16

标签: erlang mnesia

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

分布式我的意思是:

  • 从节点 insert 发出 mnesia 记录的 a
  • 查询节点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 发出此命令无关紧要我收到以下错误:< /p> <块引用>

    (a@DESKTOP-GOMS8S8)7> mnesia:change_config(extra_db_nodes,[nodes()])。 =错误报告==== 2021 年 7 月 3 日::13:33:16.147000 === 节点“a@DESKTOP-GOMS8S8”上的进程 <0.138.0> 出错,退出值: {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 个答案:

答案 0 :(得分:2)

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

mnesia:change_config(extra_db_nodes,nodes()).