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
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Start your new node (
b@node)erl -sname b -mnesia dir '"/path/to/storage"' -s mnesia. This starts a new ram_copies 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: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.