Oracle RAC CSS提供2种后台服务包括群组管理(Group Managment简称GM)和节点监控(Node Monitor简称NM),其中GM管理组(group)和锁(lock)服务。在集群中任意时刻总有一个节点会充当GM主控节点(master node)。集群中的其他节点串行地将GM请求发送到主控节点(master node),而master node将集群成员变更信息广播给集群中的其他节点。组成员关系(group membership)在每次发生集群重置(cluster reconfiguration)时发生同步。每一个节点独立地诠释集群成员变化信息。

而节点监控NM服务则负责通过skgxn(skgxn-libskgxn.a,提供节点监控的库)与其他厂商的集群软件保持节点信息的一致性。此外NM还提供对我们熟知的网络心跳(Network heartbeat)和磁盘心跳(Disk heartbeat)的维护以保证节点始终存活着。当集群成员没有正常Network heartbeat或Disk heartbeat时NM负责将成员踢出集群,被踢出集群的节点将发生节点重启(reboot)。

NM服务通过OCR中的记录(OCR中记录了Interconnect的信息)来了解其所需要监听和交互的端点,将心跳信息通过网络发送到其他集群成员。同时它也监控来自所有其他集群成员的网络心跳Network heartbeat,每一秒钟都会发生这样的网络心跳,若某个节点的网络心跳在misscount(by the way:10.2.0.1中Linux上默认misscount为60s,其他平台为30s,若使用了第三方vendor clusterware则为600s,但10.2.0.1中未引入disktimeout;10.2.0.4以后misscount为60s,disktimeout为200s;11.2以后misscount为30s:CRS-4678: Successful get misscount 30 for Cluster Synchronization Services,CRS-4678: Successful get disktimeout 200 for Cluster Synchronization Services)指定的秒数中都没有被收到的话,该节点被认为已经”死亡”了。NM还负责当其他节点加入或离开集群时初始化集群的重置(Initiates cluster reconfiguration)。

在解决脑裂的场景中,NM还会监控voting disk以了解其他的竞争子集群(subclusters)。关于子集群我们有必要介绍一下,试想我们的环境中存在大量的节点,以Oracle官方构建过的128个节点的环境为我们的想象空间,当网络故障发生时存在多种的可能性,一种可能性是全局的网络失败,即128个节点中每个节点都不能互相发生网络心跳,此时会产生多达128个的信息”孤岛”子集群。另一种可能性是局部的网络失败,128个节点中被分成多个部分,每个部分中包含多于一个的节点,这些部分就可以被称作子集群(subclusters)。当出现网络故障时子集群内部的多个节点仍能互相通信传输投票信息(vote mesg),但子集群或者孤岛节点之间已经无法通过常规的Interconnect网络交流了,这个时候NM Reconfiguration就需要用到voting disk投票磁盘。

因为NM要使用voting disk来解决因为网络故障造成的通信障碍,所以需要保证voting disk在任意时刻都可以被正常访问。在正常状态下,每个节点都会进行磁盘心跳活动,具体来说就是会到投票磁盘的某个块上写入disk心跳信息,这种活动每一秒钟都会发生,同时CSS还会每秒读取一种称作”kill block”的”赐死块”,当”kill block”的内容表示本节点被驱逐出集群时,CSS会主动重启节点。

为了保证以上的磁盘心跳和读取”kill block”的活动始终正常运作CSS要求保证至少(N/2+1)个投票磁盘要被节点正常访问,这样就保证了每2个节点间总是至少有一个投票磁盘是它们都可以正常访问的,在正常情况下(注意是风平浪静的正常情况)只要节点所能访问的在线voting disk多于无法访问的voting disk,该节点都能幸福地活下去,当无法访问的voting disk多于正常的voting disk时,Cluster Communication Service进程将失败并引起节点重启。所以有一种说法认为voting disk只要有2个足以保证冗余度就可以了,没有必要有3个或以上voting disk,这种说法是错误的。Oracle推荐集群中至少要有3个voting disks。

补充1:

Question:

有同学问那么voting disk  必须是奇数个呢?

Answer:

实际上我们仅仅是推荐使用奇数个vote disk ,而非必须是奇数个。10gR2中vote disk的数目上限是32个。

Question

我们可以使用2或4个vote disk吗?

Answer:

可以的。 但是2、4这样的数目在“至少(N/2+1)个投票磁盘要被节点正常访问”这一disk heartbeat的硬性算法下是不利的:

当我们使用2个vote disk 时,不能发生任意个vote disk的心跳失败

当我们使用3个vote disk 时,不能发生大于1个的vote disk心跳失败

当我们使用4个vote disk 时,不能发生大于1个的vote disk心跳失败 ,这和3个时的容错率是一样,但是因为我们有更多的vote disk,这会导致管理成本和引入的风险增长

当我们使用5个vote disk 时,不能发生大于2个的vote disk心跳失败

当我们使用6个vote disk 时,仍然不能发生大于2个的vote disk心跳失败, 同样的因为比5时多出一个 ,也会引入不合理的管理成本和风险

补充2:

Question:

若节点间的网络心跳正常,且节点所能正常心跳的vote disk 大于 不能正常访问的 ,如3个votedisk 时 恰巧有1个vote disk 的disk heartbeat 超时,此时Brain split 会发生吗?

Answer:

这种情况即不会触发Brain Split,也不会引发节点驱逐协议(eviction protocol)。 当单个或小于(N/2+1)个的voting disk心跳失败(disk heartbeat failure)时,这种心跳失败可能是由于短期内节点访问voting disk发生I/O error错误而引起的,此时css会立刻将这些失败的voting disk标记为OFFLINE。虽然有一定数量的voting disk OFFLINE了,但是我们仍有至少(N/2+1)个投票磁盘可用,这保证了eviction protocol不会被调用,所以没有节点会被reboot重启。紧接着node monitor模块的Disk ping Monitor Thread(DPMT-clssnmDiskPMT)会重复尝试访问这些失败的OFFLINE voting disk,若这些投票磁盘变得再次可I/O访问且经过验证其上的数据也没有讹误,那么css会再次将此voting disk标记为ONLINE;但是如果在45s( 这里的45s是基于misscount和 内部算法获得的) 内仍不能正常访问相关的voting disk,那么DMPT将在cssd.log中生成警告信息

连铸服务器异常,是因为该服务器的的节点出错(RAC下面介绍),节点出错主要为2个方面1;为裂脑现象 2节点失去半数以上vote disk连接导致节点出错;

1脑裂原因:

服务器无法连接,ORA报警:SELECT A.OWNER,  A.OBJECT_NAME,  B.SESSION_ID,

B.ORACLE_USERNAME,  B.OS_USER_NAME,  B.PROCESS,

B.LOCKED_MODE,  C.SID,

C.SERIAL#,  C.PROGRAM

FROM ALL_OBJECTS A,  V$LOCKED_OBJECT B,  SYS.GV_$SESSION C

WHERE ( A.OBJECT_ID = B.OBJECT_ID )  AND (B.PROCESS = C.PROCESS )

AND A.OBJECT_NAME='TAB_NAME';

然后杀掉这个线程。

alter system kill session 'sid,serial#' immediate;

该问题主要由另一个ORA-03135引起,主要原因为最近局里网络不稳定,如集群中任一主机PUBLIC端口断掉会导致与之绑定的VIP消失,造成假DOWN情况称为裂脑;

裂脑现象:.是由于集群中的节点之间无法正常通讯而导致的集群中出现的不一致的现象

如果出现这种情况,Oracle RAC会终止一个节点,来保证集群的一致性.裂脑产生后终止实例原则是根据裂脑现象残生的子集群进行投票选择终止的节点,投票规则节点数少终止,一致时node ID小的节点存活. 节点:(real application clusters简称RAC)简单说就是ORA提供一个简单应用平台(BBS性质一样吧),支持所有类型的应用系统,无论是事务处理型应用还是分析型应用。所有应用共享同样的服务器和存储资源。出现任何的服务器 或磁盘故障,系统会自动重新接管发生故障的功能。 集群:集群是一些相互独立的计算机,这些计算机作为一个整体对外提供服务.连铸为列.DB1和DB2和磁盘阵列构成集群(通过软件),想APP提供数据服务.

上诉可以看出裂脑现象可以导致服务起崩溃(线程被杀),导致裂脑主要是多个节点数据不同步,上诉网络不稳定为一个原因.

还有节点的buffer cache不一致,当需要CACHE同步操作时会出现裂脑现象,同时服务器无法启动,现象:双节点RAC数 据库,只能启动一个节点,无论哪个节点先启动,另外一个节点就无法正常启动了!,无法启动的表现就是可以mount,alter database open就hang在那不动,没有任何报错信息,只有后台进程QMNC进程无法启动,重新启动的信息,还有MMNL absent for 1474 secs; Foregrounds taking over的信息给出.

查看mysql是否脑裂_数据库脑裂相关推荐

  1. 如何查看mysql技术文档_数据库

    你的位置: 技术文档 -> 数据库 1.统计一个数据库中每有表的记录总数 可以通过执行下面的语句得到结果: select o.name,i.rows from sysobjects o,sysi ...

  2. 怎么查看mysql帮助文档_高效查看MySQL帮助文档的方法

    在mysql的使用过程中, 可能经常会遇到以下问题: 某个操作语法忘记了, 如何快速查找? 如何快速知道当前版本上某个字段类型的取值范围? 当前版本都支持哪些函数?希望有例子说明.. 当前版本是否支持 ...

  3. MySQL删除空值语句_数据库语句sql 删除空记录

    最简单删除SQL Server中所有数据的方法 原文:最简单删除SQL Server中所有数据的方法 最简单删除SQL Server中所有数据的方法   编写人:CC阿爸   2014-3-14 其实 ...

  4. 【MySQL 第10章_数据库的设计规范】

    第10章_数据库的设计规范 1. 为什么需要数据库设计 2.范式 2.1范式简介 2.2范式都包括哪些 2.3 键和相关属性的概念 2.4第一范式(1st NF) 2.5 第二范式(2nd NF) 2 ...

  5. mysql 保证事物完整性_数据库高并发请求,如何保证数据完整性?详解MySQL/InnoDB的加锁...

    本文是对MySQL/InnoDB中,乐观锁.悲观锁.共享锁.排它锁.行锁.表锁.死锁概念的理解,这些在面试中也经常遇到,如数据库高并发请求,如何保证数据完整性?今天我查阅资料进行了MySQL/Inno ...

  6. mysql打错了怎么办_数据库出错了怎么办?

    下面是网上收集的多种方法,大家可以测试下. (一) 昨晚浏览自己的Blog的时候,突然发现所有页面都无法显示,到后台查看的时候,发现一个"Table 'xxx' is marked as c ...

  7. 如何查看mysql备份的情况_MySQL数据库备份详解(示例代码)

    原文:MySQL数据库备份详解 对于任何数据库来说,备份都是非常重要的 数据库复制不能取代备份的作用 比如我们由于误操作,在主数据库上删除了一些数据,由于主从复制的时间很短,在发现时,从数据库上的数据 ...

  8. 在哪看mysql的端口号_数据库端口号在哪看

    如何查看mysql的端口号 -- 输入以下命令:SHOW VARIABLES WHERE VARIABLE_NAME='port'就可以查看当前连接的端口号,-- 例如:mysql> SHOW ...

  9. 查看mysql隔离解绑_事务-11831428-51CTO博客

    一.事务的简介 事务是指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败. 例如:A-->B转账,对应如下的两条SQL语句.update account set money  ...

最新文章

  1. ASP.NET MVC的View是如何呈现出来的[实例篇]
  2. ubuntu12.04 更新内核
  3. datename mysql_SQL日期时间函数总结(MSSQL)
  4. 滴滴CTO五轮面试真是太刺激了,Java高级工程师一二三四五面面经(已拿到offer)...
  5. 在不确定的世界,如何应对风险
  6. 景驰科技与联通实现全国首个5G网络下L4级无人驾驶应用
  7. 房东收电费1.5犯法吗_2021年结婚要彩礼犯法吗 2021年不能收彩礼是真的吗
  8. 测试开发大厂面试精选40题
  9. 如何让移动端出现横向滚动条_纯css实现移动端横向滑动列表overflow:atuo;隐藏滚动条...
  10. 移动硬盘插入提示需要格式化RAW_移动硬盘数据恢复
  11. 逻辑结构定义及其分类
  12. IDEA中@author 模板的设置
  13. 飞腾D20008核桌面处理器
  14. 央联众商APP告诉你怎样来“理”,然后才有那个“财”
  15. ORA-00054 锁表
  16. 朴素贝叶斯+Python3实现高斯朴素贝叶斯
  17. 嵌入式开发常用到的在线工具
  18. XML文件简介和解析
  19. 安装WIN7系统出现问题——安装程序无法创建新的系统分区,也无法定位现有的系统分区
  20. 张益唐111页零点猜想论文出炉!自称比孪生素数猜想意义更大,每天思考12小时被太太骂...

热门文章

  1. 【AndroidStudio】识别不到手机,设备管理器设备显示感叹号
  2. ppwjs之bootstrap文字排版:创建缩小字号元素
  3. 爬虫回响521_521:两次JS动态混淆反爬导致521响应码,如何破?
  4. 使用Pyecharts进行全国水质TDS地图可视化全过程10:地图的下钻,实现省、市、区县的联动
  5. 揭秘连环销售的秘密,打造客户的重复购买次数
  6. Elasticsearch(未完)
  7. zy是什么意思网络_der什么意思,你是个derder啥意思,网络语der是什么意思一起来看看...
  8. Tre树(字典树)数据结构详解(图解)及模板
  9. EasyRecovery for Mac(数据恢复软件)中文免费版
  10. 江苏大学计算机考研资料汇总