Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 关于记忆分布的问题_Database_Erlang_Mnesia - Fatal编程技术网

Database 关于记忆分布的问题

Database 关于记忆分布的问题,database,erlang,mnesia,Database,Erlang,Mnesia,我有两个节点运行mnesia。我在节点1上创建了模式和一些表,并在节点2上使用mnesia:add_table\u copy将表从节点1复制到节点2 在我在节点1上调用q(),然后在节点2上调用q()。我发现当我再次启动节点1时,mnesia:wait_for_tables([sometable],infinity)不会返回。它只会在我再次启动节点2时返回 有办法解决这个问题吗?这是一个问题,因为如果节点2关闭,我将无法再次启动节点1。出现与您面临的情况类似的情况 从该来源阅读: 启动时,Mne

我有两个节点运行mnesia。我在节点1上创建了模式和一些表,并在节点2上使用
mnesia:add_table\u copy
将表从节点1复制到节点2

在我在节点1上调用
q()
,然后在节点2上调用
q()。我发现当我再次启动节点1时,
mnesia:wait_for_tables([sometable],infinity)
不会返回。它只会在我再次启动节点2时返回

有办法解决这个问题吗?这是一个问题,因为如果节点2关闭,我将无法再次启动节点1。

出现与您面临的情况类似的情况

从该来源阅读:

启动时,Mnesia尝试连接 与其他节点一起,如果 成功地从中加载其表 他们。如果其他节点已关闭,则 在其 本地事务日志,以便 确定它是否具有一致的 是否复制其表的副本。节点 那是上个星期的事 mnesia_是从其他所有人那里来的 节点。这意味着它可以安全地运行 加载它的表。如果其他一些 首先开始的节点(如在 (案例)Mnesia将无限期等待 另一个节点按顺序连接 加载它的表

您首先要关闭节点1,这样它就不会从另一个节点关闭
mnesia\u
。如果颠倒关闭顺序会发生什么

此外,还可以通过以下功能强制加载工作台:

force_load_table(Tab) -> yes | ErrorDescription
表加载的Mnesia算法 可能导致以下情况: 无法加载表。这种情况 在节点启动并运行时发生 Mnesia得出结论或怀疑 该表的另一个副本处于活动状态 此本地副本处于非活动状态后 由于系统崩溃

如果这种情况不能接受, 此功能可用于覆盖 Mnesia表加载策略 算法。这可能导致一场灾难 某些交易发生的情况 效果会随着不一致的 数据库作为结果,但对于某些 应用程序的高可用性更重要 比一致的数据更重要


谢谢,这部分解决了我的问题。但是假设我使用mnesia:force_load_table/1启动了节点1,然后我发现节点2又启动了,有没有办法合并这些更改?mnesia:set_master_节点似乎在启动期间工作,但不能用于强制从master节点“获取”。