【问题标题】:Is it possible to run Mnesia with out replication in a cluster是否可以在集群中不进行复制的情况下运行 Mnesia
【发布时间】:2013-10-16 22:19:57
【问题描述】:

我想知道,我是否可以在没有复制的情况下运行 Mnesia。假设我有节点集群,其中一个节点托管带有光盘副本的 mNesia 服务器 - 让我们将此节点称为 mNode。其余节点(服务节点)应从 mNode 加载模式,并且不应维护任何本地副本。

我查看了 mNesia 文档,但找不到这样做的方法。

【问题讨论】:

    标签: erlang mnesia


    【解决方案1】:

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

    【讨论】:

      【解决方案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.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-02
        • 1970-01-01
        • 2022-01-17
        • 2023-01-17
        • 1970-01-01
        • 1970-01-01
        • 2015-04-25
        相关资源
        最近更新 更多