如何向 mnesia 集群添加节点?
我是 erlang 和 mnesia 新手。
如何将新的 disk_only_copies 节点添加到已有架构的 mnesia 数据库中?
谢谢
I'm an erlang and mnesia newbie..
How do I add a new disc_only_copies node to an mnesia database that already has a schema?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(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
更改为光盘副本
。 在任意节点上运行mnesia:change_table_copy_type(schema, 'b@node', Disc_copies).
。b@node
此时只有架构的副本。 要将所有表从a@node
复制到b@node
并维护表类型,您可以运行:此命令可能需要一段时间才能执行,因为它将复制内容网络上每个表的信息。
b@node
现在是a@node
的精确副本。 您可以修改该语句 - 在调用mnesia:add_table_copy/3
时将Type
变量替换为disc_only_copies
以复制表,但确保它们仅在光盘上。mnesia 文档 解释了如何使用我在此处显示的函数。
Start your new node (
b@node
)erl -sname b -mnesia dir '"/path/to/storage"' -s mnesia
. This starts a new ram_copies node calledb@node
.On your original node (
a@node
), at the erlang prompt executemnesia:change_config(extra_db_nodes, ['b@node']).
This will cause the original node to connectb
to the mnesia cluster. At this point,b@node
has joined the cluster but only has a copy of the schema.To make new the node
b@node
capable of storing disc copies, we need to change the schema table type onb@node
fromram_copies
todisc_copies
. Runmnesia:change_table_copy_type(schema, 'b@node', disc_copies).
on any node.b@node
only has a copy of the schema at this point. To copy all the tables froma@node
tob@node
and maintain table types, you can run:This command may take a while to execute as it will copy the contents of each table over the network.
b@node
is now an exact replica ofa@node
. You could modify that statement - replace theType
variable withdisc_only_copies
in the call tomnesia:add_table_copy/3
in order to copy the tables but ensure they're on disc only.The mnesia documentation explains how to use the functions I've shown here.