朱廣新,馬俊磊
(1.南瑞集團(tuán)有限公司,江蘇 南京211000;2.南京基石數(shù)據(jù)技術(shù)有限責(zé)任公司,江蘇 南京210093)
DBMS廣泛應(yīng)用于現(xiàn)代社會(huì)的方方面面,政府機(jī)構(gòu)、學(xué)校、銀行、房地產(chǎn)集團(tuán)、電信企業(yè)、航空公司、電商企業(yè)等組織機(jī)構(gòu)都需要使用DBMS來管理其業(yè)務(wù)數(shù)據(jù)。DBMS已經(jīng)成為這些領(lǐng)域關(guān)鍵的核心信息系統(tǒng)之一[1]。然而隨著業(yè)務(wù)數(shù)據(jù)的持續(xù)增長(zhǎng),特別是大數(shù)據(jù)時(shí)代背景下每天指數(shù)級(jí)增長(zhǎng)的業(yè)務(wù)數(shù)據(jù),DBMS不可避免地會(huì)出現(xiàn)各種故障及性能瓶頸,因此DBMS的高可用性能就顯的尤為重要。
基于Grid Infrastructure集群的MYSQL數(shù)據(jù)庫高可用方案是將MYSQL作為Grid Infrastructure集群管理的一個(gè)資源,在軟件架構(gòu)上實(shí)現(xiàn)了數(shù)據(jù)庫的高可用設(shè)計(jì)。當(dāng)MYSQL數(shù)據(jù)庫發(fā)生故障時(shí),該集群會(huì)自動(dòng)恢復(fù)發(fā)生故障的數(shù)據(jù)庫,或者將其轉(zhuǎn)移到其他節(jié)點(diǎn)上運(yùn)行,該恢復(fù)過程對(duì)于用戶而言是不可知的,用戶不用修改任何配置也可以持續(xù)地訪問數(shù)據(jù)庫,有效地實(shí)現(xiàn)了數(shù)據(jù)庫的高可用性。
Grid Infrastructure是 ORACLE 11gR2新發(fā)布的一款集群解決方案,以下詳細(xì)介紹基于該軟件的高可用架構(gòu)的組成與結(jié)構(gòu),以及基于架構(gòu)的ORACLE RAC數(shù)據(jù)庫的高可用方案。
由各節(jié)點(diǎn)硬盤構(gòu)成的共享存儲(chǔ),為該架構(gòu)的數(shù)據(jù)存儲(chǔ)層,各資源的數(shù)據(jù)目錄存放于共享存儲(chǔ)中。Grid Infrastructure為該架構(gòu)的核心管理中心,托管各個(gè)資源,通過集群策略配置,可以有效實(shí)現(xiàn)各種類型資源的高可用性。
基于Grid Infrastructure的ORACLE RAC高可用架構(gòu)如圖1所示。

圖1 基于Grid Infrastructure的ORACLE RAC高可用架構(gòu)
圖1 表示了基于Grid Infrastructure的ORACLE RAC高可用架構(gòu)的組成與結(jié)構(gòu),其結(jié)構(gòu)分為以下幾個(gè)主要部分:
(1)Grid Infrastructure層
這部分是該方案的核心管理區(qū),在其之下還有底層的存儲(chǔ)架構(gòu)。
(2)節(jié)點(diǎn)層
這部分以集群各節(jié)點(diǎn)為主,NODE1和NODE2為兩個(gè)節(jié)點(diǎn),NODE1-VIP和 NODE2-VIP是分別依賴于這兩個(gè)節(jié)點(diǎn)的虛擬IP,其完全依賴于節(jié)點(diǎn)的存活狀態(tài)。
(3)數(shù)據(jù)庫實(shí)例層
該方案的數(shù)據(jù)庫層為ORACLE RAC數(shù)據(jù)庫。這里以兩節(jié)點(diǎn)為例,RAC_DB1和RAC_DB2為ORACLE RAC數(shù)據(jù)庫的兩個(gè)實(shí)例,當(dāng)其所在的節(jié)點(diǎn)NODE1或NODE2宕機(jī)后,集群會(huì)自動(dòng)將該節(jié)點(diǎn)上的數(shù)據(jù)庫實(shí)例轉(zhuǎn)移到其余存活的節(jié)點(diǎn)運(yùn)行,有效地保障了數(shù)據(jù)庫的高可用性。
(4)網(wǎng)絡(luò)層
網(wǎng)絡(luò)層主要以 SCAN-IP為主,客戶端的tnsnames配置文件中,只需要 SCAN-IP信息。SCAN-IP類似服務(wù)端對(duì)外提供服務(wù)的虛擬主機(jī),客戶端只需要連接到該主機(jī)就可以實(shí)現(xiàn)對(duì)服務(wù)端的訪問,只不過訪問的服務(wù)端的具體節(jié)點(diǎn)是隨機(jī)的。
MYSQL數(shù)據(jù)庫高可用方案是將MYSQL數(shù)據(jù)庫配置成 Grid Infrastructure管理的一種generic_application類型資源,該資源可以和其對(duì)應(yīng)的VIP產(chǎn)生依賴關(guān)系,在該方案中,數(shù)據(jù)庫是一種通用應(yīng)用程序資源,Grid Infrastructure并不認(rèn)為 MYSQL是一種數(shù)據(jù)庫資源,也就是說Grid Infrastructure根本沒有意識(shí)到MYSQL是一種數(shù)據(jù)庫!通過配置依賴于該數(shù)據(jù)庫的VIP信息,可以有效實(shí)現(xiàn)該數(shù)據(jù)庫的高可用性。
如圖2所示,其中MYSQL1為運(yùn)行于NODE1和NODE2節(jié)點(diǎn)上的MYSQL數(shù)據(jù)庫實(shí)例,MYSQL-VIP為依賴于該數(shù)據(jù)庫實(shí)例的VIP。當(dāng)其依賴的數(shù)據(jù)庫實(shí)例宕機(jī)或者發(fā)生故障時(shí),Grid Infrastructure首先會(huì)將數(shù)據(jù)庫在其發(fā)生故障的節(jié)點(diǎn)重啟,如果超過一定次數(shù),就將其對(duì)應(yīng)VIP漂移到任意存活的節(jié)點(diǎn)上,并在新節(jié)點(diǎn)上將數(shù)據(jù)庫重啟,客戶端通過VIP來訪問數(shù)據(jù)庫,保障了在節(jié)點(diǎn)宕機(jī)、數(shù)據(jù)庫啟動(dòng)失敗、崩潰等情況下客戶端的可靠性以及數(shù)據(jù)庫的高可用性。這一點(diǎn)和第1.2節(jié)中的高可用方案有本質(zhì)區(qū)別,后者只有當(dāng)節(jié)點(diǎn)宕機(jī)時(shí),VIP才會(huì)動(dòng)態(tài)的漂移。

圖2 基于Grid Infrastructure集群的MYSQL數(shù)據(jù)庫高可用方案架構(gòu)
本文分析了目前基于Grid Infrastructure的ORACLE RAC數(shù)據(jù)庫高可用解決方案,提出了一種新型的基于Grid Infrastructure的MYSQL數(shù)據(jù)庫高可用架構(gòu),并且由于MYSQLS數(shù)據(jù)庫開源易得,可以有效地節(jié)省用戶的購(gòu)置成本。