Итак, предыстория: Стояли ejabberd-2.0.5-r3, mysql-5.0.70-r1. Первое что нужно сделать - это установить модуль ejabberd, дающий возможность получить из mnesia таблицы mysql. Называется он mod_ctlextra. Проще всего сделать это установив ejabberd-modules из SVN репазитория Process-One.
  1. svn co https://svn.process-one.net/ejabberd-modules
  2. cd ejabberd-modules/mod_ctlextra/trunk
  3. ./build.sh
  4. cp ebin/*.beam /usr/lib/erlang/lib/ejabberd-2.0.5/ebin
Теперь в конфиге ejabberd (/etc/jabberd/ejabberd.cfg) добавим строчку, благодаря которой сервер подхватит новый модуль. Добавьте эту строчку в секцию Modules, где-нибудь в середине перечня модулей.
{mod_ctlextra, []},
Перезапустим сервер.
  1. /etc/init.d/ejabberd stop
  2. /etc/init.d/ejabberd start
Я намеренно не использовал /etc/init.d/ejabberd restart, потому что команда очень глючная, после команды остановки, сервер не успевает остановиться, в то время как init-скрипт уже пытается его запустить. Это может привести к тому что придётся руками убивать pid-файл и процесс epmd, чего делать по понятным причинам не рекомендуется. Подготовим директории для экспорта.
  1. mkdir /tmp/base
  2. chmod 777 -R /tmp/base
Наконец начнём экспорт.
ejabberdctl export2odbc <домен> /tmp/base
После завершения операции вы увидите примерно следующее.
  1. ls /tmp/base
  2. last.txt
  3. offline.txt
  4. passwd.txt
  5. roster.txt
  6. vcard_search.txt
  7. vcard.txt
Это дампы таблиц MySQL, которые вполне можно загрузить через PHPMyAdmin или mysql < file.txt. Соотношение к структуре MySQL такое (текстовый файл -> таблица):
  1. last.txt -> last
  2. offline.txt -> spool
  3. passwd.txt -> users
  4. roster.txt -> rostetusers
  5. vcard_search.txt -> vcard_search
  6. vcard.txt -> vcard
После того как структура готова, все домены Ejabberd загружены в MySQL, можно настраивать сервер на работу с БД MySQL. Как это сделать, описанно, например здесь. Только мне пришлось сделать ещё такое телодвижение.
  1. cd ejabberd-modules/mysql/trunk
  2. ./build.sh
  3. cp ebin/*.beam /usr/lib/erlang/lib/ejabberd-2.0.5/ebin
Вот и всё :)


Статью пока никто не комментировал. Ваш комментарий может стать первым.

Войдите или зарегистрируйтесь, чтобы написать комментарий.