Подтвердить что ты не робот

Как добавить node в кластер mnesia?

Я эрланг и новичок mnesia..

Как добавить новую disc_only_copies node в базу данных mnesia, у которой уже есть схема?

Спасибо

4b9b3361

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