是否可以在群集中运行Mnesia而不进行复制

时间:2013-10-09 13:51:49

标签: erlang mnesia

我想知道,如果我可以在没有复制的情况下运行Mnesia。假设我有节点集群其中一个节点主机mNesia服务器使用光盘副本 - 让我们将此节点称为mNode。其余节点(服务节点)应从mNode加载架构,不应维护任何本地副本。

我查看了mNesia文档但无法找到方法。

2 个答案:

答案 0 :(得分:2)

是的!您可以在所有节点上创建架构,但将表定义为仅在m_node上具有ram / disc副本。通过这种方式,他们可以从所有节点到达,但只将数据存储在一个节点上。

答案 1 :(得分:2)

阅读文档http://www.erlang.org/doc/apps/mnesia/Mnesia_chap5.html#id76406 无盘节点部分讨论了如何实现此用例。 下面设置这样的环境步骤。

 1. Start mNode
 erl -sname m_node -mnesia dir "/tmp/funky/"

 2.Start Service node
 erl -sname s1

 3. Create Cluster 
 net_adm:ping('s1@_)').

 4. On m_node run 
  mnesia:change_config(extra_db_nodes, ['s1@_']).  
  mnesia:create_table(funky, []).

 5. On s1 node 
   mnesia:start().
   mneisa:info().

  remote             = [funky]     // Points to Remote table funky on node m_node
  ram_copies         = [schema]    // Ram copy of schema is kept in each service node.