Я пытаюсь установить процедуру восстановления моей базы данных с разбившегося сервера на новый сервер. На моем сервере работает Ejabberd как сервер XMPP, и я настроил его на использование postgresql вместо mnesia — по крайней мере, я так думал.
Моя процедура выглядит примерно так: «выгрузите содержимое исходной БД, запустите новый сервер, восстановите содержимое БД с помощью psql, затем запустите систему». Однако, когда я снова пытаюсь запустить Ejabberd, я получаю сбой:
=CRASH REPORT==== 3-Dec-2010::22:05:00 ===
crasher:
pid: <0.36.0>
registered_name: []
exception exit: {bad_return,{{ejabberd_app,start,[normal,[]]},
{'EXIT',"Error reading Mnesia database"}}}
in function application_master:init/4
Вот я и подумал, что моя система работает на PostgreSQL, а я вроде еще пользуюсь Mnesia. У меня есть несколько вопросов:
- Как я могу убедиться, что мнезия не используется?
- Как я могу перенаправить все действия ejabberd на PGSQL?
Это часть модулей в моем файле ejabberd.cfg:
{modules,
[
{mod_adhoc, []},
{mod_announce, [{access, announce}]}, % requires mod_adhoc
{mod_caps, []},
{mod_configure,[]}, % requires mod_adhoc
{mod_ctlextra, []},
{mod_disco, []},
{mod_irc, []},
{mod_last_odbc, []},
{mod_muc, [
{access, muc},
{access_create, muc},
{access_persistent, muc},
{access_admin, muc_admin},
{max_users, 500}
]},
{mod_offline_odbc, []},
{mod_privacy_odbc, []},
{mod_private_odbc, []},
{mod_pubsub, [ % requires mod_caps
{access_createnode, pubsub_createnode},
{plugins, ["default", "pep"]}
]},
{mod_register, [
{welcome_message, none},
{access, register}
]},
{mod_roster_odbc, []},
{mod_stats, []},
{mod_time, []},
{mod_vcard_odbc, []},
{mod_version, []}
]}.
Что мне не хватает?
Я предполагаю, что сбой произошел из-за того, что база данных mnesia используется Ejabberd, и, поскольку она не синхронизирована с базой данных PGSQL, она не может работать правильно, но, возможно, я здесь совершенно не в курсе, и мне бы хотелось получить какое-то направление.
EDIT: решена одна проблема. Поскольку я использую облако Amazon, мне нужно было жестко закодировать ERLANG_NODE, чтобы он не определялся именем хоста (которое меняется при перезагрузке). Это заставило мой ejabberd работать, но я все же хочу прекратить использовать mnesia, и мне интересно, какая часть ejabberd все еще использует его и как я могу его найти.