У меня есть дамп базы данных 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}}
среди других ошибок. Это письмо показывает ошибку, которую я получаю, но я не уверен, почему.