mnesia node replication

Fredrik Thulin ft@REDACTED
Wed Apr 26 08:09:50 CEST 2006


On Tuesday 25 April 2006 22:02, Tony Zheng wrote:
> Hi
>
> I created two mnesia nodes(one@REDACTED and two@REDACTED) and they can
> replicate very well. I want to add a new node on
> server3(three@REDACTED) and make it to replicate all data from
> one@REDACTED or two@REDACTED, how can I do it?
> I used mnesia:create_schema([three@REDACTED]) and
> mnesia:add_table_copy(Tab, three@REDACTED, Type), but it didn't work.
>
> Thanks.
>
> tony


Roughly (on three@REDACTED) :

  mnesia:start(),
  mnesia:change_config(extra_db_nodes, [MasterNode]),

  DiscC = mnesia:table_info(Table, disc_copies),
  case lists:member(node(), DiscC) of
      true ->
          %% table already present on node
          ok;
      false ->
          RamC = mnesia:table_info(Table, ram_copies),
          case lists:member(node(), RamC) of
              true ->
                mnesia:change_table_copy_type(Table, node(),   
					      disc_copies);
              false ->
                mnesia:add_table_copy(Table, node(), disc_copies)
          end
  end.

That is how I do it in YXA (see src/bootstrap.erl). It converts RAM 
copies to disc copies, or just add a disc copy if table is not present 
on node().

/Fredrik




More information about the erlang-questions mailing list