मुझे नहीं लगता कि यह एक नोड (किसी भी?) पर ऑनलाइन किया जा सकता है, लेकिन दो नोड्स चलाने और तालिका प्रतियों को जोड़ने के अलावा बैकअप/पुनर्स्थापना के माध्यम से करना संभव है। Mnesia User's guide अनुभाग 6.9.1 में आपको कुछ कोड मिलेगा जो मैनेशिया का उपयोग करता है: traverse_backup स्नेमा तालिका (नीचे दिखाया गया) में नोड नामों को बदलने के लिए एक मैनेशिया बैकअप फ़ाइल में। मॉड्यूल नाम जो आपको शायद उपयोग करना चाहिए mnesia_backup
है।
इस कोड के साथ
आप की जरूरत के लिए करेंगे:
%% On [email protected]
mnesia:backup("/path/to/mnesia.backup").
change_node_name(mnesia_backup, [email protected], [email protected],
"/path/to/mnesia.backup", "/path/to/new.mnesia.backup").
%% On [email protected]
mnesia:restore("/path/to/new.mnesia.backup", []).
मुझे यकीन है कि आप [email protected]
पर पहले स्कीमा बनाने की जरूरत है, तो नहीं कर रहा हूँ।
उपयोगकर्ता गाइड से परिवर्तन नोड नाम कोड:
change_node_name(Mod, From, To, Source, Target) ->
Switch =
fun(Node) when Node == From -> To;
(Node) when Node == To -> throw({error, already_exists});
(Node) -> Node
end,
Convert =
fun({schema, db_nodes, Nodes}, Acc) ->
{[{schema, db_nodes, lists:map(Switch,Nodes)}], Acc};
({schema, version, Version}, Acc) ->
{[{schema, version, Version}], Acc};
({schema, cookie, Cookie}, Acc) ->
{[{schema, cookie, Cookie}], Acc};
({schema, Tab, CreateList}, Acc) ->
Keys = [ram_copies, disc_copies, disc_only_copies],
OptSwitch =
fun({Key, Val}) ->
case lists:member(Key, Keys) of
true -> {Key, lists:map(Switch, Val)};
false-> {Key, Val}
end
end,
{[{schema, Tab, lists:map(OptSwitch, CreateList)}], Acc};
(Other, Acc) ->
{[Other], Acc}
end,
mnesia:traverse_backup(Source, Mod, Target, Mod, Convert, switched).
मैं के बारे में चरणों का पालन किया लेकिन, बहाल करने पर विफल कोई सुझाव? 1. मूल डेटाबेस बैकअप 2. नोड नाम बदलें 3. बाक को किसी अन्य मशीन में कॉपी करें 4. नई बैकअप फ़ाइल को पुनर्स्थापित करें त्रुटि संदेश है: {aborted, {'EXIT', {aborted, {bad_commit, {missing_lock, 'web_server @ anothernode'}}}}} –