У меня есть старый сервер с Debian 6, ejabberd v. 2.1.5-3 с mnesia BD, и мне нужно переместить пользователей и пароли на новый сервер с Debian 9.6, ejabberd 16.09-4 и mnesia BD. Узлы серверов разные. Я делаю ejabberd.dump, ejabberd.backup на oldserver. Когда я пробую на oldserver, делаю:
корень @ oldserver ejabberdctl export_piefxis / var / lib / ejabberd / 1 /
Problem 'throw {error,exmpp_not_installed}' occurred executing the command.
Stacktrace: [{ejabberd_piefxis,try_start_exmpp,0},
{ejabberd_piefxis,export_hosts,2},
{ejabberd_ctl,call_command,3},
{ejabberd_ctl,try_call_command,3},
{ejabberd_ctl,process2,3},
{ejabberd_ctl,process,1},
{rpc,'-handle_call_call/6-fun-0-',5}]
Я копирую каталог ejabberd.dump, ejabberd.backup, ejabberd со старого сервера в / var / lib / ejabberd_old / на новом сервере. В новом сервере я пытаюсь:
корень @ newserver: ejabberdctl load /var/lib/ejabberd/old/ejabberd.dump
Can't load dump in "/var/lib/ejabberd/old/ejabberd.dump" at node ejabberd@Public: open
root@newserver: ejabberdctl mnesia_change_nodename ejabberd@oldserver ejabberd@newserver /var/lib/ejabberd/old/ejabberd.backup /var/lib/ejabberd/old/ejabberd_new.backup
Error: {file_error,"/var/lib/ejabberd/old/ejabberd_new.backup.BUPTMP",eacces}
root @ newserver: ejabberdctl restore /var/lib/ejabberd/old/ejabberd.backup
Problem 'error {case_clause,
{aborted,
{file_error,"/var/lib/ejabberd/old/ejabberd.backup",
eacces}}}' occurred executing the command.
Stacktrace: [{ejabberd_admin,restore_mnesia,1,
[{file,"src/ejabberd_admin.erl"},{line,491}]},
{ejabberd_ctl,call_command,4,
[{file,"src/ejabberd_ctl.erl"},{line,324}]},
{ejabberd_ctl,try_call_command,4,
[{file,"src/ejabberd_ctl.erl"},{line,298}]},
{ejabberd_ctl,process2,4,
[{file,"src/ejabberd_ctl.erl"},{line,247}]},
{ejabberd_ctl,process,2,
[{file,"src/ejabberd_ctl.erl"},{line,225}]},
{rpc,'-handle_call_call/6-fun-0-',5,
[{file,"rpc.erl"},{line,187}]}]
корень @ новый сервер: ejabberdctl каталог_импорта / var / lib / ejabberd_old /
Problem 'error {badmatch,{error,eacces}}' occurred executing the command.
Stacktrace: [{jd2ejd,import_dir,1,[{file,"src/jd2ejd.erl"},{line,78}]},
{ejabberd_admin,import_dir,1,
[{file,"src/ejabberd_admin.erl"},{line,436}]},
{ejabberd_ctl,call_command,4,
[{file,"src/ejabberd_ctl.erl"},{line,324}]},
{ejabberd_ctl,try_call_command,4,
[{file,"src/ejabberd_ctl.erl"},{line,298}]},
{ejabberd_ctl,process2,4,
[{file,"src/ejabberd_ctl.erl"},{line,247}]},
{ejabberd_ctl,process,2,
[{file,"src/ejabberd_ctl.erl"},{line,225}]},
{rpc,'-handle_call_call/6-fun-0-',5,
[{file,"rpc.erl"},{line,187}]}]strong text
Что еще я могу сделать для переноса БД на новую версию ejabberd.
eacces означает, что у программы нет системного разрешения на чтение файла. Возможно, файл доступен только для чтения для root, но ejabberd запущен пользователем ejabberd или чем-то в этом роде.
Еще одна вещь, совершенно другая, которую вы можете попробовать:
Это много шагов, но единственные трудные шаги для вас - 5 (скопировать старую базу данных в новое место) и 7 (настроить старое имя узла в новой установке).