当前位置:  开发笔记 > 编程语言 > 正文

如何将节点添加到mnesia集群?

如何解决《如何将节点添加到mnesia集群?》经验,为你挑选了1个好方法。

我是erlang和mnesia新手..

如何将新的disc_only_copies节点添加到已具有架构的mnesia数据库中?

谢谢



1> archaelus..:

启动新节点(b@node)erl -sname b -mnesia dir '"/path/to/storage"' -s mnesia.这将启动一个名为的新ram_copies节点b@node.

在原始节点(a@node)上,在erlang提示符下执行mnesia:change_config(extra_db_nodes, ['b@node']).这将导致原始节点连接b到mnesia集群.此时,b@node已加入群集但只有模式的副本.

为了使新节点b@node能够存储光盘副本,我们需要将模式表类型b@node从更改ram_copiesdisc_copies.mnesia:change_table_copy_type(schema, 'b@node', disc_copies).在任何节点上运行.

b@node此时只有一个模式的副本.要将所有表复制a@nodeb@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.您可以修改该语句 - 在调用中替换Type变量,以便复制表但确保它们仅在光盘上.disc_only_copiesmnesia:add_table_copy/3

在Mnesia的文档介绍了如何使用我在这里显示的功能.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有