2009-04-24 4 views

ответ

38

Начните свой новый узел ([email protected]) erl -sname b -mnesia dir '"/path/to/storage"' -s mnesia. Это запустит новый узел ram_copies, который называется [email protected].

На вашем исходном узле ([email protected]) в приглашении erlang выполнить mnesia:change_config(extra_db_nodes, ['[email protected]']). Это приведет к тому, что исходный узел подключит b к кластеру mnesia. На данный момент [email protected] присоединился к кластеру, но имеет только копию схемы.

Чтобы сделать новый узел [email protected], способный хранить копии дисков, необходимо изменить схемы типа таблицы на [email protected] из ram_copies в disc_copies. Запустите mnesia:change_table_copy_type(schema, '[email protected]', disc_copies). на любом узле.

[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 documentation объясняет, как использовать функции, которые я здесь показал.

+0

Возможно, вы знаете ответ на этот вопрос http://stackoverflow.com/questions/3702201/remove-not-exist-already-node-from-mnesia-clusterscheme – vinnitu

+0

Не думайте, что вы знаете ответ на этот вопрос, связанный вопрос? http://stackoverflow.com/questions/13398632/creating-mnesia-disk-copies-of-existing-ram-table – mezamorphic

Смежные вопросы