significado erlang mnesia

erlang - significado - ¿Cómo agregar un nodo a un clúster mnesia?



mnesia elixir (1)

Soy un novato erlang y mnesia ..

¿Cómo agrego un nuevo nodo disc_only_copies a una base de datos mnesia que ya tiene un esquema?

Gracias


Inicie su nuevo nodo ( b@node ) erl -sname b -mnesia dir ''"/path/to/storage"'' -s mnesia . Esto inicia un nuevo nodo ram_copies llamado b@node .

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

Para hacer nuevo el nodo b@node capaz de almacenar copias de disco, necesitamos cambiar el tipo de tabla de esquema en b@node de ram_copies a disc_copies . Ejecute mnesia:change_table_copy_type(schema, ''b@node'', disc_copies). en cualquier nodo.

b@node solo tiene una copia del esquema en este punto. Para copiar todas las tablas de a@node a b@node y mantener los tipos de tabla, puede ejecutar:

[{Tb, mnesia:add_table_copy(Tb, node(), Type)} || {Tb, [{''a@node'', Type}]} <- [{T, mnesia:table_info(T, where_to_commit)} || T <- mnesia:system_info(tables)]].

Este comando puede tardar un poco en ejecutarse, ya que copiará el contenido de cada tabla a través de la red.

b@node ahora es una réplica exacta de a@node . Puede modificar esa declaración: reemplace la variable Type con disc_only_copies en la llamada a mnesia:add_table_copy/3 para copiar las tablas, pero asegúrese de que estén en el disco solamente.

La documentación de mnesia explica cómo usar las funciones que he mostrado aquí.