我的托管服务提供商WebFusion昨晚用安全补丁更新了我的 VPS。
从那时起我就无法开始埃贾伯德实例。我收到以下错误,这似乎表明主机名已更改。
=ERROR REPORT==== 2010-11-29 23:01:10 ===
E(<0.35.0>:ejabberd_config:278) : Error reading Mnesia database spool files:
The Mnesia database couldn't read the spool file for the table 'acl'.
ejabberd needs read and write access in the directory:
/var/lib/ejabberd
Maybe the problem is a change in the computer hostname,
or a change in the Erlang node name, which is currently:
'ejabberd@lvps109-104-93-116'
Check the ejabberd guide for details about changing the
computer hostname or Erlang node name.
=INFO REPORT==== 2010-11-29 23:01:15 ===
application: ejabberd
exited: {bad_return,{{ejabberd_app,start,[normal,[]]},
{'EXIT',"Error reading Mnesia database"}}}
type: temporary
几个月来一切都运行良好,我没有对 VPS 配置进行任何更改,它基于Ubuntu 8.04 LTS顺便一提。
我已经尝试了 Google 上能找到的所有恢复或迁移此类情况下的 mnesia 文件的方法,但似乎无法重新启动实例。我无法对文件进行二进制备份并清理系统,因为这依赖于在备份完成之前启动正在运行的实例。看来我束手无策了,不得不注销几个月的用户帐户注册。
我的主机名没有出现已随托管公司执行的补丁和重启而发生变化。老实说,我并不知道 ejabberd 期望的主机名是什么,但我知道它的形式是 ejabberd@。我想知道有没有办法从现有的 mnesia 数据文件中确定这一点?
至于技术支持渠道WebFusion他们明确地告诉我,我只能靠自己,当我问他们问题时,他们没有给我提供任何支持。
非常感谢任何关于如何从中提取数据的指导mnesia数据文件在/var/lib/ejabberd以及如何恢复此安装或新安装。如果有必要,我会考虑迁移到新主机或 VPS。
非常感谢。
答案1
- 停止 ejabberd。
/etc/init.d/ejabberd停止
2.终止进程:beam、beam.smp、epmd
killall ejabberd
杀戮光束
杀死光束.smp
killall epmd
3.删除 /var/lib/ejabberd 中的文件(为以防万一,请创建此文件夹的备份)
rm -rf /var/lib/ejabberd/*
rm -rf /var/lib/ejabberd/.erlang.cookie
4.尝试启动ejabberd。
/etc/init.d/ejabberd 启动
答案2
我最终使用了韋伯德克特获取有关底层 mnesia 数据库的信息。
然后设置ERLANG_NODE在文件中/etc/defaults/ejabberd就我而言,ejabberd@vps. Et viola 服务在输入后出现/etc/init.d/ejabberd 启动。
启动后,进程报告在 30 秒后失败。但我可以访问 Web 管理界面并转储数据库。
为了将来的使用,我将被部署到一个新的ejabberd+MySQL集群,显然离开了我当前的 VPS 提供商。