このディスカッションでは、あなたが直面している状況と同様の状況が提示されます。
その情報源から読む:
起動時に、Mnesiaは他のノードとの接続を試み、それが成功した場合は、それらのノードからテーブルをロードします。他のノードがダウンしている場合は、ローカルトランザクションログでmnesia_downマークを探して、テーブルに一貫性のあるレプリカがあるかどうかを判断します。最後にシャットダウンされたノードには、他のすべてのノードからのmnesia_downがあります。これは、テーブルを安全にロードできることを意味します。(あなたの場合のように)他のノードのいくつかが最初に開始された場合、Mnesiaはテーブルをロードするために別のノードが接続するのを無期限に待機します
最初にノード1をシャットダウンしているのでmnesia_down
、他のノードからのノードはありません。シャットダウンの順序を逆にするとどうなりますか?
また、 force_load_table/1関数を介してテーブルのロードを強制できるはずです。
force_load_table(Tab) -> yes | ErrorDescription
テーブルロードのMnesiaアルゴリズムは、テーブルをロードできない状況につながる可能性があります。この状況は、ノードが開始され、システムクラッシュのためにこのローカルコピーが非アクティブになった後、Mnesiaがテーブルの別のコピーがアクティブであると結論付けた場合または疑った場合に発生します。
この状況が受け入れられない場合は、この関数を使用して、Mnesiaテーブルロードアルゴリズムの戦略をオーバーライドできます。これにより、結果として一貫性のないデータベースによって一部のトランザクション効果が失われる状況が発生する可能性がありますが、一部のアプリケーションでは、一貫性のあるデータよりも高可用性が重要です。