2010-12-03 10 views
2

私はデータベースをクラッシュしたサーバから新しいサーバに復元する手順を確立しようとしています。私のサーバーはEjabberdをXMPPサーバーとして実行しており、mnesiaの代わりにpostgresqlを使用するように構成しました。ejabberdがmnesiaを使用するのを止める方法

私の手順は、「元の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 

ここで私は私がまだMnesiaを使用していたようですしながら、私のシステムは、PostgreSQLの上で実行されていることを考えていました。私はいくつか質問があります:

  1. どのようにしてmnesiaが使用されていないことを確認できますか?
  2. すべての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, []} 
]}. 

私は何をしないのですか?

私は、Ejabberdによって使用されているmnesia DBに起因するクラッシュを想定しています。PGSQL DBとの同期がとれていないため、正しく動作しません。方向。

EDIT:1つの問題を解決しました。 amazonクラウドを使用しているので、ERLANG_NODEをハードコードする必要があったので、ホスト名(再起動時に変更される)によって定義されません。これは私のejabberdを稼働させましたが、それでもmnesiaの使用をやめたいのですが、ejabberdのどの部分がまだそれを使用しているのでしょうか?

答えて

0

あなたはすなわちmod_pubsub _> mod_pubsub_odbc

また、/の/ var/libにを通して見て価値があるかもしれないhere

を参照してください、それらに_odbcで名前を変更する必要があるモジュールの一つを逃したように見えますejabberdディレクトリにあり、私が理解する限り、これらのファイルはmnesiaのdbファイルです。次に、MySQLを指すように設定する必要がある他のモジュールがあるかどうかを調べることができます。

+0

ありがとうございました。実際、mod_pubsubは私の設定ではODBCではありません。しかし、私のインストールでmod_pubsub_odbcが見つかりませんでした。私のインストールが古いか、何か不足しているのだろうかと思います。 –

0

アプリケーションによっては、ejabberd.cfgファイルに90%のモジュールがリストされている必要はありません。最も基本的なもの:より多くのejabberdのヒントを参照してください

  • mod_offline_odbc
  • mod_register
  • 2

    私は個人的にejabberdこのことについていくつかのことを学びました先週。

    mnesia以外のDBを実行している場合、実際に実行しているすべてのモジュールが実際に通信するわけではありません。

    たとえば、mod_admin_extraは、サーバーをポストバックで動作させるように構成した後でも、mnesiaデータベースを使用し続けます。したがって、mod_admin_extraが提供する追加のコマンド(および他のモジュール)を使用して、追加/削除のロスタ/ユーザをたくさん行っている場合は、他の方法でそれを行う必要があります。

    基本的に、ejabberdはmnesia dbをまったく使用しないようにする方法はありません。何らかの処理には常に使用されます。

    関連する問題