我想知道,如果我可以在没有复制的情况下运行Mnesia。假设我有节点集群其中一个节点主机mNesia服务器使用光盘副本 - 让我们将此节点称为mNode。其余节点(服务节点)应从mNode加载架构,不应维护任何本地副本。
我查看了mNesia文档但无法找到方法。
答案 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.