Это стандартное поведение Mnesia. Если узел, который вы запускаете, не был последним, который был остановлен в кластере, то у него нет никакого способа узнать, есть ли у него самые последние и актуальные данные.
Процесс запуска кластера Mnesia заключается в запуске узла в обратном порядке, в котором они были закрыты.
В случае, если узел, который в последний раз был замечен в кластере Mnesia, не может запуститься или присоединиться к кластеру, вам нужно использовать команду Mnesia, чтобы сделать кластер «мастером», то есть сказать ему, что вы считаете, что этот узел имеет самое последнее содержимое. . Это делается с помощью команды Erlang mnesia:set_master_nodes/1.
Например, из командной строки ejabberd Erlang:
mnesia:set_master_nodes([node1@myhost]).
В большинстве случаев кластеризация Mnesia обрабатывает все автоматически. Когда узел выходит из строя, другие узлы знают об этом и автоматически продолжают работать прозрачно. Единственный случай, когда вам нужно указать, какой узел использовать в качестве эталонных данных (с помощью set_master_nodes/1
), — это когда это неоднозначно для Mnesia, то есть либо при запуске только узлов, которые были отключены, когда все еще работали узлы, либо при наличии сетевого разделения.
person
Mickaël Rémond
schedule
11.01.2016