我想建立一個程序,用於從崩潰的服務器將數據庫恢復到新的服務器。我的服務器運行Ejabberd作爲XMPP服務器,並且我將它配置爲使用postgresql而不是mnesia--或者我想。如何停止使用mnesia ejabberd
我的過程類似於「轉儲原始數據庫的內容,運行新服務器,使用psql恢復數據庫的內容,然後運行系統」。然而,當我嘗試運行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。我有幾個問題:
- 我怎樣才能確保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, []}
]}.
我缺少什麼?
我假設崩潰是由於Ejabberd使用mnesia數據庫造成的,並且由於它與PGSQL數據庫不同步,所以無法正常運行 - 但也許我完全偏離了這裏的軌道,並且會喜歡一些方向。
編輯:解決了一個問題。由於我使用的是亞馬遜雲,因此我需要對ERLANG_NODE進行硬編碼,因此不會由主機名(在重新啓動時更改)定義。這讓我的ejabberd運行,但我仍然希望停止使用mnesia,並且我想知道ejabberd的哪個部分仍在使用它,我怎麼能找到它。
謝謝。的確mod_pubsub在我的配置中不是odbc。然而,我在我的安裝中找不到mod_pubsub_odbc,所以我不知道我的安裝是舊的還是我錯過了一些東西。 – 2011-02-25 06:55:50