Как добавить узел mnesia в существующий кластер

#erlang #mnesia

Вопрос:

У меня есть mnesia, установленная на узле a . Я уже определил схему и таблицу. Теперь я не знаю, как я могу добавить еще один узел b , чтобы mnesia теперь могла работать распределенно.

Под распределенным я подразумеваю :

  • выдача a insert записи в мнезии с узла a
  • иметь возможность извлекать запись при запросе мнезии узла b

Что я пробовал:

  • Запустите узел a и запустите мнезию
  • 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,[узлы ()]). =ОТЧЕТ ОБ ОШИБКЕ==== 3 июля-2021::13:33:16.147000 === Ошибка в процессе <0.138.0> на узле ‘a@DESKTOP-GOMS8S8’ со значением выхода: {function_clause, [{gen_server,do_abcast, [[[‘b@DESKTOP-GOMS8S8’]]], mnesia_controller, {‘$gen_cast’,{схема слияния,’a@DESKTOP-GOMS8S8′}}], [{файл,»gen_server.erl»},{строка,263}]}, {mnesia_controller,connect_nodes2,3, [{файл,»mnesia_controller.erl»},{строка,486}]}]}

    ** исключения выхода: function_clause в function gen_server:do_abcast/3 называют gen_server:do_abcast([[‘б@рабочего стола-GOMS8S8’]], mnesia_controller, {‘$gen_cast’, {merging_schema, а@рабочего стола-GOMS8S8′}})
    на звонок от mnesia_controller:connect_nodes2/3 (mnesia_controller.Эрл, строка 486)

Я просто хочу, чтобы любая операция, которую я выполняю над мнезией данного узла, отражалась на других

Ответ №1:

nodes() уже возвращает список, поэтому нет необходимости заключать возвращаемое значение в список. Попробуйте это:

 mnesia:change_config(extra_db_nodes,nodes()).