齊恩鐵+孫海峰
【摘要】 本文是在雙節(jié)點(diǎn)RAC的環(huán)境基礎(chǔ)上搭建MAA,從而實(shí)現(xiàn)數(shù)據(jù)庫的最高可用性架構(gòu)。MAA架構(gòu)包括兩大組件:RAC和DataGuard。其中RAC實(shí)現(xiàn)了I/O分離,避免了批量I/O對數(shù)據(jù)庫的壓力,DataGuard實(shí)現(xiàn)了對數(shù)據(jù)庫的保護(hù)。
【關(guān)鍵字】 Oracle MAA DataGuard 數(shù)據(jù)庫
一、引言
Oracle在10g版本時(shí)已經(jīng)提供RAC(Real Application Cluster)的解決方案,而Oracle在11g版本中更是提供了MAA(Maximum Availability Architecture)最高可用性體系架構(gòu)的解決方案,目標(biāo)是為了消除數(shù)據(jù)庫的停機(jī)時(shí)間,為用戶提供更加有效的方案來實(shí)現(xiàn)企業(yè)數(shù)據(jù)和應(yīng)用最大化的高可用性。它不僅包括針對存儲(chǔ)的ASM,針對集群的RAC,而且還包括針對數(shù)據(jù)保護(hù)的DataGuard[1]。
二、系統(tǒng)實(shí)現(xiàn)
1、架構(gòu)原理。在DataGuard環(huán)境中,至少有兩個(gè)數(shù)據(jù)庫,一個(gè)處于Open狀態(tài)對外提供服務(wù),這個(gè)數(shù)據(jù)庫叫做Primary Database,簡稱主庫。第二個(gè)處于恢復(fù)狀態(tài),叫做Standby Database,簡稱備庫[4]。
2、系統(tǒng)環(huán)境。1.主機(jī)與軟件:此次MAA部署是在一臺(tái)Window10操作系統(tǒng)上,利用Virtual Box軟件虛擬創(chuàng)建四臺(tái)Linux主機(jī),并在這四臺(tái)Linux主機(jī)上安裝Oracle數(shù)據(jù)庫。2.網(wǎng)絡(luò):在MAA環(huán)境中,每臺(tái)主機(jī)都需要有兩塊網(wǎng)卡和四個(gè)IP,兩塊網(wǎng)卡是基于Virtual Box虛擬機(jī)的host-only網(wǎng)卡模式。公有網(wǎng)卡對應(yīng)公有IP、Virtual IP和Scan IP,公有IP用于標(biāo)識(shí)虛擬Linux主機(jī)在網(wǎng)絡(luò)中的唯一地址;Virtual IP用于數(shù)據(jù)庫的對外服務(wù),當(dāng)某個(gè)節(jié)點(diǎn)出現(xiàn)故障時(shí),Virtual IP可以自動(dòng)轉(zhuǎn)移到其他正常的節(jié)點(diǎn)上。私有網(wǎng)卡對應(yīng)私有IP,用于節(jié)點(diǎn)之間的通信和數(shù)據(jù)傳輸。3.磁盤:部署MAA的四臺(tái)虛擬Linux主機(jī)都具有三塊虛擬磁盤,分別是:系統(tǒng)磁盤,用于存儲(chǔ)操作系統(tǒng)和系統(tǒng)軟件;本地磁盤,用于存儲(chǔ)Oracle數(shù)據(jù)庫軟件;共享磁盤,主要用來存放OCR文件(集群的配置信息),表決盤VOTING DISKS,以及數(shù)據(jù)庫的數(shù)據(jù)文件和閃回區(qū)等。
3、系統(tǒng)部署。此次系統(tǒng)部署分為:1.配置主機(jī)。IP映射、磁盤配置、創(chuàng)建用戶和目錄、環(huán)境變量等。2.安裝集群件CRS和Oracle軟件。該階段需要安裝集群件和Oracle軟件,集群件對運(yùn)行于其上的數(shù)據(jù)庫進(jìn)行監(jiān)視,并在發(fā)生異常時(shí)進(jìn)行重啟、切換等干預(yù)手段。3.創(chuàng)建數(shù)據(jù)庫。創(chuàng)建ASM磁盤組,數(shù)據(jù)庫的數(shù)據(jù)文件,控制文件,日志文件都存儲(chǔ)在ASM磁盤組中,然后在通過DBCA創(chuàng)建數(shù)據(jù)庫。4.配置主備庫初始化文件。創(chuàng)建主庫和備庫的PFILE文件。5.啟動(dòng)主備庫。通過RMAN備份主庫的文件發(fā)送到備庫主機(jī),在備庫用RMAN做恢復(fù),并使用PFLIE文件啟動(dòng)備庫,至此該集群搭建完成。
三、系統(tǒng)測試
3.1 正常切換(Switchover)
Swithchover通常都是人為的有計(jì)劃的進(jìn)行角色互換,比如數(shù)據(jù)庫升級、更換硬件等。
1.查看主備庫狀態(tài)。
SQL> select name,database_role,switchover_status,open_mode from v$database;
2.檢查是否有用戶連接
SQL>select username,user# from v$session where username is not null;
3.主庫切換到備庫
SQL>alter database commit to switchover to standby
當(dāng)用命令檢查之后發(fā)現(xiàn)還有用戶連接數(shù)據(jù)庫,可用下列語句在轉(zhuǎn)換的同時(shí)強(qiáng)制關(guān)閉用戶的連接。
SQL>alter database commit to switchover to standby with session shutdown;
4.備庫切換到主庫
重新將主庫轉(zhuǎn)換為 MOUNT 狀態(tài),用如下語句將原來的備庫轉(zhuǎn)換為新的主庫。
SQL>alter database commit to switchover to primary;
將新轉(zhuǎn)換的主庫開庫,同時(shí)將備庫open,主庫進(jìn)行切換日志操作,備庫恢復(fù),查看新的備庫是否可以接收歸檔日志并做恢復(fù)。
SQL>alter database recover managed standby database disconnect from session;
3.2 應(yīng)急切換(Failover)
Failover是指由于主庫遇到災(zāi)難損壞而無法正常工作時(shí),需要將備庫轉(zhuǎn)換為主庫,具體操作如下。
1.主庫宕機(jī),對備庫強(qiáng)制停止恢復(fù)。
SQL>alter database recover managed standby database finish force;
2.備庫強(qiáng)制轉(zhuǎn)換為主庫
停止備庫的恢復(fù)之后,將備庫轉(zhuǎn)換為主庫,此時(shí),原來的主庫將不再是當(dāng)前DataGuard環(huán)境中的一部分,新生成的主庫將頂替舊主庫提供服務(wù)。
SQL>alter database commit to switchover to primary;
結(jié)論:數(shù)據(jù)庫的高可用性架構(gòu)是數(shù)據(jù)庫容災(zāi)容錯(cuò)的保護(hù)模式。Oracle MAA給我們提供了一個(gè)用來進(jìn)行數(shù)據(jù)保護(hù)的很好的解決方案,它不僅能夠在故障時(shí)進(jìn)行容錯(cuò),還實(shí)現(xiàn)模式轉(zhuǎn)換之間的無縫切,這就使得應(yīng)用它的時(shí)候,業(yè)務(wù)不會(huì)因?yàn)橥庠谠蚧騼?nèi)在原因受到影響而中斷,從而導(dǎo)致企業(yè)的損失。
參 考 文 獻(xiàn)
[1] 陳吉平.構(gòu)建Oracle高可用環(huán)境-企業(yè)級高可用數(shù)據(jù)庫架構(gòu)、實(shí)戰(zhàn)與經(jīng)驗(yàn)總結(jié)[M].北京:電子工業(yè)出版社,2012.
[2] 張曉明.大話Oracle RAC集群高可用性備份與恢復(fù)[M].北京:人民郵電出版社,2011.
[3] 白磷.Oracle RAC日記[M].北京:清華大學(xué)出版社,2013.