gpt4 book ai didi

mysql - Ejabberd mnesia 数据库到 mysql

转载 作者:行者123 更新时间:2023-11-29 03:13:21 25 4
gpt4 key购买 nike

我有一个来自 ejabberd 服务器的 mnesia 数据库转储(DCD、DCL 和 DAT 文件),我正在尝试从该数据库中恢复任何我能恢复的数据。将它转换为某种 SQL 数据库是理想的,但我会满足于简单的文本转储(从那里我可能可以重建数据库)。

我是一个 erlang/mnesia 新手,但这是我从 online docs 中设法做到的:

bash$> erl -mnesia dir '"ejabberd_dump_dir"'
...Erlang loads...
1> mnesia:start().
2> mnesia:info().
[snip]
stopped db nodes = [ejabberd_dump_dir]
[snip]
remote = [ list of the tables from ejabberd_dump_dir ]
[snip]
3> tv:start().

当 tv 启动时,它只显示表名并说它们有 0 条记录。我猜想有某种方法可以将它再次加载到内存中,但我还没有弄清楚如何基于文档。

我的另一个想法是尝试使用另一个安装的 ejabberd 来加载它,但是似乎使用 ejabberdctl 的唯一方法是从文本文件加载它。

如何加载此数据库并将其转储到 sql 或转储到可以由 sql 导入的格式?我错过了什么?

更新:我一直在尝试将此数据库恢复到临时 ejabberd 服务器,如下所示:

bash$> ejabberdctl --auth admin ejabberd passwd restore ejabberd /home/user/ejabberddmpdir/
bash$> ejabberdctl --auth admin ejabberd passwd export2odbc ejabberd /home/user/mnesiatosql/

第一个命令失败并迫使我得出结论,我很快就会输掉人机之间的 war 。我不是肯定的,但我认为使用 ejabberd 作为主机将使用 localhost 作为节点。有什么想法吗?

更新:我认为这可能是一个权限问题,因为尝试导出默认的 ejabberd 数据库将导致 {{badmatch,{error,eacces}} 等错误。 This电子邮件显示我收到的错误,但我不确定原因。

最佳答案

Ejabberd 可以使用 ejabberdctl 实用程序将其 mnesia 数据库转储到结构化文本文件中:

ejabberdctl dump /tmp/ejabberd.db.txt

关于mysql - Ejabberd mnesia 数据库到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4650318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com