早在17年9月,我在父亲仍在付款但不再使用的(debian 9-)服务器上安装了ejabberd实例。最初使用它的一小群朋友迅速发展,现在有数百人聊天。
是时候更新ejabberd了(我安装了16.09-4),因为我们希望保持安全并能够享用所有最新的哨声和铃铛。我以为可以通过一些简单的“ apt-get upgrade”魔术来解决问题,但是男孩,我错了。
我查看了文档(Specific version upgrade notes),并尝试按照此处描述的步骤更新到17.03。
这些更新非常失败(缺少/ usr / sbin /的链接,导致更新后无法重新启动服务器。添加符号链接无济于事。我相信我选择去年安装到/ opt /,这可以解释原因)。
由于我对MySQL有一定的经验,而对Mnesia则没有任何经验,因此我一开始也决定在ejabberd.yml文件中添加“ default_db:SQL”。我(错误地)假定所有数据都将存储在MySQL-DB中,而不再存储在Mnesia中。情况似乎并非如此:我在Mnesia中看到了所有注册用户(使用ejabberdctl),但在MySQL中仅看到完整列表的一部分。
我想我的问题是双重的:
从16.09-4更新到最新版本的最有效方法是什么? (我的目标是找到一个解决方案,而不必在其他服务器上安装新的ejabberd实例,而只需备份和迁移MySQL)
如何避免完全使用Mnesia而仅使用MySQL?并且相关:如何将所有现有的Mnesia数据推入MySQL?
最佳答案
从16.09-4更新到最新版本的最有效方法是什么?
当您对安装位置和位置,链接,路径中的问题等感到有些困惑时,我建议采用“最有效”的解决方案,该解决方案包含许多步骤,但至少可以满足您的要求:
首先处理旧的:
查找您的配置目录和mnesia假脱机(尝试'ejabberdctl help')
停止射精
将您的配置目录和Mnesia假脱机移至安全位置
卸载ejabberd以及所有与ejabberd相关的文件和目录
现在是新的:
以您喜欢的方式安装ejabberd:Debian软件包,源代码等
让它开始,所以它创建默认的配置文件和最小的mnesia假脱机
您甚至可以注册一个帐户,登录,检查它是否正常运行
查找新的配置目录和mnesia假脱机(也许由于安装过程不同,它们是不同的路径)
停止射精
现在恢复您的旧信息
用旧的替换新的配置目录,用旧的替换新的mnesia假脱机
使用旧的配置和旧的mnesia重新启动ejabberd。它可能会抱怨无用或未知的选项,也可能会报告它正在更新数据库架构。
如果至少启动,请检查您是否拥有所有用户,并在有重命名选项的情况下更新配置文件...
当然,有更简便快捷的更新方法,但是您的特殊情况需要采取特殊步骤。
如何避免完全使用Mnesia而仅使用MySQL?
您为什么要不惜一切代价避免这种情况? ejabberd中的某些内容是必需的,例如客户端会话,内部路由,命令...其他内容可以移至MySQL,例如名册,passwd,MUC,vcards ...
并且相关:如何将所有现有的Mnesia数据推入MySQL?
您可以将许多模块配置为使用sql而不是mnesia,然后运行export2sql命令,该命令生成一个* .sql文件,您将导入到新的MySQL数据库中。之后,您可以使用WebAdmin删除mnesia表的内容。