将ejabberd从16.09-4升级到最新

时间:2018-03-20 07:24:17

标签: mysql debian updates ejabberd mnesia

早在9月17日,我在我父亲仍然支付的(debian 9-)服务器上安装了一个ejabberd-instance,但不再使用了。最初使用它的小圈子很快就长大了,现在我们几百个人在聊天。

时间已到了更新ejabberd(我安装了16.09-4),因为我们想要保持安全,并能够享受所有最新的口哨和钟声。我认为一些简单的'apt-get升级' -magic可以做到这一点,但是男孩,我错了。

我查看了文档(Specific version upgrade notes)并尝试按照其中描述的步骤更新到17.03。 这些更新失败了很多(缺少链接到/ usr / sbin /导致无法在更新后重新启动服务器。添加符号链接没有帮助。我相信我选择安装到/ opt /去年,这可以解释原因)。

由于我对MySQL有一些经验,而且没有Mnesia的任何经验,我也在一开始就决定添加" default_db:SQL"在我的ejabberd.yml文件中。我(错误地)假设所有数据都将存储在MySQL-DB中,而不再存储在Mnesia中。这似乎不是这样的:我看到Mnesia中的所有注册用户(使用ejabberdctl),但只是MySQL中完整列表的一部分。

我想我的问题有两个:

  • 从16.09-4更新到最新版本的最有效方法是什么? (我的目标是解决方案,而无需在不同的服务器上安装新的ejabberd-instance,只需备份和迁移MySQL)
  • 如何完全避免使用Mnesia并仅使用MySQL?并且,相关:如何将所有现有的Mnesia数据推送到MySQL?

1 个答案:

答案 0 :(得分:0)

  

从16.09-4更新到最新版本的最有效方法是什么?

由于您对安装的内容和位置,链接,路径等方面的问题存在某种混淆,我建议将其作为最有效的"一个有许多步骤的解决方案,但至少可以随心所欲地工作:

首先处理旧的:

  1. 找到你的配置目录和mnesia spool(尝试' ejabberdctl帮助')
  2. 停止ejabberd
  3. 移至config dir和mnesia spool
  4. 的安全位置
  5. 卸载ejabberd和所有与ejabberd相关的文件和目录
  6. 现在出现了新的一个:

    1. 以您喜欢的方式安装ejabberd:Debian软件包,源代码,等等
    2. 让它开始,所以它创建默认配置文件和最小的mnesia spool
    3. 您甚至可以注册帐户,登录,检查它是否正确运行
    4. 找到新的配置目录和mnesia spool(由于安装过程不同,可能是不同的路径)
    5. 停止ejabberd
    6. 现在恢复旧信息

      1. 将新的配置目录替换为旧配置目录,将新的mnesia spool更换为旧配置目录
      2. 再次启动ejabberd,使用旧配置和旧的mnesia。它可能会抱怨无用或未知的选项,它也可能会报告它正在更新数据库架构。
      3. 如果它至少开始,请检查您是否拥有所有用户,并在有重命名选项的情况下更新配置文件...
      4. 当然,有更简单,更快速的更新方式,但您的特殊情况需要采取特殊步骤。

          

        如何完全避免使用Mnesia并仅使用MySQL?

        为什么要不惜一切代价避免它? ejabberd中的一些东西需要它,比如客户端会话,内部路由,命令......其他东西可以移动到MySQL,如名册,密码,MUC,vcards ......

          

        并且,相关:如何将所有现有的Mnesia数据推送到MySQL?

        您可以将许多模块配置为使用sql而不是mnesia,然后运行export2sql命令,该命令会生成一个* .sql文件,您将导入到新的MySQL数据库中。之后,您可以使用WebAdmin删除mnesia表的内容。