mnesia如何与其他节点/PC同步disc_copies?

问题描述 投票:0回答:1

我想使用 Mnesia 备份我的应用程序,这样如果主节点出现故障,它可以在另一台 PC 上重新启动。
到目前为止,我成功地将主节点连接到其他节点及其 Mnesia,但我无法让远程节点将表保存为 disc_copies(模式除外)。 即使在所有表和节点上

mnesia:change_table_copy_type, [data, Node, disc_copies]
之后,它们仍然只“远程”保存在主节点上。

Mnesia 如何同步并保存到那些远程表?什么频率?如果备份节点没有足够的 RAM,它们会把数据写入磁盘吗?如果主节点挂了,数据还能抢救吗?
根据this answer Mnesia仅在RAM太满时转储到光盘,这意味着主PC突然关闭将丢失尚未写入光盘的数据,这一点都不好......

erlang distributed mnesia
1个回答
1
投票

在 Erlang 论坛上询问并阅读了更多关于文档的信息后,我得到了一些答案:

Mnesia 如何同步并保存到那些远程表?

Mnesia 表和连接根据 “原子性” 工作,这意味着所有写入要么在所有表(即集群中的节点)上成功,要么失败。这确保表尽可能同步。这也引发了另一个问题,即在尝试连接节点时确保节点真正启动并正确配置。

如果备份节点没有足够的内存,他们会把数据写入磁盘吗?

是的,Mnesia 确保这一点。

如果主节点挂了,数据还能抢救吗?

是的,因为这个原子性,数据会在所有节点上,所以即使主节点发生故障并且RAM中有数据,这些数据也在其他远程表上:)

© www.soinside.com 2019 - 2024. All rights reserved.