昨晚晚些时候,我的主机提供商WebFusion用安全补丁更新了我的VPS。
从那时起,我无法启动ejabberd实例。我得到以下错误,这些错误似乎表明主机名已更改。
=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的配置没有做任何修改,这是基于Ubuntu8.04LTS的。
在这种情况下,我尝试过在Googlew.r.t中恢复或迁移mnesia文件,但似乎无法重新启动实例。我不能对文件进行二进制备份并清理系统,因为这依赖于在备份完成之前获得一个正在运行的实例。看起来我很困惑,不得不注销几个月的用户帐户注册。
我的主机名似乎没有随着主机公司执行的修补程序和重新启动而改变。老实说,我并不知道ejabberd的主机名是什么,但我知道它是ejabberd@的形式。我想知道有什么方法可以从现有的mnesia数据文件中确定这一点吗?
至于WebFusion的技术支持渠道呢?他们毫不含糊地告诉我,我是一个人,在被问到的时候根本没有提供任何支持。
希望了解如何从/var/lib/ejabberd中的mnesia数据文件中提取数据,以及如何恢复此安装或新安装。如果有必要,我会考虑搬到一个新的主机或VPS。
非常感谢。
发布于 2010-12-02 13:25:04
最后,我使用ejabberdctl获取底层mnesia数据库的信息。
然后将文件/etc/ ERLANG_NODE /ejabberd中的ejabberd设置为ejabberd@vps。这个服务是在输入/etc/init.d/ejabberd时出现的。
启动时,进程报告在30秒后失败。然而,我可以访问web管理界面并转储数据库。
为了将来的使用,我将被部署到一个新的ejabberd+MySQL集群中,并且显然离开了我当前的VPS提供程序。
发布于 2014-06-06 04:53:53
/etc/init.d/ejabberd停止
2.杀伤过程: beam、beam.smp、epmd
killall ejabberd killall光束killall beam.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启动
https://serverfault.com/questions/207506
复制相似问题