I have a group of erlang nodes that are replicating their data through Mnesia\'s \"extra_db_nodes\"... I need to upgrade hardware and software so I have to detach some nodes as
If you have replicated the table (added table copies) on nodes other than the one you're removing, then you're already fine - just remove the node.
If you wanted to be slightly tidier you'd delete the table copies from the node you're about to remove first via mnesia:del_table_copy/2
.
Generally, mnesia gracefully handles node loss and detects node rejoin (rebooted nodes obtain new table copies from nodes that kept running, nodes that didn't reboot are detected as a network partition event). Mnesia does not consume CPU or network traffic for nodes that have gone down. I think, though I haven't confirmed it in the source, mnesia won't reconnect to nodes that have gone down automatically - the node that goes down is expected to reboot (mnesia) and reconnect.
mnesia:add_table_copy/3
, mnesia:move_table_copy/3
and mnesia:del_table_copy/2
are the functions you should look at for live schema management.
The extra_db_nodes
parameter should only be used when initialising a new DB node - once a new node has a copy of the schema it doesn't need the extra_db_nodes
parameter.