クラッシュしたサーバーから新しいサーバーにデータベースを復元する手順を確立しようとしています。私のサーバーは XMPP サーバーとして Ejabberd を実行しており、mnesia の代わりに postgresql を使用するように構成しました。
私の手順は、「元のDBの内容をダンプし、新しいサーバーを実行し、psqlを使用してDBの内容を復元してから、システムを実行する」のようなものです。ただし、Ejabberd を再度実行しようとすると、クラッシュが発生します。
=CRASH REPORT==== 3-Dec-2010::22:05:00 ===
crasher:
pid: <0.36.0>
registered_name: []
exception exit: {bad_return,{{ejabberd_app,start,[normal,[]]},
{'EXIT',"Error reading Mnesia database"}}}
in function application_master:init/4
ここで、システムは PostgreSQL で実行されていると考えていましたが、まだ Mnesia を使用しているようです。いくつか質問があります:
- 記憶喪失が使用されていないことを確認するにはどうすればよいですか?
- すべての ejabberd アクティビティを PGSQL に転送するにはどうすればよいですか?
これは、私の ejabberd.cfg ファイルのモジュール部分です。
{modules,
[
{mod_adhoc, []},
{mod_announce, [{access, announce}]}, % requires mod_adhoc
{mod_caps, []},
{mod_configure,[]}, % requires mod_adhoc
{mod_ctlextra, []},
{mod_disco, []},
{mod_irc, []},
{mod_last_odbc, []},
{mod_muc, [
{access, muc},
{access_create, muc},
{access_persistent, muc},
{access_admin, muc_admin},
{max_users, 500}
]},
{mod_offline_odbc, []},
{mod_privacy_odbc, []},
{mod_private_odbc, []},
{mod_pubsub, [ % requires mod_caps
{access_createnode, pubsub_createnode},
{plugins, ["default", "pep"]}
]},
{mod_register, [
{welcome_message, none},
{access, register}
]},
{mod_roster_odbc, []},
{mod_stats, []},
{mod_time, []},
{mod_vcard_odbc, []},
{mod_version, []}
]}.
私は何が欠けていますか?
クラッシュの原因は mnesia DB が Ejabberd によって使用されているためだと思います.PGSQL DB と同期していないため、正しく動作しません.
編集:1つの問題が解決しました。私は Amazon クラウドを使用しているため、ERLANG_NODE をハードコーディングして、ホスト名 (再起動時に変更される) で定義されないようにする必要がありました。これで ejabberd が動作するようになりましたが、mnesia の使用をやめたいと思っています。