- 节点互联起来,向外显示为1台服务器;
- 集群软件把内部结构掩藏起来;
- 磁盘是共享的;
- 每台机器使用相同的操作系统;
- 多个实例访问同一个数据库;
- 每个节点有一个实例;
- 数据库文件支持物理或逻辑访问;
- 数据的读写通过软件控制。
Oracle RAC和单个数据库服务器的区别
如下图,主要区别还是RAC是集群式数据库,通过集群软件管理。
Oracle RAC硬件架构
为了保证整个集群的可用性,Oracle RAC在部署的时候对硬件有比较多的要求。在 络层面,Oracle RAC总共有3个 络系统,分别是外部访问 络、内部私有 络和存储 络。
外部访问 络不用多说,相信大家都理解。内部私有 络则主要用来进行Oracle集群内部使用,包括数据传输、心跳和集群管理等。这部分 络在部署的时候要求双交换机和双物理链路,保证不会因为链路故障导致集群异常。后面是存储 络,存储 络用于RAC集群访问存储资源,这部分也是链路冗余的。
Oracle RAC软件架构
如下图,是个双节点RAC系统,Oracle RDBMS是数据库软件,Oracle Clusterware是集群软件。驱动主要是 卡,HBA卡,ASMLib等。
每个节点上必须是相同的操作系统,版本必须一致,包括补丁 等。如操作系统: RHEL AS 4.8 64bit,Linux内核版本: 2.6.9-89.EL。
仲裁磁盘用于集群中服务器的异常判断,集群中的节点通过定时更新仲裁磁盘中特定区域的数据标示自身的健康状态。其它节点可以根据该数据判断该节点是否宕机。
逻辑结构
下图是Oracle RAC的逻辑结构,后面将依次介绍里面的各个组件。
写Cache流程
负载均衡
用户像RAC发起各种请求的时候,负载均衡负责把任务平摊到不同机器上。
按用户分配
是从几个机器里面随机的挑一个吗O!那也太Low了,RAC会根据每个机器的状态动态分配任务。数据库运行时,PMON后台进程节点的负载信息,登记到Listener,1-10分钟更新一次。每个节点的Listener知道所有节点的负载情况,把客户端请求发给最闲的节点。
按服务分配
按用户分配有缺点,就是可能让Cache Fusion更忙了。因为RAC节点数据共享,大家通过Cache Fusion同步数据,RAC的性能很大程度上受限于Cache Fusion性能。要么让Private 络更牛,比如用昂贵的InfiniBand,另一种是减少Cache Fusion的流量,其实就是减少节点实例之间的依赖。而按用户分配的机制无益于后面的方案。
所以RAC支持根据服务分配节点,比如生产和销售用不同节点,自己的数据在自己的Cache里面,就不用访问别的节点了。性能得到提升。
三类集群
- 负载均衡集群:按一定算法把请求分配给不同成员;
- 高性能集群(HPC,High Performance Cluster):采用向量处理器等专用软硬件组成的牛逼机器,计算性能强悍,价格超贵,比如天河计算机;
- 高可靠性集群(HAC:High Available Cluster,Failover Cluster):可靠性非常好,硬件和软件的容错性很强,日常使用的数据库集群属于这类。
高可靠性集群
双机热备
平时有一个闲着待命,干活的挂了,就让候补的顶替。
举个例子:
老大老二合开一家店,平时老大主要卖包子,老二主要卖豆浆,老大有问题,老二就又卖包子,又卖豆浆,老二不行了,老大就又卖包子,又卖豆浆。
包子豆浆是数据,互相照应叫做心跳检测,顶替对方工作叫做failover(故障转移)。如果两个兄弟突然都瞎了聋了,不知道现在对方到底是否正在干活,都认为自己要顶对方的工作,这个叫做脑裂,然后需要第三者,比如他们的老爹来解决问题,这个叫做表决,或者让他们两个的媳妇过来拉走其中一个,这个叫做IO隔离。Oracle RAC就是这一类,性能最好,系统最复杂。
参考文章;
https://mp.weixin.qq.com/s/B7yEajOaJBrfedH22M2_RQ
https://mp.weixin.qq.com/s/DCFFN8T8TaojZz26b45vcw
文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树数据库组成表31863 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!