搜尋
首頁資料庫OracleOracle經典技巧RAC詳解

這篇文章為大家帶來了關於Oracle的相關知識,其中主要介紹了RAC的相關問題,Oracle Real Application Cluster用來在叢集環境下實現多機共享資料庫,以保證應用程式的高可用性,希望對大家有幫助。

Oracle經典技巧RAC詳解

推薦教學:《Oracle教學

應對業務量的不斷增加場景通常有兩個大方向,一種是縱向擴展,也就是增加單一伺服器的CPU運算能力、記憶體容量和磁碟承載能力等;另一種是橫向擴展,也就是透過增加伺服器的數量來增加處理能力。前者存在業務中斷和擴展上限等諸多的問題,特別是互聯網業務的迅猛發展,單台伺服器幾乎無法滿足業務負載要求,因此目前比較流行的方式橫向擴展的方式。

什麼是Oracle RAC?

Oracle Real Application Cluster (RAC,即時應用叢集)用來在叢集環境下實現多機共享資料庫,以確保應用程式的高可用性;同時可以自動實現並行處理及負載平衡,並能實現資料庫在​​故障時的容錯和無斷點復原。它是oracle資料庫支援網路運算環境的核心技術。

共享儲存多活集群

在該架構中叢集中多個節點運行的是同一個資料庫實例,資料完全一致,且使用者層面無論從哪個節點訪問,獲取到的資料都是相同的。下圖是Oracle RAC的示意圖,透過3個節點構成一個集群,它們共享資料。
Oracle經典技巧RAC詳解
RAC 的特點可總結如下:

  • 節點互聯起來,向外顯示為1台伺服器;
  • 叢集軟體把內部結構遮蔽起來;
  • 磁碟是共享的;
  • 每台機器使用相同的作業系統;
  • 多個實例存取同一個資料庫;
  • 每個節點有一個實例;
  • 資料庫檔案支援物理或邏輯存取;
  • 資料的讀寫透過軟體控制。

Oracle經典技巧RAC詳解
Oracle經典技巧RAC詳解

Oracle RAC和單一資料庫伺服器的差異

如下圖,主要差異還是RAC是叢集式資料庫,透過集群軟體管理。
Oracle經典技巧RAC詳解
Oracle經典技巧RAC詳解

Oracle RAC硬體架構

為了確保整個叢集的可用性,Oracle RAC在部署的時候對硬體有比較多的要求。在網路層面,Oracle RAC總共有3個網路系統,分別是外部存取網路、內部私有網路和儲存網路。

外部存取網路不用多說,相信大家都理解。內部私有網路則主要用來進行Oracle叢集內部使用,包括資料傳輸、心跳和叢集管理等。這部分網路在部署的時候要求雙交換器和雙實體鏈路,保證不會因為鏈路故障導致群集異常。後面是儲存網絡,儲存網路用於RAC叢集存取儲存資源,這部分也是鏈路冗餘的。
Oracle經典技巧RAC詳解

再例如下圖,為一個兩節點RAC系統,可以看出,從主機到交換機,都做了冗餘,無論哪台設備出了故障,業務不會受影響。共享儲存是自帶RAID冗餘的。
Oracle經典技巧RAC詳解
其中,主機叫做節點(Node),它們要有相同的CPU、內存等配置,每台至少兩個網卡,訪問內外網,還有HBA卡連接共享存儲,但更多是透過FC交換器連接到FC儲存陣列。共享存儲是RAC架構中的核心,絕大部分的文件都在共享存儲,很多功能都是為了共享存儲的安全性而開發。一般是光纖透過FC介面連接,運行SCSI協定。

Oracle RAC軟體架構

如下圖,是個雙節點RAC系統,Oracle RDBMS是資料庫軟體,Oracle Clusterware是叢集軟體。驅動主要是網卡,HBA卡,ASMLib等。

每個節點上必須是相同的作業系統,版本必須一致,包括修補程式號碼等。如作業系統: RHEL AS 4.8 64bit,Linux核心版本: 2.6.9-89.EL。
Oracle經典技巧RAC詳解
為了更深入的理解Oracle RAC我們來看看其內部軟體模組的組成。整個資料庫層面沒有太多差異,這裡面主要多出如下內容:虛擬IP(VIP)、ASM、Clusterware和仲裁磁碟。這些新組件配合起來完成了Oracle的多活集群功能。

虛擬IP是應用存取資料庫的入口,該IP並非與任何伺服器綁定,而是可以在叢集的任意伺服器間漂移。由於具有這個特性,當出現伺服器宕機等情況時,資料庫叢集可以保證透過相同的介面對外提供服務。
Oracle經典技巧RAC詳解
ASM與Clusterware實現了叢集管理功能,其中ASM實現對磁碟的管理,避免同時存取磁碟導致資料不一致的風險,而Clusterware則用於管理Oracle叢集的軟體進程及資源調度。

仲裁磁碟用於叢集中伺服器的異常判斷,叢集中的節點透過定時更新仲裁磁碟中特定區域的資料標示自身的健康狀態。其它節點可以根據該資料判斷該節點是否宕機。

邏輯結構

下圖是Oracle RAC的邏輯結構,後面將依序介紹裡面的各個元件。
Oracle經典技巧RAC詳解

DLM:並發控制

每個節點都有對等的權利存取共享儲存的數據,Oracle RAC使用Distribute Lock Management( DLM)進行多個節點間並發存取的控制。分散式鎖定管理器負責協調節點間對共享資源的競爭,節點存取資料時,先透過DLM申請,確認不會和其他節點衝突時才能使用。

OCR:健忘症

健忘症:如果每個節點都有一份叢集配置訊息,那麼如果修改配置後沒有同步就會出錯。

所以,叢集只能有一個配置訊息,所有節點共享。 Oracle RAC使用OCR Disk檔案解決健忘症。

OCR Disk只有Master節點才能修改,每個節點都有一份Copy,在OCR Cache記憶體中。節點要修改OCR Disk時,請請求Master節點,該節點上OCR程序更新本地和其他節點OCR Cache內容。 OCR Disk每隔幾個小時定期備份。

Voting Disk:腦裂

腦裂:集群中節點之間透過心跳偵測來知道對方是不是好的,如果心跳出了問題,節點雙方都認為對方出錯了,就會要求獨享數據,這樣就會破壞數據的一致性。

Voting Disk用來記錄節點間成員的狀態,出現腦裂的時候,選擇票數高的取得控制權,踢出其他節點。

IO隔離:踢出去的節點,不能再讓它存取數據,所以要做IO隔離。 Oracle RAC的機制就是重啟故障節點。

Cache Fusion Lock

資料庫檔案是共用的,Cache Fusion Lock是在叢集層級之外解決儲存共用、並發存取控制。

四種網路

1.Public網路:用Public IP,對外提供資料查詢、資料庫維護、伺服器維護。

2.Virtual網路:用Virtual IP,提供應用程式連接,應用程式使用該IP。

TCP/IP協定中,TCP Header包含來源和目標端口,IP header包含來源和目標IP,應用層的資料庫監聽記錄IP和端口,在TCP逾時時知道資料庫或監聽出了問題。 TCP/IP協定棧逾時時間由OS決定,每個OS定義不一樣。為了縮短捕獲錯誤的時間,Oracle RAC使用了VIP。 Virtual IP是浮動的,並不與實體網卡綁定,某個節點故障,則VIP移到好的節點上,但好節點的監聽裡找不到該VIP,應用程式會立刻發現問題,轉而向其他VIP發送連線請求。

3.Private網路:使用Private IP,用於RAC心跳偵測和Cache Fusion Lock,速度要求很高。

4.儲存網路:儲存設備、HBA卡、FC網路組成。

Oracle Clusterware

單機的時候只要OS就可以處理上層請求,但是多機的時候,集群管理軟體Oracle Clusterware會在OS核心之前截獲對其他節點的請求,和其他節點的Clusterware通訊完成請求。

應用層:RDBMS

應用層由若干CRS Resource組成,每個resource是若干個行程組成的完整服務。 LMON(Lock Monitor)監控CRS Resource,異常時進行重新啟動、切換等,確保Oracle RAC服務的高可用性。

Cache Fusion

Cache Fusion從字面就可以理解-快取融合,其實就是把各個節點的快取統一管理起來,避免了每次讀都是操作磁碟,加速IO效能。因為Private網路速度很快,比讀磁碟快。從不同位置讀取資料塊的時間:

  • 本機Cache:0.01 ms
  • 網路存取其他節點Cache:2.5 ms
  • 磁碟:14 ms。但現在有了儲存端的SSD或是全快閃陣列後,延遲就在1 ms左右了。所以有了全快閃陣列後,Cache Fusion估計就沒有意義了。

Cache Fusion透過GCS(Global Cache Service)管理,就是把大家的Cache看成是一個大Cache。

讀Cache流程

Oracle經典技巧RAC詳解

寫Cache流程

Oracle經典技巧RAC詳解

寫入磁碟流程

Oracle經典技巧RAC詳解

負載平衡

使用者像RAC發起各種請求的時候,負載平衡負責把任務平攤到不同機器上。

依照使用者分配

是從幾個機器裡面隨機的挑一個嗎? NO!那也太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):可靠性非常好,硬體和軟體的容錯性很強,日常使用的資料庫叢集屬於這類。

高可靠性集群

雙機熱備

平時有一個閒著待命,幹活的掛了,就讓候補的頂替。
Oracle經典技巧RAC詳解
雙機互備

平常兩台都乾自己的活,但是要預留一部分資源,因為有一個掛了,另一個就得乾兩個人的活。
Oracle經典技巧RAC詳解
雙機雙工

舉例:

老大老二合開一家店,平時老大主要賣包子,老二主要賣豆漿,老大有問題,老二就又賣包子,又賣豆漿,老二不行了,老大就又賣包子,又賣豆漿。

包子豆漿是數據,互相照應叫做心跳檢測,頂替對方工作叫做failover(故障轉移)。如果兩個兄弟突然都瞎了聾了,不知道現在對方到底是否正在幹活,都認為自己要頂對方的工作,這個叫做腦裂,然後需要第三者,比如他們的老爹來解決問題,這個叫做表決,或是讓他們兩個的媳婦過來拉走其中一個,這個叫做IO隔離。 Oracle RAC就是這一類,效能最好,系統最複雜。

Oracle經典技巧RAC詳解

推薦教學:《Oracle學習教學

以上是Oracle經典技巧RAC詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:CSDN。如有侵權,請聯絡admin@php.cn刪除
oracle怎么查询所有索引oracle怎么查询所有索引May 13, 2022 pm 05:23 PM

方法:1、利用“select*from user_indexes where table_name=表名”语句查询表中索引;2、利用“select*from all_indexes where table_name=表名”语句查询所有索引。

什么是oracle asm什么是oracle asmApr 18, 2022 pm 04:16 PM

oracle asm指的是“自动存储管理”,是一种卷管理器,可自动管理磁盘组并提供有效的数据冗余功能;它是做为单独的Oracle实例实施和部署。asm的优势:1、配置简单、可最大化推动数据库合并的存储资源利用;2、支持BIGFILE文件等。

oracle全角怎么转半角oracle全角怎么转半角May 13, 2022 pm 03:21 PM

在oracle中,可以利用“TO_SINGLE_BYTE(String)”将全角转换为半角;“TO_SINGLE_BYTE”函数可以将参数中所有多字节字符都替换为等价的单字节字符,只有当数据库字符集同时包含多字节和单字节字符的时候有效。

Oracle怎么查询端口号Oracle怎么查询端口号May 13, 2022 am 10:10 AM

在Oracle中,可利用lsnrctl命令查询端口号,该命令是Oracle的监听命令;在启动、关闭或重启oracle监听器之前可使用该命令检查oracle监听器的状态,语法为“lsnrctl status”,结果PORT后的内容就是端口号。

oracle怎么删除sequenceoracle怎么删除sequenceMay 13, 2022 pm 03:35 PM

在oracle中,可以利用“drop sequence sequence名”来删除sequence;sequence是自动增加数字序列的意思,也就是序列号,序列号自动增加不能重置,因此需要利用drop sequence语句来删除序列。

oracle怎么查询数据类型oracle怎么查询数据类型May 13, 2022 pm 04:19 PM

在oracle中,可以利用“select ... From all_tab_columns where table_name=upper('表名') AND owner=upper('数据库登录用户名');”语句查询数据库表的数据类型。

oracle查询怎么不区分大小写oracle查询怎么不区分大小写May 10, 2022 pm 05:45 PM

方法:1、利用“LOWER(字段值)”将字段转为小写,或者利用“UPPER(字段值)”将字段转为大写;2、利用“REGEXP_LIKE(字符串,正则表达式,'i')”,当参数设置为“i”时,说明进行匹配不区分大小写。

Oracle怎么修改sessionOracle怎么修改sessionMay 13, 2022 pm 05:06 PM

方法:1、利用“alter system set sessions=修改后的数值 scope=spfile”语句修改session参数;2、修改参数之后利用“shutdown immediate – startup”语句重启服务器即可生效。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。