Erlang Mnesia数据库迁移方法

Posted jlom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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表已经没有了

以上是关于Erlang Mnesia数据库迁移方法的主要内容,如果未能解决你的问题,请参考以下文章

Erlang mnesia 数据库访问

Erlang:为 mnesia 指定工作目录?

Erlang:Mnesia:连续更新单个字段值

Erlang-如何在没有记录的情况下使用 Mnesia

使用 Erlang mnesia:read/2 不返回任何内容

erlang r19里面的mnesia_ext