Ответ 1
Запустите новый node ([email protected]
) erl -sname b -mnesia dir '"/path/to/storage"' -s mnesia
. Это запустит новую ram_copies node под названием [email protected]
.
В исходном node ([email protected]
) в приглашении erlang выполните mnesia:change_config(extra_db_nodes, ['[email protected]']).
Это приведет к тому, что исходный node будет подключен b
к кластеру mnesia. На этом этапе [email protected]
присоединился к кластеру, но имеет только копию схемы.
Чтобы сделать новый node [email protected]
способным хранить копии диска, нам нужно изменить тип таблицы схемы на [email protected]
от ram_copies
до disc_copies
. Запустите mnesia:change_table_copy_type(schema, '[email protected]', disc_copies).
на любом node.
[email protected]
имеет только копию схемы в этот момент. Чтобы скопировать все таблицы из [email protected]
в [email protected]
и поддерживать типы таблиц, вы можете запустить:
[{Tb, mnesia:add_table_copy(Tb, node(), Type)}
|| {Tb, [{'[email protected]', Type}]} <- [{T, mnesia:table_info(T, where_to_commit)}
|| T <- mnesia:system_info(tables)]].
Эта команда может занять некоторое время, так как она скопирует содержимое каждой таблицы по сети.
[email protected]
теперь является точной копией [email protected]
. Вы можете изменить этот оператор - замените переменную Type
на disc_only_copies
в вызове mnesia:add_table_copy/3
, чтобы скопировать таблицы, но убедитесь, что они только на диске.
документация mnesia объясняет, как использовать функции, которые я здесь показал.