2009-04-24 18 views

risposta

38

Avviare il nuovo nodo ([email protected]) erl -sname b -mnesia dir '"/path/to/storage"' -s mnesia. Questo avvia un nuovo nodo ram_copies chiamato [email protected].

Sul nodo originale ([email protected]), al prompt di erlang eseguire mnesia:change_config(extra_db_nodes, ['[email protected]']). Ciò comporterà il nodo originale per la connessione b al cluster mnesia. A questo punto, [email protected] si è unito al cluster ma ha solo una copia dello schema.

Per rendere nuovo nodo [email protected] grado di memorizzare copie del disco, è necessario cambiare il tipo di tabella schema sulla [email protected] da ram_copies a disc_copies. Eseguire mnesia:change_table_copy_type(schema, '[email protected]', disc_copies). su qualsiasi nodo.

[email protected] ha solo una copia dello schema a questo punto. Per copiare tutte le tabelle [email protected]-[email protected] e mantenere tipi di tabella, è possibile eseguire:

[{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)]]. 

Questo comando può prendere un po 'per l'esecuzione come sarà copiare il contenuto di ogni tabella sulla rete.

[email protected] è ora una replica esatta di [email protected]. È possibile modificare tale dichiarazione: sostituire la variabile Type con disc_only_copies nella chiamata a mnesia:add_table_copy/3 per copiare le tabelle ma assicurarsi che siano solo su disco.

Il mnesia documentation spiega come utilizzare le funzioni che ho mostrato qui.

+0

forse hai saputo rispondere a questa domanda http://stackoverflow.com/questions/3702201/remove-not-exist-already-node-from-mnesia-clusterscheme – vinnitu

+0

Non supponete di conoscere la risposta a questo allo stesso modo- domanda correlata? http://stackoverflow.com/questions/13398632/creating-mnesia-disk-copies-of-existing-ram-table – mezamorphic

Problemi correlati