База данных Ejabberd Mnesia в MySQL - PullRequest
       10

База данных Ejabberd Mnesia в MySQL

2 голосов
/ 10 января 2011

У меня есть дамп базы данных mnesia с сервера ejabberd (файлы DCD, DCL и DAT), и я пытаюсь восстановить любые данные из этой базы данных. Было бы идеально преобразовать его в какую-то базу данных SQL, однако я бы согласился на простой текстовый дамп (оттуда я, вероятно, мог бы перестроить базу данных).

Я новичок в Erlang / Mnesia, но вот что мне удалось сделать из онлайн-документов :

bash$> erl -mnesia dir '"ejabberd_dump_dir"'
...Erlang loads...
1> mnesia:start().
2> mnesia:info().
[snip]
stopped db nodes = [ejabberd_dump_dir]
[snip]
remote           = [ list of the tables from ejabberd_dump_dir ]
[snip]
3> tv:start().

Когда запускается телевизор, он просто показывает имена таблиц и говорит, что у них 0 записей. Я предполагаю, что есть какой-то способ снова загрузить его в память, но мне еще предстоит выяснить, как это основано на документах.

Еще одна мысль, которая у меня возникла, - попытаться загрузить ее с помощью другой установки ejabberd, однако, похоже, единственный способ сделать это с помощью ejabberdctl - загрузить ее из текстового файла.

Как мне загрузить эту базу данных и выгрузить ее в sql или в формат, который может быть импортирован sql? Чего мне не хватает?

ОБНОВЛЕНИЕ: Я пытался восстановить эту базу данных на временный сервер ejabberd, например, так:

bash$> ejabberdctl --auth admin ejabberd passwd restore ejabberd /home/user/ejabberddmpdir/
bash$> ejabberdctl --auth admin ejabberd passwd export2odbc ejabberd /home/user/mnesiatosql/

Первая команда терпит неудачу и вынуждает меня сделать вывод, что я быстро проигрываю войну между человеком и машиной. Я не уверен, но я думаю, что использование ejabberd в качестве хоста будет использовать localhost в качестве узла. Есть идеи?

ОБНОВЛЕНИЕ: Я думаю, что это может быть проблема с разрешениями, поскольку попытка экспортировать ejabberd db по умолчанию приведет к {{badmatch,{error,eacces}} среди других ошибок. Это письмо показывает ошибку, которую я получаю, но я не уверен, почему.

Ответы [ 3 ]

1 голос
/ 28 апреля 2011

Ejabberd может вывести свою базу данных mnesia в структурированный текстовый файл с помощью утилиты ejabberdctl:

ejabberdctl dump /tmp/ejabberd.db.txt
0 голосов
/ 27 июля 2016

на основе справочной страницы ejabberdctl каталог хоста ejabberdctl export2odbc

ejabberdctl export2odbc localhost /tmp/sql
0 голосов
/ 12 января 2011

Я все еще прорабатываю детали того, как работает вся система узлов mnesia, но я использовал это для загрузки базы данных в mnesia:

bash$> erl -name ejabberd@localhost -mnesia dir '"/home/usr/ejabberd@localhost/"'

Спасибо всем, кто взглянул.

...