2009-04-24 17 views

Respuesta

38

Para empezar el nuevo nodo ([email protected]) erl -sname b -mnesia dir '"/path/to/storage"' -s mnesia. Esto inicia un nuevo nodo ram_copies llamado [email protected].

En su nodo original ([email protected]), en el indicador de erlang ejecute mnesia:change_config(extra_db_nodes, ['[email protected]']). Esto hará que el nodo original se conecte b al clúster de mnesia. En este punto, [email protected] se ha unido al clúster pero solo tiene una copia del esquema.

para hacer nuevos [email protected] el nodo capaz de almacenar copias de discos, tenemos que cambiar el tipo de tabla de esquema en [email protected] de ram_copies a disc_copies. Ejecute mnesia:change_table_copy_type(schema, '[email protected]', disc_copies). en cualquier nodo.

[email protected] solo tiene una copia del esquema en este punto. Para copiar todas las tablas [email protected]-[email protected] y mantener los tipos de tabla, puede ejecutar:

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

Este comando puede tomar un tiempo para ejecutar, ya que copiar el contenido de cada tabla través de la red.

[email protected] ahora es una réplica exacta de [email protected]. Puede modificar esa declaración: reemplace la variable Type con disc_only_copies en la llamada al mnesia:add_table_copy/3 para copiar las tablas, pero asegúrese de que estén solo en el disco.

El mnesia documentation explica cómo usar las funciones que he mostrado aquí.

+0

tal vez su respuesta conocida para esta pregunta http://stackoverflow.com/questions/3702201/remove-not-exist-already-node-from-mnesia-clusterscheme – vinnitu

+0

Supongamos que no conoce la respuesta a esto de manera similar- pregunta relacionada? http://stackoverflow.com/questions/13398632/creating-mnesia-disk-copies-of-existing-ramtable – mezamorphic

Cuestiones relacionadas