【问题标题】:How to add mnesia node to existing cluster如何将 mnesia 节点添加到现有集群
【发布时间】: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 所做的任何操作都反映在其他节点上

【问题讨论】:

    标签: erlang mnesia


    【解决方案1】:

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

    mnesia:change_config(extra_db_nodes,nodes()).
    

    【讨论】:

      猜你喜欢
      • 2010-10-21
      • 2020-09-13
      • 1970-01-01
      • 2015-11-26
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-16
      相关资源
      最近更新 更多