ejabberd 将用户从一个域迁移到另一个域

ejabberd migrate users from one domain to other domain

我有 ejabberd 21 与超过一百万的用户一起工作,他们的聊天记录。我想根据新的业务需求将所有用户迁移到新的域/主机名。什么是合适的方法?

ejabberd 中没有这样的工具,而且我不知道有任何其他外部工具可以做到这一点。但是你可以手动完成。

如果您使用 SQL 数据库进行身份验证和存储名册、离线消息等...

  1. 停止 ejabberd,
  2. 转储 SQL 到文本文件,
  3. 用该文本文件中的新主机名替换一个主机名,
  4. 然后创建一个新的数据库,配置ejabberd来使用它
  5. 并导入新的文本文件。

或者您有能力直接在 SQL 中执行此替换。

如果你使用的是内部Mnesia数据库,方法类似:

  1. 使用“ejabberdctl dump”或使用 ejabberd WebAdmin
  2. 将 mnesia 数据库转储到文本文件
  3. 用该文本文件中的新主机名替换旧主机名
  4. 停止 ejabberd
  5. 移动到 mnesia spool 目录的安全位置
  6. 启动 ejabberd。它将生成一个新的空 mnesia 数据库
  7. 使用“ejabberdctl load”加载新的文本文件。或注册一个新帐户,在 ejabberd.yml 中授予管理员权限,以便您可以使用它登录 WebAdmin 以加载文本文件。