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

ОБНОВЛЕНИЕ : После этого ответа я бы теперь изменил свой ответ на использование зефира / зефира-sqlalchemy.

Предыдущий ответ:

Я не знаю ответа наверняка, но ...

Из издания Мигеля Гринберга Flask Web Development, 2-е издание, стр. 210-213, он применяет подход, согласно которому метод

def Post(db.Model):
    # ...
    def to_json(self):
        json_post = {
            ** json using model **
        }
        return json_post

определен в models.py

21
задан Luca Martinetti 24 April 2009 в 22:16
поделиться

1 ответ

Запустите новый узел ( b @ node ) erl -sname b -mnesia dir '"/ path / to / storage" -s mnesia . Это запускает новый узел ram_copies с именем b @ node .

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

Чтобы создать новый узел b @ node способный хранить копии дисков, нам нужно изменить тип таблицы схемы на b @ node с ram_copies на disc_copies . Запустите mnesia: change_table_copy_type (схема, ' b @ node ', disc_copies). на любом узле.

На этом этапе b @ node имеет только копию схемы. Чтобы скопировать все таблицы из a @ node в b @ node и сохранить типы таблиц, вы можете выполнить:

[{Tb, mnesia:add_table_copy(Tb, node(), Type)}
 || {Tb, [{'a@node', Type}]} <- [{T, mnesia:table_info(T, where_to_commit)}
                               || T <- mnesia:system_info(tables)]].

Для выполнения этой команды может потребоваться некоторое время, так как она скопирует содержимое каждой таблицы по сети.

b @ node теперь является точной копией a @ node. Вы можете изменить это утверждение - заменить переменную Type на disc_only_copies в вызове mnesia: add_table_copy / 3 , чтобы скопировать таблицы, но убедиться, что они только на диске.

В документации mnesia объясняется, как использовать функции, которые я здесь показал.

45
ответ дан 29 November 2019 в 20:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: