如何将节点添加到 mnesia 集群?
Posted
技术标签:
【中文标题】如何将节点添加到 mnesia 集群?【英文标题】:How to add a node to an mnesia cluster? 【发布时间】:2010-10-21 17:25:58 【问题描述】:我是 erlang 和 mnesia 新手..
如何将新的 disc_only_copies 节点添加到已具有架构的 mnesia 数据库?
谢谢
【问题讨论】:
【参考方案1】:启动您的新节点 (b@node
) erl -sname b -mnesia dir '"/path/to/storage"' -s mnesia
。这将启动一个名为 b@node
的新 ram_copies 节点。
在您的原始节点 (a@node
) 上,在 erlang 提示符处执行 mnesia:change_config(extra_db_nodes, ['b@node']).
这将导致原始节点将 b
连接到 mnesia 集群。此时,b@node
已加入集群,但只有架构的副本。
要使新节点b@node
能够存储磁盘副本,我们需要将b@node
上的模式表类型从ram_copies
更改为disc_copies
。在任意节点上运行mnesia:change_table_copy_type(schema, 'b@node', disc_copies).
。
b@node
此时只有架构的副本。要将所有表从a@node
复制到b@node
并维护表类型,您可以运行:
[Tb, mnesia:add_table_copy(Tb, node(), Type)
|| Tb, ['a@node', Type] <- [T, mnesia:table_info(T, where_to_commit)
|| T <- mnesia:system_info(tables)]].
此命令可能需要一段时间才能执行,因为它将通过网络复制每个表的内容。
b@node
现在是a@node
的精确复制品。您可以修改该语句 - 在对 mnesia:add_table_copy/3
的调用中将 Type
变量替换为 disc_only_copies
以复制表,但确保它们仅在磁盘上。
mnesia documentation 解释了如何使用我在这里展示的功能。
【讨论】:
也许你知道这个问题的答案***.com/questions/3702201/… 你不知道这个类似问题的答案吗? ***.com/questions/13398632/…以上是关于如何将节点添加到 mnesia 集群?的主要内容,如果未能解决你的问题,请参考以下文章