2

ejabberdサーバー(DCD、DCL、およびDATファイル)からmnesiaデータベースダンプがあり、このデータベースから可能なデータを回復しようとしています。それをある種のSQLデータベースに変換するのが理想的ですが、私は単純なテキストダンプに落ち着きます(そこからおそらくデータベースを再構築できます)。

私はerlang/mnesiaの初心者ですが、オンラインドキュメントから何とかできました:

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().

テレビが起動すると、テーブル名が表示され、レコードが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/

最初のコマンドは失敗し、私は人と機械の間の戦争にすぐに負けていると結論せざるを得ませんでした。私は前向きではありませんが、ホストとしてejabberdを使用すると、ノードとしてlocalhostが使用されると思います。何か案は?

更新:デフォルトのejabberd dbをエクスポートしようとすると、{{badmatch,{error,eacces}}他のエラーが発生するため、権限の問題である可能性があります。 このメールにはエラーが表示されていますが、理由はわかりません。

4

3 に答える 3

2

ejabberdctlEjabberdは、ユーティリティを使用して、そのmnesiaデータベースを構造化テキストファイルにダンプできます。

ejabberdctl dump /tmp/ejabberd.db.txt
于 2011-04-27T22:03:29.373 に答える
0

mnesiaノードシステム全体がどのように機能するかについてはまだ詳細を検討中ですが、これを使用してデータベースをmnesiaにロードすることになりました。

bash$> erl -name ejabberd@localhost -mnesia dir '"/home/usr/ejabberd@localhost/"'

見てくれた人に感謝します。

于 2011-01-12T20:15:52.463 に答える
0

ejabberdctlejabberdctlexport2odbcホストディレクトリのマニュアルページに基づく

ejabberdctl export2odbc localhost /tmp/sql
于 2016-07-27T19:02:15.027 に答える