—— 解決方案 ——
|
Oracle rac高可用解決方案1. 產(chǎn)品介紹:Oracle Real Application Cluster (RAC,實(shí)時(shí)應(yīng)用集群)用來在集群環(huán)境下實(shí)現(xiàn)多機(jī)共享數(shù)據(jù)庫,以保證應(yīng)用的高可用性;同時(shí)可以自動(dòng)實(shí)現(xiàn)并行處理及負(fù)載均衡,并能實(shí)現(xiàn)數(shù)據(jù)庫在故障時(shí)的容錯(cuò)和無斷點(diǎn)恢復(fù)。它是oracle數(shù)據(jù)庫支持網(wǎng)絡(luò)計(jì)算環(huán)境的核心技術(shù)。它是oracle數(shù)據(jù)庫支持網(wǎng)絡(luò)計(jì)算環(huán)境的核心技術(shù)。 2. RAC 數(shù)據(jù)庫和單實(shí)例數(shù)據(jù)庫的區(qū)別 為了讓 RAC 中的所有實(shí)例能夠訪問數(shù)據(jù)庫,所有的 datafiles、control files、PFILE/Spfile 和 redo log files 必須保存在共享磁盤上,并且要都能被所有節(jié)點(diǎn)同時(shí)訪問,就涉及到裸設(shè)備和集群文件系統(tǒng)等。RAC database 在結(jié)構(gòu)上與單實(shí)例的不同之處:至少為每個(gè)實(shí)例多配置一個(gè) redo 線程,比如:兩個(gè)實(shí)例組成的集群至少要 4 個(gè) redo log group。每個(gè)實(shí)例兩個(gè) redo group。另外要為每一個(gè)實(shí)例準(zhǔn)備一個(gè) UNDO 表空間。 (1)redo 和 undo,每個(gè)實(shí)例在做數(shù)據(jù)庫的修改時(shí)誰用誰的 redo 和 undo 段,各自鎖定自己修改的數(shù)據(jù),把不同實(shí)例的操作相對(duì)的獨(dú)立開就避免了數(shù)據(jù)不一致。后面就要考慮備份或者恢復(fù)時(shí) redo log 和歸檔日志在這種情況下的特殊考慮了。 (2)內(nèi)存和進(jìn)程各個(gè)節(jié)點(diǎn)的實(shí)例都有自己的內(nèi)存結(jié)構(gòu)和進(jìn)程結(jié)構(gòu).各節(jié)點(diǎn)之間結(jié)構(gòu)是基本相同的.通過 Cache Fusion(緩存融合)技術(shù),RAC 在各個(gè)節(jié)點(diǎn)之間同步 SGA 中的緩存信息達(dá)到提高訪問速度的效果也保證了一致性。 2.原理架構(gòu)圖: 3.oracle rac硬件設(shè)備 4.Rac體系結(jié)構(gòu)圖 集群管理器(Cluster Manager)在集群系統(tǒng)中對(duì)其他各個(gè)模塊進(jìn)行整合,通過高速的內(nèi)連接來提供群集節(jié)點(diǎn)之間的通信。各節(jié)點(diǎn)之間內(nèi)連接使用心跳線互聯(lián),心跳線上的信息功能確定群集邏輯上的節(jié)點(diǎn)成員信息和節(jié)點(diǎn)更新情況,以及節(jié)點(diǎn)在某個(gè)時(shí)間點(diǎn)的運(yùn)行狀態(tài),保證群集系統(tǒng)正常運(yùn)行。通信層管理節(jié)點(diǎn)之間的通信。它的職責(zé)是配置,互聯(lián)群集中節(jié)點(diǎn)信息,在群集管理器中使用由心跳機(jī)制產(chǎn)生的信息,由通信層負(fù)責(zé)傳輸,確保信息的正確到達(dá)。還有一些群集監(jiān)視進(jìn)程不斷驗(yàn)證系統(tǒng)的不同領(lǐng)域運(yùn)行狀況。例如,心跳監(jiān)測(cè)不斷驗(yàn)證的心跳機(jī)制的運(yùn)作是否良好。在一個(gè)應(yīng)用環(huán)境當(dāng)中,所有的服務(wù)器使用和管理同一個(gè)數(shù)據(jù)庫,目的是分散每一臺(tái)服務(wù)器的工作量。硬件上至少需要兩臺(tái)以上的服務(wù)器,而且還需要一個(gè)共享存儲(chǔ)設(shè)備;同時(shí)還需要兩類軟件,一類是集群軟件,另外一類就是 Oracle 數(shù)據(jù)庫中的 RAC 組件。同時(shí)所有服務(wù)器上的 OS 都應(yīng)該是同一類 OS,根據(jù)負(fù)載均衡的配置策略,當(dāng)一個(gè)客戶端發(fā)送請(qǐng)求到某一臺(tái)服務(wù)的 listener 后,這臺(tái)服務(wù)器根據(jù)負(fù)載均衡策略,會(huì)把請(qǐng)求發(fā)送給本機(jī)的 RAC組件處理,也可能會(huì)發(fā)送給另外一臺(tái)服務(wù)器的 RAC 組件處理,處理完請(qǐng)求后,RAC 會(huì)通過群集軟件來訪問共享存儲(chǔ)設(shè)備。邏輯結(jié)構(gòu)上看,每一個(gè)參加群集的節(jié)點(diǎn)有一個(gè)獨(dú)立的實(shí)例,這些實(shí)例訪問同一個(gè)數(shù)據(jù)庫。節(jié)點(diǎn)之間通過集群軟件的通信層(Communication Layer)來進(jìn)行通信。同時(shí)為了減少 I/O 的消耗,存在一個(gè)全局緩存服務(wù),因此每一個(gè)數(shù)據(jù)庫的實(shí)例,都保留了一份相同的數(shù)據(jù)庫 cache。 |