張瑩 張瀟予
摘要:基于大數(shù)據(jù)環(huán)境,對Oracle 數(shù)據(jù)庫RAC集群模式的體系結(jié)構(gòu)和原理進(jìn)行了介紹,并舉出了具體的實(shí)用實(shí)例。RAC集群模式的高可用性、負(fù)載均衡和高性能的特性,是未來信息技術(shù)的發(fā)展趨勢,也是人才培養(yǎng)的方向之一。
關(guān)鍵詞:大數(shù)據(jù);RAC集群;高可用性;緩存融合;高性能
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)09-0027-04
1 大數(shù)據(jù)的背景簡介
隨著數(shù)據(jù)庫以及網(wǎng)絡(luò)信息技術(shù)的飛速發(fā)展,標(biāo)志著大數(shù)據(jù)時代的到來。信息技術(shù)與人們的工作、生活緊密相連,各種網(wǎng)絡(luò)社交網(wǎng)站,軟件以及智能設(shè)備每時每刻都在產(chǎn)生著不同形式的大量數(shù)據(jù),由此產(chǎn)生了超越以往任何時代的巨量數(shù)據(jù)。海量數(shù)據(jù)成為資源共享和社會進(jìn)步基礎(chǔ)的同時,也存在各種隱患。大數(shù)據(jù)技術(shù)的目標(biāo)之一就是處理批量數(shù)據(jù),讓數(shù)據(jù)具有更高的可靠性和可用性,篩選出真正有利用有價值的信息,從而形成變革之力。從國家安全部門、互聯(lián)網(wǎng)創(chuàng)業(yè)公司到金融機(jī)構(gòu),無處不需要大數(shù)據(jù)項(xiàng)目來做創(chuàng)新驅(qū)動。大數(shù)據(jù)時代也催生了大量相關(guān)人才的缺口。
2 Oracle RAC集群體系結(jié)構(gòu)簡介
哈佛大學(xué)社會學(xué)教授加里·金說過:“這是一場革命,龐大的數(shù)據(jù)資源使得各個領(lǐng)域開始了量化進(jìn)程,無論學(xué)術(shù)界、商界還是政府,所有領(lǐng)域都將開始這種進(jìn)程?!?隨著數(shù)據(jù)處理能力的增強(qiáng),數(shù)據(jù)量已經(jīng)從TB(1024GB=1TB)級別躍升到PB(1024TB=1PB)、 EB(1024PB=1EB)乃至ZB(1024EB=1ZB)級別。
巨量數(shù)據(jù)的應(yīng)用對數(shù)據(jù)庫的要求越來越高。隨著數(shù)據(jù)量的增大,除記錄數(shù)據(jù)外,數(shù)據(jù)庫還要面對存儲容量是否可擴(kuò)展、保存數(shù)據(jù)是否安全、數(shù)據(jù)的可利用性和數(shù)據(jù)的處理速度等問題。如何合理運(yùn)用數(shù)據(jù)庫并且減輕它負(fù)擔(dān),由此衍生出來針對企業(yè)信息系統(tǒng)的oracle數(shù)據(jù)庫的 RAC集群運(yùn)行模式。
集群是若干互聯(lián)節(jié)點(diǎn)充當(dāng)一個單臺服務(wù)器。集群軟件隱藏了結(jié)構(gòu),所有節(jié)點(diǎn)都可以對磁盤進(jìn)行讀寫操作。RAC全稱 Real Application Clusters ,簡單說它就是一個軟件,RAC通過集群互連使得多個實(shí)例間可以互傳協(xié)調(diào)信息和數(shù)據(jù)映象。從外部應(yīng)用人員的角度看,RAC就像是一個節(jié)點(diǎn)在提供服務(wù)。 RAC的層次架構(gòu)有三層:
2.1 存儲類
存儲類中RAC是一個多實(shí)例、單數(shù)據(jù)庫的系統(tǒng)。很多個節(jié)點(diǎn)共用一個磁盤來存儲和共享數(shù)據(jù)。database files、control files、redo logs 等。
底層存儲方式 raid 0 兩塊盤disk,條帶化
raid 1 兩塊盤disk,鏡像
raid 5 三塊盤 disk,條帶化+鏡像 底層配置raid卡,5更穩(wěn)定。
2.2 網(wǎng)絡(luò)類
RAC中,在TNS中配置網(wǎng)絡(luò)相關(guān)的IP地址。有四種情況:Public、Private、vip和scanip。
由公網(wǎng)網(wǎng)卡接入的網(wǎng)絡(luò),可以對外的提高查詢的服務(wù)。由私網(wǎng)網(wǎng)卡構(gòu)建的,為了使內(nèi)部的節(jié)點(diǎn)之間可以相互通信,完成緩存融合的功能。由游離的IP的組成的,為了實(shí)現(xiàn)高可用的性能的IP地址。實(shí)例如表1所示。
2.3 應(yīng)用類
CRS則是應(yīng)用層的,通過一些CRS的命令對上層進(jìn)行管理。用于檢查后臺進(jìn)程狀態(tài),啟動所有CRS資源。檢查ocr設(shè)置信息用ocrcheck,檢查磁盤信息,查看所有CRS資源基本信息等。
3 RAC集群原理及實(shí)例
3.1 RAC集群相關(guān)原理
1)RAC集群原理
RAC 主要是一個database,可以由多個instance訪問,每個節(jié)點(diǎn)運(yùn)行一個instance。
CRS:Cluster Ready Service,Oracle集群軟件。
GRID:網(wǎng)格管理,11g通過 GRID架構(gòu)集中管理RAC節(jié)點(diǎn)。
RAC:較更早的OPS提供更好的性能。
2)RAC 體系的優(yōu)勢
(1)高可用性:提供節(jié)點(diǎn)容錯和負(fù)載均衡。如果主實(shí)例出現(xiàn)故障,服務(wù)將從故障實(shí)例轉(zhuǎn)移到仍正常運(yùn)行的替代實(shí)例。
(2)擴(kuò)展性和高性能:提高業(yè)務(wù)吞吐量,允許同時運(yùn)行多個批處理。允許更大的并行度和更多的并行執(zhí)行操作。允許大幅度增加聯(lián)機(jī)事務(wù)處理系統(tǒng)中的連接用戶數(shù)量。
3)CRS的重要后臺進(jìn)程
CRS是RAC的集群件,它是RAC體系的主要組件,由若干個進(jìn)程組成,其中最重要的3個是CRSD、CSSD和EVMD。
4)VIP
VIP是RAC提供節(jié)點(diǎn)間服務(wù)切換的網(wǎng)絡(luò)組件,是為了替代OS層面的TCP/IP超時閾值機(jī)制。
(1)綁定固定的對外提供服務(wù)的是公網(wǎng)IP,但是可以浮動的是VIP。VIP可以附著在公網(wǎng)IP上,因此此時最少就有兩個網(wǎng)卡IP了。
(2)當(dāng)某一個節(jié)點(diǎn)網(wǎng)卡故障壞掉時,VIP會自動游附到好的節(jié)點(diǎn)上,這樣此VIP的就可以繼續(xù)不斷使用
(3)一般VIP是配置在客戶端的TNS文件中的。
5)緩存融合Cache Fusion
RAC的前身是OPS,OPS的一個缺點(diǎn)是當(dāng)一個節(jié)點(diǎn)修改了某個數(shù)據(jù)塊,而第二個節(jié)點(diǎn)也要修改同一數(shù)據(jù)塊時,必須等待第一個節(jié)點(diǎn)將該塊寫入磁盤數(shù)據(jù)文件,然后第二個節(jié)點(diǎn)從磁盤上讀取該塊,這種方式比較低效。
RAC有多個節(jié)點(diǎn),總體上RAC的Buffer Cache的數(shù)據(jù)塊比單實(shí)例的數(shù)量更多,修改更為密集。RAC采用了一種叫做Cache Fusion的機(jī)制,可以通過節(jié)點(diǎn)間的高速內(nèi)網(wǎng)傳遞同一個要修改的塊,大大提高了DML操作的效率。整個Cache Fusion有兩個服務(wù)組成,GCS和GES。它們具體體現(xiàn)為一些服務(wù)進(jìn)程。
以緩存融合為例,當(dāng)一個實(shí)例修改了某個數(shù)據(jù)塊,而另一個實(shí)例也要修改該塊時,第一個實(shí)例會把修改的數(shù)據(jù)塊即Current Copy通過Cashe Fusion傳給第二個實(shí)例,然后保存原數(shù)據(jù)塊在實(shí)例的內(nèi)存中,但是不能再進(jìn)行任何修改操作,第一個實(shí)例就相對的成為主節(jié)點(diǎn)。 這一機(jī)制是為了保護(hù)事務(wù)的一致性,并有利于Crash Recovery的恢復(fù)過程。
3.2實(shí)際操作RAC搭建過程
1)注意事項(xiàng)
在RAC中,grid用戶的權(quán)限要比oracle的權(quán)限大,所以在RAC中監(jiān)聽listener已經(jīng)不屬于oracle來管理了,而是grid用戶來管理。listener作為一種啟動的資源來配置。lsnrctl status命令可以查看有幾個實(shí)例注冊了進(jìn)來。
2)搭建過程
(1)首先需要配置網(wǎng)絡(luò),建立本地盤和共享盤
(2)建用戶及組、目錄、權(quán)限并更新配置文件
groupadd -g 200 oinstall
groupadd -g 201 dba
groupadd -g 202 oper
groupadd -g 203 asmadmin
groupadd -g 204 asmoper
groupadd -g 205 asmdba
useradd -u 200 -g oinstall -G dba,asmdba,oper oracle
useradd -u 201 -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid
(3)修改內(nèi)核參數(shù)vi /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
(4)配置共享存儲
運(yùn)用 ASM磁盤管理配置規(guī)劃
磁盤組OCR_VOTE,3個1G互為鏡像
(5)建立主機(jī)間的信任關(guān)系
(6) 配置Grid用戶信任關(guān)系:
生成密鑰rsa類型:id_rsa為私鑰,id_rsa.pub為公鑰,它們自動保存到.ssh下
[grid@tim1 ~]$ cd
[grid@tim1 ~]$ ssh-keygen -t rsa
[grid@tim1 ~]$ ssh-keygen -t dsa
配置grid用戶信任關(guān)系(Node1、Node2)
Node1:
[grid@tim1 ~]$ ls .ssh
id_dsa、 id_rsa 、id_dsa.pub 、id_rsa.pub
第一步,先把Node1的兩把公鑰收集到它的authorized_keys文件中。
我們只關(guān)心公鑰,不關(guān)心私鑰
[grid@tim1 ~]$ cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
[grid@tim1 ~]$ cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys
第二步,把其他節(jié)點(diǎn)的公鑰追加到node1的authorized_keys文件中。
[grid@tim1 ~]$ ssh tim2 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
[grid@tim1 ~]$ ssh tim2 cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys
第三步,把node1的authorized_keys文件派發(fā)給其他節(jié)點(diǎn)。
[grid@tim1 ~]$ scp ~/.ssh/authorized_keys tim2:~/.ssh
[grid@tim2 ~]$ cat ~/.ssh/authorized_keys
(7)安裝Grid
解壓安裝包
以root身份解壓grid安裝包和database安裝包
Node1:
[root@tim1 ~]#cd /soft
[root@tim1 soft]#ls
asm linux_11gR2_database_1of2.zip linux_11gR2_database_2of2.zip linux_11gR2_grid.zip
[root@tim1 soft]#unzip linux_11gR2_grid.zip
[root@tim1 soft]#unzip linux_11gR2_database_1of2.zip
[root@tim1 soft]#unzip linux_11gR2_database_2of2.zip
檢查兩個節(jié)點(diǎn)的共享盤
看到的共享盤ASMDisk已經(jīng)準(zhǔn)備就緒
Node1:
[root@tim1 ~]#ll /dev/raw/raw*
Node2:同上
[root@tim2 ~]#ll /dev/raw/raw* 兩節(jié)點(diǎn)看到的盤一致
(8)啟動GRID安裝界面
啟動Xmanager Passive,一般端口是[:0.0],如圖1所示。
DISPLAY的意思是把圖形顯示到某個客戶端上,圖2顯示的是win7本地客戶端。
使用ASM,Oracle11gR2取消了raw選項(xiàng),如圖3所示。
然后建立GRID并執(zhí)行如圖4和5所示。
如上圖所示分別在兩個節(jié)點(diǎn)實(shí)例tim1(node1)和tim2(node2)中,分別各執(zhí)行兩個腳本orainstRoot.sh和root.sh,且順序一定不可以變,當(dāng)一個執(zhí)行成功后方可執(zhí)行下一個。
Node1執(zhí)行第一個腳本(root用戶)
[root@tim1 ~]# /u01/app/oraInventory/orainstRoot.sh
Node2執(zhí)行第一個腳本(root用戶)
[root@tim2 ~]# /u01/app/oraInventory/orainstRoot.sh
The execution of the script is complete.
Node1 執(zhí)行第二個腳本(root用戶)
[root@tim1 /]# /u01/11.2.0/grid/root.sh
Node2 執(zhí)行第二個腳本(root用戶)
[root@tim2 ~]# /u01/11.2.0/grid/root.sh
運(yùn)行腳本,如圖6所示。
最后一步,點(diǎn)擊Close,結(jié)束圖形安裝。
3.3操作實(shí)例
以某單位信息中心遷移為例,進(jìn)行具體操作描述。
1)項(xiàng)目要求描述
(1)在新信息中心搭建高可用雙機(jī)于備服務(wù)器;
(2)將舊服務(wù)器數(shù)據(jù)庫遷至新服務(wù)器中。
硬件環(huán)境:IBM 磁盤陣列、IBM 小型機(jī)
軟件環(huán)境:AIX5.3、ORALCE 10.2.0.1.0
2)過程描述
(1)配置存儲環(huán)境。根據(jù)項(xiàng)目要求,對空間進(jìn)行規(guī)劃,使用 6 塊 SCSI 硬盤構(gòu)建 Raid10,使用 4 塊 SCSI 硬盤構(gòu)建 Raid5。在 Raid 10 上創(chuàng)建 ASM 磁盤組,將 Raid 5 創(chuàng)建成文件系統(tǒng);
(2)在新信息中心配置安裝環(huán)境并部署 RAC ,安裝應(yīng)用軟件,為數(shù)據(jù)庫遷移做準(zhǔn)備;
(3)選擇一個時間點(diǎn),暫停中間件(MQ)數(shù)據(jù)上傳,用 RMAN 對數(shù)據(jù)庫進(jìn)行遷移。
4 結(jié)語
在當(dāng)前大數(shù)據(jù)紛雜的時代,一臺機(jī)器提供的性能是遠(yuǎn)遠(yuǎn)不夠的,RAC(rac application cluster)可以同時利用兩臺服務(wù)器對外提供服務(wù),做一個高性能的一套架構(gòu)。它可以根據(jù)負(fù)載情況連接到不同的機(jī)器上,此時業(yè)務(wù)相對打散,減輕了負(fù)擔(dān)。體現(xiàn)了RAC的高性能。
當(dāng)instance1從磁盤中訪問某條數(shù)據(jù)到自己的內(nèi)存中時,instance2也正想訪問這條數(shù)據(jù),此時會有主從節(jié)點(diǎn)的概念,且instance2會從instance1的內(nèi)存中讀取這條數(shù)據(jù)而不是從磁盤中。這樣使查詢更快更方便并且減少了磁盤的吞吐量和次數(shù),也減輕了磁盤的負(fù)擔(dān)。即實(shí)現(xiàn)了緩存融合。
當(dāng)通過客戶端,通過遠(yuǎn)程連到服務(wù)器時,RAC會通過考慮看兩個實(shí)例(instance)都分別持有的會話總數(shù),來將新的會話連接到會話少的實(shí)例中,來減輕某服務(wù)器的負(fù)擔(dān)。體現(xiàn)了rac的負(fù)載均衡。
而為了實(shí)現(xiàn)負(fù)載均衡,實(shí)現(xiàn)會話的自動連接,在綁定IP地址時,就不應(yīng)該只是在TNS中綁定固定的對外提供服務(wù)的公網(wǎng)IP地址,而是建一個掛在公網(wǎng)IP上的虛擬IP,叫VIP(virtual ip)。它是可以浮動的。當(dāng)搭建RAC之后,系統(tǒng)會自動產(chǎn)生一個虛擬IP附在公網(wǎng)IP上,作用是當(dāng)某網(wǎng)卡壞掉時,附在上面的VIP地址會自動的漂到網(wǎng)絡(luò)通的其他的機(jī)器上,如果此時TNS用的是VIP的地址則即使出現(xiàn)網(wǎng)絡(luò)中斷,業(yè)務(wù)卻并沒有中斷,即實(shí)現(xiàn)了高可用性。
RAC集群模式,讓用戶可以不用花大的成本就實(shí)現(xiàn)了高可用性,同時也因?yàn)橛辛素?fù)載均衡和高性能的特性解決了如果發(fā)生故障,業(yè)務(wù)斷停會給企業(yè)帶來的損失。當(dāng)業(yè)務(wù)增大,需要進(jìn)一步擴(kuò)展時,也可以直接按照需求量增加節(jié)點(diǎn),當(dāng)業(yè)務(wù)高峰期過后,也可以直接按照需求量減少節(jié)點(diǎn),無需更換服務(wù)器或者修改應(yīng)用程序及環(huán)境。這些應(yīng)用都大大地解決了現(xiàn)在企業(yè)所困擾或者面臨的問題。RAC的優(yōu)勢是企業(yè)所需要及未來信息技術(shù)的發(fā)展方向,也是人才培養(yǎng)的方向之一。
參考文獻(xiàn):
[1] 陳吉平. 構(gòu)建高可用環(huán)境[ M ]. 北京:電子工業(yè)出版社,2008,1.
[2] Richard J.Niemiec. Oracle Database 10g 性能調(diào)整與優(yōu)化[M]. 薛瑩,譯. 北京:清華大學(xué)出版社,2009.
[3] 周卓鏞.Oracle R A C 數(shù)據(jù)庫緩存優(yōu)化方法探討[J].科技創(chuàng)新導(dǎo)報(bào), 2010(5):12- 12.
[4] 林波.基于 Oracle RAC 數(shù)據(jù)庫的應(yīng)用系統(tǒng)的容錯處理機(jī)制[J].中國傳媒科技,2010(9):50-51.
[5] 周芹等.基于 Oracle Spatial 的空間數(shù)據(jù)庫緩存的關(guān)鍵技術(shù)[J].地球信息科學(xué),2007(3):40-44.
[6] 王曦. Oracle 數(shù)據(jù)庫安全技術(shù)與策略[J]. 科技資訊,2016(30):9-11.
[7] 童超城,高唯一. 關(guān)于 Oracle數(shù)據(jù)庫安全管理的研究[J].電子技術(shù)與軟件工程,2016(11):228.
[8] 劉嘉琦 . 探究 oracle 數(shù)據(jù)庫的備份與恢復(fù)[J]. 數(shù)字技術(shù)與應(yīng)用,2017(2):246.
[9] 袁勇,簡巖,孫小林. 基于 Oracle RAC的數(shù)字校園平臺架構(gòu)分析[J].江蘇科技信息,2017(8):42-43.