2009-04-24 13 views

उत्तर

38
अपने नए नोड ( [email protected]) erl -sname b -mnesia dir '"/path/to/storage"' -s mnesia शुरू

। यह [email protected] नामक एक नया रैम_copies नोड शुरू करता है।

अपने मूल नोड ([email protected]) पर, erlang प्रॉम्प्ट पर mnesia:change_config(extra_db_nodes, ['[email protected]']). निष्पादित करें इससे मूल नोड 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] की एक सटीक प्रतिकृति है। आप उस कथन को संशोधित कर सकते हैं - Type वैरिएबल को disc_only_copies के साथ तालिका में कॉपी करने के लिए mnesia:add_table_copy/3 पर कॉल करें, लेकिन सुनिश्चित करें कि वे केवल डिस्क पर हैं।

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

संबंधित मुद्दे