加入收藏 | 设为首页 | 会员中心 | 我要投稿 520站长网 (https://www.520shu.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

单点数据库VS RAC

发布时间:2022-10-15 22:01:02 所属栏目:MySql教程 来源:互联网
导读: 单点数据库VS RAC

单节点数据库,如果实例宕机了,如果一个业务链接在实例上面,那么这个业务就中断了。这个时候系统就不具有可用性了,那么这个时候单节点的可用性是很差的。
对于RAC来说

单点数据库VS RAC

数据库实例_库卡加外部轴实例_数据加密系统实例

单节点数据库,如果实例宕机了,如果一个业务链接在实例上面,那么这个业务就中断了。这个时候系统就不具有可用性了,那么这个时候单节点的可用性是很差的。

对于RAC来说,和单实例一样,还是一份数据文件,都是相同的存储上面放着oracle的文件,但是是由三个实例共用同一份数据文件。这样的好处是在三个实例之间做了冗余,在上面三个实例当中任意两个坏了业务都可以链接到剩下的一个实例,都可以正常的工作。RAC提供了在实例级别的冗余。

RAC不能够解决在数据的安全,尽管有多个实例,但是只有一份数据文件,这样只要数据文件损坏了,那么整个数据库就损坏了。

什么是RAC

数据库实例_库卡加外部轴实例_数据加密系统实例

一般每个实例都放在不同的服务器上面,这样可以起到冗余作用。所有的数据库文件都放在共享存储上面,但是还有一些文件放在每个实例自己的本地的磁盘上面,比如参数文件,每一个实例都可以有自己的参数文件,这个参数文件既可以放在本地也可以放在共享存储上面,多个实例都使用同一个参数文件。

在RAC里面,最重要的就是实例和实例之间的交互,即使是分离的实例,但是读取的数据是相同的,RAC不是分布式的系统,因为它只有一个存储,分布式系统是指数据发布在不同的数据库上面,然后通过中间件来协调做查询。RAC还是一台数据库,多个实例。

数据库实例_数据加密系统实例_库卡加外部轴实例

对于RAC来说至少有两套物理上不同的网络,私有网络是专门用来实例之间的数据交互。如果私有网络,所有的数据都在一个网络下面,那么那么就会对数据造成影响,严重的影响RAC的性能了。实例之间数据之间传递使用私有网络和对外服务提供的网络之间是物理分开的。所以RAC至少有两套网络,一个是实例之间的数据的传递,另外一个是公有网络数据库实例,是对外提供服务的,外面的业务是提供公有网络的IP链接到数据库的。

RAC的特点

除了具有普通的数据库特性外:

每一个节点的instance都有自己的SGA

每一个节点的instance都有自己的background process

每一个节点的instance都有自己的redo logs

每一个节点的instance都有自己的undo表空间

每一个节点的实例都有自己的SGA,但是之间在SGA里面的数据块都是需要相互传递的。

每一个节点都有自己的redo,但redo不是共用的。虽然redo是放在共享磁盘上面,但是每个实例都有自己的redo,各有各的。当实例2坏了,实例1做恢复的时候可以通过实例2的redo信息来进行恢复。

每个实例都要处理自己的一套事务,所以需要使用自己的UNDO。

RAC如何容错的

库卡加外部轴实例_数据加密系统实例_数据库实例

当节点1坏了,不仅仅只是将业务切换到节点2,这个时候还要处理节点1坏了遗留下来的问题。主要是一些提交和未提交的事务。比如实例1坏了,实例2就要从实例1的redo里面读最后一次checkpoint之后的信息,就是实例1最后将所有的数据写到磁盘之后产生的所有的redo应用,该回滚的回滚,该恢复的恢复。即现将以提交和未提交的事务产生的redo都先应用,因为是最后一次checkpoint之后的信息,之前的信息是已经写到磁盘上面了,所谓的恢复是将未写到磁盘上面的信息进行恢复。(虽然实例坏了,但是实例的redo并没有坏,放置在共享存储上面,它的redo还是允许其他实例访问的)实例2读取实例1的redo,然后全部应用一遍,之后再回滚未提交的事务修改的数据块,这个有点像实例的恢复。

rac后台进程

数据库实例_库卡加外部轴实例_数据加密系统实例

RAC实例多出的进程

LMON--Lock Monitor Processes

监控整个集群状况,维护GCS的内存结构。

处理非正常终止的进程和实例。

当实例离开和加入集群时,锁和资源的重新配置。

管理全局的锁和资源。

监控全局的锁资源,处理死锁和阻塞。

也被称为Global enqueue service monitor

LMS-- Lock Monitor Services

LMS进程主要用来管理集群内数据块的访问,并在不同实例的BUFFER CACHE

中传输块镜像。

当在某个数据块上发生一致性读时,LMS负责回滚该数据块,并将它copy到请求的实例上。

每个RAC节点至少有2个LMS进程。 也称作 GCS (Global Cache Services) processes.

LCK--Lock Process

LCK进程主要用来管理实例间资源请求和跨实例调用操作,调用操作包括数据字典等对象的访问;并处理非CACEH FUSION的CHACE资源请求(例如:DICTIONARY CACHE或row cache的请求)由于LMS进程负责主要的锁管理功能,所以每个实例只有一个LCK进程。

可以看到有这么多的进程都和锁有关系,归根结底就是一个数据块从一个实例到另外一个实例,维护一致性的依据就是锁。只有通过锁才可以维护数据块在两个实例之间的一致性。

LMD--Lock Monitor Daemon Process

LMD进程主要管理对全局队列和资源的访问,并更新相应队列的状态,处理来

自于其他实例的资源请求。

每一个全局队列的当前状态存储在相应的实例共享内存中,该状态表明该实例

具有相应的权利使用该资源。

一个实例(master)的共享内存中存在一个特殊的队列,该队列纪录来自其他远

程实例的资源请求,当远程实例的LMD进程发出一个资源请求时,该请求指向

master实例的LMD,当master实例的LMD进程受到该请求后,在共享内存中的

特殊队列中监测该资源是否无效,如果有效则LMD进程更新该资源对列的状态

,并通知请求资源的LMD进程该资源队列可以使用了,如果资源队列正在被其

他实例使用或者当前无效,则LMD进程通知正在使用中的实例的LMD进程应该

释放该资源,等资源释放变得有效时,MASTER实例的LMD进程更新该资源队

列的状态并通知请求资源实例的LMD进程该资源队列可以使用了。

DIAG (Diagnostic Daemon)

Oracle10g新的后台进程。

例行对实例的健康情况进行监控,同时也监控实例是否挂起或者出现死锁。

收集实例和进程出错时的关键诊断信息。

这个进程会更新alert日志文件,写入一些重要告警信息。

RAC自己的进程了

RAC的服务进程

独立的服务CRS

CRS- 集群资源服务

CSS - 集群同步服务

EVMD 事件管理服务

(编辑:520站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!