当前位置: 首页 > 科技观察

详细解释什么是OracleRAC脑裂

时间:2023-03-18 18:58:31 科技观察

什么是脑裂?裂脑通常用于描述集群中的两个或多个节点彼此失去连接但随后继续彼此独立运行(包括对逻辑或物理资源的访问)的场景,从而错误地假设其他进程(es)不再运作或使用上述资源。简单来说,“裂脑”意味着有2个或更多不同的节点集或“队列”,两个队列之间没有通信。例如:假设有3个节点存在以下情况。1.节点1、2可以相互通信。2.但是1和2不能和3对话,反之亦然。然后有两个队列:{1,2}和??{3}。为什么会发生脑裂脑裂事件后的最大风险是可能会破坏系统的状态。腐败的三个典型原因:1.在裂脑事件之前用于合作的进程独立修改相同的逻辑共享状态,导致系统状态视图冲突。这通常被称为“多主机问题”。2.在裂脑事件后接受新请求,然后在可能损坏的系统状态上执行(因此可能进一步损坏系统状态)。3.当分布式系统的进程“重新加入”在一起时,它们可能对系统状态或资源所有权有冲突的看法。在冲突解决过程中,信息可能会丢失或损坏。简单来说,在裂脑情况下,感觉有两个(或更多)独立集群在同一个共享存储上工作。这有可能导致数据损坏。集群件如何解决“脑裂”的情况?如果发生脑裂,投票盘将用于确定哪些节点存活以及哪些节点将被驱逐。共同的投票结果将是:集群节点较多的组(队列)存活如果每个组中可用的节点数相同,则节点成员较少的组(队列)存活。已经进行了一些改进,以确保低负载的节点在高系统负载导致的驱逐事件中存活下来。通常,当发生裂脑时,您会在ocssd.log中看到类似于以下内容的消息:[CSSD]2011-01-1223:23:08.090[1262557536]>TRACE:clssnmCheckDskInfo:Checkingdiskinfo...[CSSD]2015-01-1223:23:08.090[1262557536]>错误:clssnmCheckDskInfo:中止本地节点以避免裂脑。[CSSD]2015-01-1223:23:08.090[1262557536]>错误::我的节点(2),Leader(2),Size(1)VSNode(1),Leader(1),Size(2)[CSSD]2015-01-1223:23:08.090[1262557536]>错误:###################################[CSSD]2015-01-1223:23:08.090[1262557536]>错误:clssscExit:CSSDaborting####################################以上消息表示来自节点的通信2到节点1不工作,所以节点2只能看到1个节点,但节点1工作正常,它可以看到集群中的两个节点。为避免脑裂,节点2中止自身。为确保数据一致性,RAC数据库的每个实例都需要与其他每个实例保持心跳。心跳由LMON、LMD、LMS和LCK等后台进程维护。这些进程中的任何一个遇到IPC发送超时都将导致通信重新配置和实例驱逐以避免裂脑。控制文件类似于集群件层中的表决磁盘,用于确定哪些实例存活以及哪些实例被逐出。投票结果与集群件投票结果类似。结果,将驱逐1个或多个实例。实例报警日志中的常见消息类似:实例1的警报日志:--------MonDec0719:43:052011IPCSendtimeoutdetected.Sender:ospid26318Receiver:inst2binc554466600ospid29940IPCSend对于来自opid20MonDec0719:43:072011的消息类型65521的2.0inc8超时2011Communications重新配置:instance_number2MonDec0719:43:072011Trace转储正在执行id=[cdmp_20091207194307]正在等待集群软件裂脑解决方案MonDec0719Mon:53:072011Evictinginstance2fromclusterWaitingforinstancestoleave:2...alertlogofinstance2:--------MonDec0719:42:182011IPC检测到发送超时。接收器ospid29940MonDec0719:42:182011Errorsinfile/u01/app/oracle/diag/rdbms/bd/BD2/trace/BD2_lmd0_29940.trc:Tracedumpingisperformingid=[cdmp_20091207194307]MonDec0719:42:202011等待集群软件裂脑解决方案MonDec0719:44:452011ERROR:LMS0(ospid:29942)检测到实例1MonDec0719:44:512011ERROR:LMD0的空闲连接(ospid:29940)检测到与实例1MonDec0719:45:382011的空闲连接/diag/rdbms/bd/BD2/trace/PVBD2_lmon_29938.trc(incident=90153):ORA-29740:被成员0驱逐,组化身10事件详情在:/u01/app/oracle/diag/rdbms/bd/BD2/incident/incdir_90153/BD2_lmon_29938_i90153.trc在上面的例子中,instance2LMD0(pid29940)是IPC发送超时的接收者