私はエルランと宗教新人です。mnesiaクラスタにノードを追加するにはどうすればよいですか?
すでにスキンを持つmnesiaデータベースに新しいdisc_only_copiesノードを追加するにはどうすればよいですか?
おかげ
私はエルランと宗教新人です。mnesiaクラスタにノードを追加するにはどうすればよいですか?
すでにスキンを持つmnesiaデータベースに新しいdisc_only_copiesノードを追加するにはどうすればよいですか?
おかげ
[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_copies
へram_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はここに示した機能の使い方を説明しています。
おそらく、あなたはこの質問の答えを知っています。http://stackoverflow.com/questions/3702201/remove-not-exist-already-node-from-mnesia-clusterscheme – vinnitu
これと同じように、関連する質問? http://stackoverflow.com/questions/13398632/creating-mnesia-disk-copies-of-existing-ram-table – mezamorphic