我正在運行兩個具有複製mnesia數據庫的erlang節點。每當我嘗試啓動其中一個,而mnesia不在另一個上運行時,mnesia:wait_for_tables(?TABS,?TIMEOUT)將掛起其調用的節點上。我需要一個結構(如果兩個節點都沒有運行),我可以開始使用一個,而另一個停止運行,然後決定讓另一個節點繼續運行。我需要確保運行的第一個節點在啓動後更新。這是否一定要我有一個作爲主人?集羣中Mnesia主節點的重要性
%%%編輯.......................................... .................................
哦,我明白了。我使用的數據庫有一些碎片表。一些片段已經在網絡中分佈以進行負載平衡。所以,一個主機上的Mnesia會嘗試通過網絡加載它們,並且會失敗,因爲另一個主機上的mnesia已經關閉了!
我想這與mnesia主節點沒有任何關係。但我仍然很想理解相同的意義,因爲我之前沒有使用它,但是我總是玩分佈式模式。再次
謝謝...
謝謝user6834 – 2010-10-11 10:39:51
uwiger,謝謝。你認爲(在未來),mnesia會根據最近的更新機制或某種類型的簽名來合併兩個副本,特別是當檢測到「正在運行的分區網絡」致命錯誤時? – 2011-05-31 16:06:25
今天可以做到這一點,雖然沒有非常好的記錄或在所有部分進行測試。 http://github.com/esl/unsplit是一個在netsplits之後自動合併mnesia表的庫。最近的mnesia版本已被仔細地增強以支持這一點,並且R14B03還增加了一種法定檢查形式('多數')來減少難以解決的不一致性的風險。 – uwiger 2011-06-11 14:26:33