張洪進(jìn) 翁平
(聯(lián)勤保障部隊(duì)第九〇七醫(yī)院信息科 福建省南平市353000)
Oracle RAC集群的定義是從Oracle 9i逐漸演變而來的。它是高可用性規(guī)劃方案之一,是oracle數(shù)據(jù)庫支持網(wǎng)絡(luò)計(jì)算環(huán)境的核心技術(shù)。從RAC的產(chǎn)生到11G版本,集群運(yùn)行模式是傳統(tǒng)的標(biāo)準(zhǔn)集群模式。直到Oracle 12C,集群中引入了很多新特性,主要是Flex集群的新模式的誕生。在Flex集群中,增加很多新的功能:Flex Cluster、Flex ASM、Hub Node(中心節(jié)點(diǎn))、Leaf Node(葉節(jié)點(diǎn))等,下面我們就Flex集群模式新增特性和轉(zhuǎn)換操作進(jìn)行探討。
Oracle Real Application Cluster(RAC實(shí)時(shí)應(yīng)用集群)用來在集群環(huán)境下實(shí)現(xiàn)多機(jī)共享數(shù)據(jù)庫,以保證應(yīng)用的高可用性(HA),隨著節(jié)點(diǎn)數(shù)越高,系統(tǒng)可靠性就越高;同時(shí)可以自動(dòng)實(shí)現(xiàn)并行處理及負(fù)載均衡,在系統(tǒng)負(fù)載時(shí),RAC可以自動(dòng)在多個(gè)節(jié)點(diǎn)之間平衡負(fù)載,減輕單個(gè)實(shí)例的計(jì)算壓力,并能實(shí)現(xiàn)數(shù)據(jù)庫在故障時(shí)的容錯(cuò)和無斷點(diǎn)恢復(fù)。Rac基本架構(gòu)圖如圖1所示。
圖1:Rac基本架構(gòu)圖
Asm:Automatic Storage Management,是Oracle主推的一種面向Oracle的數(shù)據(jù)文件存儲(chǔ)機(jī)制,ASM和數(shù)據(jù)庫管理系統(tǒng)非常相似,數(shù)據(jù)庫管理員不用花精力去管理磁盤的讀寫性能問題,也不需要知道具體的文件名稱。Asm具有自動(dòng)調(diào)整讀寫負(fù)載、條帶化存儲(chǔ)、在線自動(dòng)負(fù)載均衡、自動(dòng)管理數(shù)據(jù)庫文件、數(shù)據(jù)冗余、支持各種Oracle數(shù)據(jù)文件等特點(diǎn)。ASM是由實(shí)例和數(shù)據(jù)文件組成,同數(shù)據(jù)庫一樣也可以通過sqlplus進(jìn)行維護(hù)。Asm實(shí)例由SGA和后臺(tái)進(jìn)程組成,Asm實(shí)例和數(shù)據(jù)庫實(shí)例的關(guān)系可以是一對(duì)一或一對(duì)多的關(guān)系,如果是一對(duì)多,最好為Asm安裝單獨(dú)的ASM_HOME。
數(shù)據(jù)庫實(shí)例使用Asm作為存儲(chǔ)管理時(shí),數(shù)據(jù)庫實(shí)例在啟動(dòng)時(shí)必須先從Asm實(shí)例獲得表空間中的區(qū)地圖(Extent Map),以后對(duì)磁盤組的操作記錄,Asm實(shí)例會(huì)把區(qū)地圖的調(diào)整信息發(fā)送給數(shù)據(jù)庫實(shí)例,并且由ASMB進(jìn)程保持這兩個(gè)實(shí)例間維護(hù)信息的同步和交換。所以我們?cè)趩?dòng)數(shù)據(jù)庫實(shí)例時(shí)必須先啟動(dòng)Asm實(shí)例,然后兩個(gè)實(shí)例同步運(yùn)行,反過來當(dāng)要關(guān)閉Asm實(shí)例時(shí)必須先數(shù)據(jù)庫實(shí)例關(guān)閉。如圖2所示,顯示了ASM的體系結(jié)構(gòu)。
圖2:ASM的基本架構(gòu)
在進(jìn)行oracle集群安裝時(shí),Oracle 12c同時(shí)提供兩種集群類型配置:標(biāo)準(zhǔn)集群和Flex集群。傳統(tǒng)標(biāo)準(zhǔn)集群中,集群中的所有節(jié)點(diǎn)都必須連接到兩個(gè)網(wǎng)絡(luò)上:公共網(wǎng)絡(luò)和私有網(wǎng)絡(luò);公共網(wǎng)絡(luò)用于客戶端應(yīng)用程序的連接,私有網(wǎng)絡(luò)用于節(jié)點(diǎn)間的通信和維護(hù)SGA的數(shù)據(jù)一致性。而Flex集群引進(jìn)了兩種新類型的節(jié)點(diǎn)——Hub節(jié)點(diǎn)(中心節(jié)點(diǎn))和Leaf節(jié)點(diǎn)(葉節(jié)點(diǎn))。Hub類型的節(jié)點(diǎn)和傳統(tǒng)標(biāo)準(zhǔn)節(jié)點(diǎn)類似,它們之間通過私網(wǎng)互連,必須連接共享存儲(chǔ),Hub節(jié)點(diǎn)可以直接存取集群注冊(cè)表(OCR)和表決磁盤(VD),在Flex集群中最多可配置64個(gè)Hub節(jié)點(diǎn),同時(shí)也可以配置很多Leaf節(jié)點(diǎn)。在Flex集群中,Leaf節(jié)點(diǎn)屬于輕節(jié)點(diǎn),彼此互不相連,也不能像Hub節(jié)點(diǎn)一樣訪問共享存儲(chǔ),每個(gè)Leaf節(jié)點(diǎn)不能脫離Hub節(jié)點(diǎn)而獨(dú)立存在,必須與Hub節(jié)點(diǎn)保持通信,并通過所連接的Hub節(jié)點(diǎn)連接到集群,應(yīng)用程序訪問數(shù)據(jù)庫也是通過Leaf節(jié)點(diǎn)。Flex集群架構(gòu)如圖3所示。
圖3:Flex集群架構(gòu)
12C之前的oracle版本,每個(gè)節(jié)點(diǎn)都必須獨(dú)立運(yùn)行本節(jié)點(diǎn)的ASM實(shí)例,且集群中所有節(jié)點(diǎn)的ASM實(shí)例必須處于運(yùn)行狀態(tài),當(dāng)ASM磁盤組mount成功后,節(jié)點(diǎn)的數(shù)據(jù)庫實(shí)例才能運(yùn)行。對(duì)于這種架構(gòu),會(huì)存在一定的單節(jié)點(diǎn)故障的風(fēng)險(xiǎn),如果ASM實(shí)例未運(yùn)行,那么數(shù)據(jù)庫實(shí)例不能啟動(dòng),這種架構(gòu)的數(shù)據(jù)庫實(shí)例和ASM實(shí)例必須是一對(duì)一綁定的關(guān)系。
12c開始,推出了Flex ASM,解除了這種限制,允許數(shù)據(jù)庫實(shí)例獨(dú)立于ASM實(shí)例存在,允許RAC節(jié)點(diǎn)訪問遠(yuǎn)程節(jié)點(diǎn)的ASM實(shí)例,而自身無需運(yùn)行ASM實(shí)例。一般在Flex集群,中心節(jié)點(diǎn)運(yùn)行ASM實(shí)例,葉節(jié)點(diǎn)遠(yuǎn)程訪問中心節(jié)點(diǎn)的ASM實(shí)例。當(dāng)中心節(jié)點(diǎn)的Asm實(shí)例故障時(shí),Oracle Clusterware可以通過一個(gè)替代ASM實(shí)例將故障節(jié)點(diǎn)的連接將無縫轉(zhuǎn)移到另一個(gè)成員節(jié)點(diǎn),中心節(jié)點(diǎn)數(shù)據(jù)庫實(shí)例可以通過訪問其他節(jié)點(diǎn)上的ASM實(shí)例,保證系統(tǒng)的正常運(yùn)行。由于存在當(dāng)節(jié)點(diǎn)ASM實(shí)例故障,集群將當(dāng)前ASM實(shí)例切換到其他節(jié)點(diǎn)上運(yùn)行的情況,因此,網(wǎng)絡(luò)類型由原來的公共網(wǎng)絡(luò)(public network)和私有網(wǎng)絡(luò)(private network)兩種,又新增了一種ASM網(wǎng)絡(luò),ASM網(wǎng)絡(luò)主要用于訪問其他節(jié)點(diǎn)的ASM實(shí)例,ASM網(wǎng)絡(luò)可與節(jié)點(diǎn)間的私有網(wǎng)絡(luò)共用,也可獨(dú)立安裝。
Flex Asm架構(gòu)如圖4所示。
圖4:Flex Asm架構(gòu)
如圖5所示,中心A節(jié)點(diǎn)通過訪問B節(jié)點(diǎn)的ASM實(shí)例,獲取metadata,然后通過獲取的metadata就能訪問到存儲(chǔ)了。訪問其他節(jié)點(diǎn)的ASM實(shí)例可以通過部署專用的ASM網(wǎng)絡(luò)或者使用節(jié)點(diǎn)內(nèi)部的私有網(wǎng)絡(luò),oracle官方是更推薦使用專用的ASM網(wǎng)絡(luò),提高系統(tǒng)的穩(wěn)定性和吞吐量。
圖5:ASM故障轉(zhuǎn)移
除了上述的新特性外,12c還提供了很多功能的增加,例如:PL/SQL開發(fā)性能增強(qiáng)、改善Defaults、擴(kuò)大了多種數(shù)據(jù)類型長度、TOP N的語句實(shí)現(xiàn)(在SELECT語句中可以指定前N條或前百分之多少的記錄)、行模式匹配(分析函數(shù)的功能,可以在行間進(jìn)行匹配判斷并進(jìn)行計(jì)算)、對(duì)多分區(qū)同時(shí)進(jìn)行維護(hù)操作、Adaptive執(zhí)行計(jì)劃(擁有學(xué)習(xí)功能的執(zhí)行計(jì)劃)、臨時(shí)UNDO(減少UNDO產(chǎn)生的數(shù)量;減少REDO產(chǎn)生的數(shù)量;在ACTIVE DATA GUARD上允許對(duì)臨時(shí)表進(jìn)行DML操作。)、數(shù)據(jù)優(yōu)化(可以自動(dòng)實(shí)現(xiàn)數(shù)據(jù)的在線壓縮和數(shù)據(jù)分級(jí))、應(yīng)用連續(xù)性(12c之前版本當(dāng)RAC的故障轉(zhuǎn)移只做到SESSION和SELECT層面,對(duì)還未結(jié)束的DML事務(wù)會(huì)自動(dòng)回滾,而Oracle Database 12c中Oracle終于支持整個(gè)事務(wù)故障轉(zhuǎn)移)、實(shí)現(xiàn)云數(shù)據(jù)庫的支持,提供云平臺(tái)管理,這是之前版本所沒有的功能、提出了數(shù)據(jù)庫容器(CDB)和可插拔數(shù)據(jù)庫(PDB)的概念,實(shí)現(xiàn)實(shí)例與數(shù)據(jù)庫是一對(duì)多的關(guān)系,功能更加齊全。
有兩種方法部署Flex集群:
(1)配置一個(gè)全新Flex集群。安裝過程中步驟三選擇集群配置的類型時(shí),選擇配置一個(gè)Flex Cluster選項(xiàng),然后,你必須在步驟六將節(jié)點(diǎn)分為Hub節(jié)點(diǎn)和Leaf節(jié)點(diǎn),針對(duì)每個(gè)節(jié)點(diǎn),選擇角色:Hub或Leaf。
(2)從一個(gè)標(biāo)準(zhǔn)集群更改為Flex集群,具體步驟如下:
①確認(rèn)當(dāng)前集群的集群模式
$ crsctl get cluster mode status
②確認(rèn)集群的GNS配置
$ srvctlconfiggns
③如果GNS沒有配置Flexed-VIP,則需要在root用戶底下創(chuàng)建一個(gè),注意要與集群公網(wǎng)在同一網(wǎng)段
# srvctl add gns -vipvip_name | ip_address
④啟動(dòng)GNS
# srvctl start gns
⑤使用Automatic Storage Management Configuration Assistant(ASMCA)將ASM存儲(chǔ)轉(zhuǎn)換為Flex Asm
⑥在root用戶模式下,配置當(dāng)前集群模式為Flex
# crsctl set cluster mode Flex
⑦在root用戶模式下,在其中一個(gè)節(jié)點(diǎn)執(zhí)行停止crs的命令
# crsctl stop crs
⑧在root用戶模式下,在其中一個(gè)節(jié)點(diǎn)執(zhí)行啟動(dòng)crs的命令,即重啟集群
# crsctl start crs -wait
綜合上文所述,Oracle 12C RAC相比之前的版本增加了很多強(qiáng)大的功能,通過對(duì)標(biāo)準(zhǔn)集群模式和Flex集群模式對(duì)比科學(xué)研究,讓我們可以更好的根據(jù)自己的需求選擇進(jìn)行系統(tǒng)的規(guī)劃和升級(jí)。