Мастер-узлы Mnesia используются для довольно жестокого разрешения сплит-мозговых ситуаций.Если mnesia обнаружит ситуацию с раздвоенным мозгом, она выдаст событие «работа с разделенной сетью».Один из способов ответить на это - установить главные узлы на «остров», который вы хотите сохранить, а затем перезапустить другие узлы.Когда они возвращаются, они безоговорочно загружают таблицы из главных узлов.
В mnesia есть еще один механизм, называемый force_load.Нужно быть очень осторожным с этим, но в случае, когда у вас есть два узла, A и B, завершите B (A записывает B как вниз), затем завершите A, затем перезапустите B, B не будет иметь информации о том, когда A вышел, поэтому откажется загружать таблицы с копией на A. Если вы знаете, что A не скоро вернется, вы можете вызвать mnesia: force_load_tables (Ts) для B, что заставит его работать с собственными копиями.Как только A возвращается, он обнаруживает, что B включен, и загружает из него таблицы.Как видите, есть несколько других сценариев, в которых вы можете получить несовместимую базу данных.Mnesia не исправит это, но попытается предоставить инструменты для разрешения ситуации, если она возникнет.В приведенном выше сценарии, к сожалению, mnesia не даст вам подсказок, но возможно создать приложение, которое обнаружит проблему.