Распределенная БД (синхронизация НОД)

87 views
Skip to first unread message

LiveStalker

unread,
Mar 9, 2010, 7:03:30 AM3/9/10
to Erlang в России
Всем привет.
Вопрос в следующем:
Есть две ноды, они о друг друге ничего не знают.
На одной ноде я:
1. создаю схему
2. создаю таблицы и что-то туда записываю.

Потом я поднимаю вторую ноду и хочу чтобы схема размазалась по этим
двум нодам и вторая нода содержала точную реплику первой и была полная
синхронизация. Что для этого нужно сделать? (можно просто в крупных
шагах)

LiveStalker

unread,
Mar 10, 2010, 2:57:38 AM3/10/10
to Erlang в России
После ковыряния в доке, вот что получилось.
Правильно ли так делать?
Я поднимаю ноду1, созданю на ней схему, запускаю mnesia, создаю на ней
какие-то таблицы.
Затем к ноде1 цепляю другую ноду2, на этой ноде2 схемы нет, запускаю
mnesia.
На ноде1 выполняю команду mnesia:change_config(extra_db_nodes,
nodes()).
После чего на ноде2 в инфе видно
running db nodes = [node1@srvdev01,node2@srvdev01]
stopped db nodes = []
master node tables = []
remote = [vperson]
ram_copies = [schema]
disc_copies = []
disc_only_copies = []
Видно, что схема ноды2 содержится в памяти, сбрасываю её на диск:
mnesia:change_table_copy_type(schema, node(), disc_copies).

running db nodes = [node1@srvdev01,node2@srvdev01]
stopped db nodes = []
master node tables = []
remote = [vperson]
ram_copies = []
disc_copies = [schema]
disc_only_copies = []
А ври сбросить на диск remote таблицу не получается.

Вообще правильны ли подход к поднятию новой ноды БД в кластере?
И как можно сделать это попроще?

Gleb Peregud

unread,
Mar 10, 2010, 3:49:08 AM3/10/10
to erlang-...@googlegroups.com
Izweniajus' za translit - piszu s sotowogo.

Wy sdelali wse' prawil'no. Chtoby remote tablicu sbrosit' na disk nado
sdelat' jej mnesia:change_table_copy/3 ukazat' node2@host i
sootwetsutuwujush tip (ram_ ili disc_copies).

> --
> Страница рассылки: http://groups.google.com/group/erlang-russian
> Jabber-конференция: erl...@conference.jabber.ru
> Новости: http://erlang.dmitriid.com

--
Sent from my mobile device

LiveStalker

unread,
Mar 10, 2010, 3:06:49 PM3/10/10
to Erlang в России
Попробовал сбросить таблицу с типом remote, почему то вышла ошибка
неправильные аргументы функции.
Надо ещё покопаться:)
А нет ли способа попроще для развертывания базы на новой ноде?

LiveStalker

unread,
Mar 11, 2010, 3:49:14 AM3/11/10
to Erlang в России
Все разобрался может кому будет полезно. Порядок подключения новой
ноды в кластер Mnesia(на истину я не претендую, если кто знает способ
проще напишите):
1. Запускаем новую ноду.
2. mnesia:change_config(extra_db_nodes,[Node]) - меняем конфигу, чтобы
наш новый узел вошел в кластер
3. mnesia:change_table_copy_type(schema, Node, disc_copies) - меняем
расположение схемы у нового узла
4. add_table_copy(Tab, Node, Type) - скидываем нужные нам таблицы
(которые числятся как remote) на диск/память нового узла
Вроде все.
Reply all
Reply to author
Forward
0 new messages