-
Erlang - mnesia:del_table_copy的问题6
今天尝试了下erlang-mnesia的分布式应用(基于OTP-R13B02),发现分布方式的节点在某种情况下退出时有点问题,导致所有的db操作(例如select, write等)失效.
测试如下:
前提:2台机器A, B分别运行一个Node()
Case-1 : A机器Mensia启动,B机器Mensia启动
--> 结果:A机器一切正常,B机器一切正常 (数据同步正常)
Case-2 : A机器Mensia启动,B机器Mensia启动,B机器Mensia退出.
--> 结果: A机器一切正常
Case-3 : A机器Mensia启动,B机器Mensia启动,B机器Mensia退出,B机器Mensia再启动
--> 结果: A机器一切正常,B机器一切正常 (数据同步正常)
Case-4 : A机器Mensia启动,B机器Mensia启动,B机器Mensia退出,A机器Mensia退出,B机器Mensia再启动
--> (NOTICE HERE) 结果: B机器DB操作失效
问题如下:
按照Case-4的描述,应该是退出以后的机器(B机器)检测不到比它"后退出"机器(A机器)的运行状态,所以导致该Node失效,那么尝试使用mnesia:del_table_copy来解决问题,结果却被告知:{failed,{no_exists,XXX-Table}}.....
不知道如果解决该问题,google下了也没有发现很好的答案,甚至有人说这是一个BUG?
哪位前辈知道这个问题如果解决?谢谢.
问题补充
问题补充:
又测试基于3个节点的分布式Mnesia,原本以为应该会很简单,结果有些出乎意料...
问题描述:
想在已经运行Mnesia的A,B节点的前提下, 新增加一个节点C,即让C成为额外的备份节点.尝试如下:
首先尝试了在A节点运行mnesia:change_config(extra_db_nodes, [xxx]),提示错误,后来想是否直接调用mnesia:add_table_copy/3即可呢,结果还是错误...
google下也有人遇到和我类似的问题,详细见:http://www.erlang.org/pipermail/erlang-questions/2001-July/003401.html, 不过也没有很好的解决方案
当然,如果把3个节点都停止掉,然后重新调用create_schema([A,B,C])应该是可以的,或者,按照某人的提示单独在C机器上create_table(...)以确保其和A,B节点具有相同的Schema,应该也是可以的,不过这样做比较麻烦...
有没有更好的方法呢,学习mnesia不久,类似的问题还比较困惑....
问题补充20.Shadow 写道问题补充:
又测试基于3个节点的分布式Mnesia,原本以为应该会很简单,结果有些出乎意料...
问题描述:
想在已经运行Mnesia的A,B节点的前提下, 新增加一个节点C,即让C成为额外的备份节点.尝试如下:
首先尝试了在A节点运行mnesia:change_config(extra_db_nodes, [xxx]),提示错误,后来想是否直接调用mnesia:add_table_copy/3即可呢,结果还是错误...
google下也有人遇到和我类似的问题,详细见:http://www.erlang.org/pipermail/erlang-questions/2001-July/003401.html, 不过也没有很好的解决方案
当然,如果把3个节点都停止掉,然后重新调用create_schema([A,B,C])应该是可以的,或者,按照某人的提示单独在C机器上create_table(...)以确保其和A,B节点具有相同的Schema,应该也是可以的,不过这样做比较麻烦...
有没有更好的方法呢,学习mnesia不久,类似的问题还比较困惑....
郁闷了,刚用mnesia:change_config(extra_db_nodes, [xxx])成功了...C节点能正确同步了.
原因是C节点的mnesia要确保在运行状态....刚开始怎么没发现这点???
彻底郁闷了.........2010年2月04日 16:07
目前还没有答案
相关推荐
erlang_23.0.2-1版本 centos7 64bit esl-erlang_23.0.2-1_centos_7_amd64.rpm
这个erlang23.0版本,根据rabbitMQ官网的介绍,可以和下面这几个版本的rabbitMQ配合使用: 3.8.9 3.8.8 3.8.7 3.8.6 3.8.5 3.8.4 其他版本的rabbit,请移步其他资源下载
Erlang B 和 Erlang C 是在电信领域中广泛使用的两个数学公式,用于预测和管理电话交换系统的呼叫处理能力。这两个公式由丹麦工程师 Agner Krarup Erlang 在20世纪初开发,对于理解通信系统中的呼叫占用率、阻塞率和...
标题“esl-erlang_19.3_osx_10.10_amd64.dmg”指的是一个特定版本的Erlang编程环境的安装镜像文件,由Erlang Solutions Limited(ESL)发布,适用于Apple macOS 10.10 Yosemite操作系统,并且是为64位AMD处理器设计...
erlang-sd_notify-1.0-2.el7.x86_64.rpm
esl-erlang_23.0和rabbitmq-3.8.4windows版本 直接下载安装就行,可以直接下载就可安装,非常的方便 ,欢迎大家下载 注意事项: 1. Erlang版本和RabbitMQ...5. rabbitMQ无法安装插件时非常有可能是erlang出问题了。
esl-erlang_24.2.1-1_centos_7_amd64.rpm
erlang-24.3.4.4__RAM包
erlang-mnesia-19.3.6.4-1.el7.x86_64.rpm
esl-erlang_25.0.3-1_centos_7_amd64.rpm erlang_25.0.3-1 rpm用于rabitmq基础环境安装
标题中的"erlang-23.2.3-1.el7.x86_64.rpm"和"erlang-23.2.1-1.el7.x86_64.rpm.rar"代表了两个不同的Erlang版本。`.rpm`文件是用于Red Hat Enterprise Linux (RHEL) 和其衍生发行版如CentOS的软件包管理格式,而`....
linux环境 erlang rpm包 esl-erlang_23.0.3-1~centos~7_amd64.rpm
erlang-24.0.3-1.el8.x86_64.rpm资源
esl-erlang_20.3-1_centos_6_amd64.rpm 10.7.1版本
RabbitMQ安装需要的安装包
在给定的"erlang-master.zip_LDA 图像"压缩包中,我们关注的是使用Erlang进行MATLAB图像特征处理的LDA(线性判别分析)算法。LDA是一种统计方法,常用于数据降维和分类,尤其适用于高维特征空间中的机器学习任务。 ...
在标题中的"erlang-18.3-1.el7.centos.x86_64.zip",我们看到的是Erlang的一个特定版本,18.3,针对64位的CentOS 7操作系统(el7)的安装包。这个版本的Erlang包含了必要的组件和服务,使得它能够在CentOS 7上稳定...
esl-erlang-20.1-1.x86_64只适用于Centos7; 安装命令:rpm -ivh --force esl-erlang-20.1-1.x86_64.rpm
- 使用yum安装Erlang:`sudo yum install erlang-23.3.4.3-1.el7.x86_64.rpm` 2. **安装RabbitMQ**: - 下载RabbitMQ RPM包:`wget https://your_download_link/rabbitmq-server-3.8.17-1.el7.noarch.rpm` - ...
erlang-23.1-1.el8.x86_ ,erlang官网下载很慢,所以提供该下载链接。