Erlang Mnesia数据库迁移方法

本文参考https://blog.csdn.net/yangzm/article/details/51686249

需求

因为一些原因,需要把一个Mnesia节点的数据库搬迁到另一个节点,然后弃用原来的节点。

步骤

  1. 首先假设节点A'A@IPA'需要搬迁到节点B'B@IPB',它们需要能够连通
  2. 'A@IPA'需要启动着(包括mnesia, -set_cookie $CookieA)
  3. 启动节点B,为mnesia指定一个新路径
#erl -name 'B@IPB' -set_cookie $CookieA -mnesia dir mnesia数据路径 -s mnesia
  1. 链接:‘A’@IPA
('B@IPB')1>mnesia:change_config(extra_db_nodes,['A@IPA', 'B@IPB']).
  1. 将B节点的schema表该为disc_copies
('B@IPB')2>mnesia:change_table_copy_type(schema,node(),disc_copies).
  1. 把A节点所有的disc_copies、disc_copies_only表拷贝过来 mnesia:move_table_copy(Tab :: table(), From :: node(), To :: node()) -> t_result(ok)
('B@IPB')3>mnesia:move_table_copy(表名, 'A@IPA', 'B@IPB').

6.停止A节点,在B节点删掉A节点上的schema表

mnesia:del_table_copy(schema,'A@IPA').

7.停止B节点,重新启动B节点,查看B节点Mnesia中A节点的schema表已经没有了

posted @ 2020-07-07 12:11  J6`  阅读(146)  评论(0编辑  收藏  举报