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

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

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