2009-04-24 10 views

答えて

38
は、あなたの新しいノード( [email protected]erl -sname b -mnesia dir '"/path/to/storage"' -s mnesiaを開始

。これにより、[email protected]という新しいram_copiesノードが開始されます。

元のノード([email protected])では、erlangプロンプトでmnesia:change_config(extra_db_nodes, ['[email protected]']).を実行します。これにより、元のノードがmnesiaクラスタにbを接続します。この時点で[email protected]はクラスタに参加しましたが、スキーマのコピーのみを保持しています。

ディスクのコピーを保存することができる新しいノード[email protected]にするために、我々はdisc_copiesram_copiesから[email protected]上のスキーマテーブルの種類を変更する必要があります。任意のノードでmnesia:change_table_copy_type(schema, '[email protected]', disc_copies).を実行します。

[email protected]には、この時点でスキーマのコピーがあります。 [email protected][email protected]からすべてのテーブルをコピーして、テーブル型を維持するために、次のコマンドを実行します。

[{Tb, mnesia:add_table_copy(Tb, node(), Type)} 
|| {Tb, [{'[email protected]', Type}]} <- [{T, mnesia:table_info(T, where_to_commit)} 
           || T <- mnesia:system_info(tables)]]. 

このコマンドは、ネットワーク上の各テーブルの内容をコピーしますように実行に時間がかかることがあります。

[email protected]は、[email protected]の正確なレプリカになりました。その文を変更することができます。mnesia:add_table_copy/3の呼び出しでdisc_only_copiesという変数をTypeに置き換えてテーブルをコピーしますが、そのテーブルがディスクのみであることを確認してください。

mnesia documentationはここに示した機能の使い方を説明しています。

+0

おそらく、あなたはこの質問の答えを知っています。http://stackoverflow.com/questions/3702201/remove-not-exist-already-node-from-mnesia-clusterscheme – vinnitu

+0

これと同じように、関連する質問? http://stackoverflow.com/questions/13398632/creating-mnesia-disk-copies-of-existing-ram-table – mezamorphic

関連する問題