Hello,
I'm an erlang and mnesia newbie..
How do I add a new disc_only_copies node to an mnesia database that already has a schema?
Thanks
-
Start your new node (
b@node)erl -sname b -mnesia dir '"/path/to/storage"' -s mnesia. This starts a new ram_copes node calledb@node.On your original node (
a@node), at the erlang prompt executemnesia:change_config(extra_db_nodes, ['b@node']).This will cause the original node to connectbto the mnesia cluster. At this point,b@nodehas joined the cluster but only has a copy of the schema.To make new the node
b@nodecapable of storing disc copies, we need to change the schema table type onb@nodefromram_copiestodisc_copies. Runmnesia:change_table_copy_type(schema, 'b@node', disc_copies).on any node.b@nodeonly has a copy of the schema at this point. To copy all the tables froma@nodetob@nodeand maintain table types, you can run:[{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)]].This command may take a while to execute as it will copy the contents of each table over the network.
b@nodeis now an exact replica ofa@node. You could modify that statement - replace theTypevariable withdisc_only_copiesin the call tomnesia:add_table_copy/3in order to copy the tables but ensure they're on disc only.The mnesia documentation explains how to use the functions I've shown here.
vinnitu : maybe you known answer for this question http://stackoverflow.com/questions/3702201/remove-not-exist-already-node-from-mnesia-clusterscheme
0 comments:
Post a Comment