袁勇 池興穎 孫小林
摘要:文章從數據庫高可用的角度出發(fā),首先,對高可用的概念及原理進行說明;其次,以Oracle數據庫為研究對象,分別對Oracle數據庫高可用的幾種實現方法進行原理性的說明,并對實現方法從目的、實現方式、跨平臺性等方面進行比較,以供數據庫管理人員參考。
關鍵詞:Oracle;高可用;數據庫
信息技術的飛速發(fā)展,使得應用系統(tǒng)也相應增加,而應用系統(tǒng)只是外殼,關鍵還得依賴后端的數據庫系統(tǒng)。因此,數據庫系統(tǒng)的穩(wěn)定性、高可用性給用戶帶來的體驗也就更加明顯。本文先對高可用性的原理進行了介紹,然后針對Oracle數據庫高可用的實現方式進行詳細介紹,并對幾種高可用方式從多角度進行比較分析,以供相關技術人員參考。
1 高可用性原理
高可用是一種系統(tǒng),經過專門的設計,能夠減少系統(tǒng)停機的時間,保證其服務的高度可用性;同時,可以盡可能縮短因日常維護、突發(fā)情況所導致的停機時間。一般來說,實現高可用主要通過以下3種方式[1]。
1.1 雙機熱備方式
工作原理:其中一臺主機處于工作狀態(tài),備用機則處于監(jiān)控準備狀態(tài)。當工作主機發(fā)生宕機時,備用機完成工作接管,等待主機維護修復并恢復正常后,根據使用者設定的切換方式將服務又切到主機上,而數據的完整性、一致性等則通過共享存儲的方式來解決。但是,備用機多數時間處于不工作狀態(tài),存在資源浪費的現象。
1.2 雙機雙工方式
工作原理:兩臺主機同時并行地運行各自的服務,并且互相對對方的運行情況隨時進行監(jiān)測。當其中的一臺主機發(fā)生故障時,另一臺主機隨即接管故障機上的服務工作,保證工作質量,這就要求兩臺主機本身要有一定的性能冗余,保證在另一臺主機發(fā)生故障時,能夠承擔起兩臺機器的作業(yè),應用系統(tǒng)的數據則都存放在共享存儲中。
1.3 集群系統(tǒng)方式
工作原理:集群系統(tǒng)中多臺主機并行工作,當集群中某個主機發(fā)生故障時,則系統(tǒng)中其他主機接管該主機上的作業(yè)。待故障機恢復正常后,集群系統(tǒng)又會給它分配新的工作任務。
2 Oracle高可用的幾種實現方式及對比分析
2.1 Oracle RAC 方式
Oracle RAC,即Oracle真正應用集群。Oracle RAC源于其早期版本的OPS,到9i時更名為實時應用集群(RealApplication Clusters,RAC),是Oracle公司實現高可用和負載均衡的核心技術。RAC系統(tǒng)一般是由兩臺或更多的具有相同結構的計算機和共享存儲組成,它可以支持7X24小時在線的應用系統(tǒng),并能提供強大的數據處理、高可用的訪問能力。Oracle還內置了存儲管理軟件和集群軟件,這樣就降低了成本。到最新的Oracle 12C中,更是引入了可插拔數據庫等新特性,更好地保障了高可用性和性能擴展。
在具體實施過程中,可以使用兩臺服務器或者多臺服務器,以及存儲陣列來構建RAC平臺,從而保障應用集群系統(tǒng)的高可用性[2]。
2.2 Oracle DataGuard方式
DataGuard是通過建立一個Primary和Standby組來確立其參照關系。Standby—旦創(chuàng)建,DataGuard就會通過將主數據庫的redo日志傳遞給Standby數據庫,然后在Standby中應用日志信息實現數據庫的同步。
Standby有分兩種實現方式:物理Standby和邏輯Standby。物理Standby提供與主數據庫完全一樣的拷貝,數據庫SCHEMA,包括索引都是一樣的。它是直接應用redo日志實現同步的。在邏輯Standby中,邏輯信息是相同的,但物理組織、數據結構可以不相同,它跟主庫保持同步的方法是將接收的REDO轉換成對應的SQL語句,之后在Standby上執(zhí)行SQL語句[3]。
2.3 Oracle MAA方式
Oracle的MAA并不是一套全新的技術,它是將以前分散的技術打包成一個整體,是RAC與DataGuard的融合。MAA的組建包括了以下內容:RMAN,ASM,Oracle Stream,Oracle DataGuard,Oracle RAC,Oracle Flashback[4]。
(l)RMAN:Oracle的備份恢復工具。(2)ASM:AutoStorage Management,自動存儲管理技術,此功能提供了卷管理,集群文件特征,能夠在軟件層面提供數據冗余能力,避免單點故障。(3)Oracle Stream:Stream也是從Oracle 10之后開始擁有的新特征,這種技術同Data guard—樣,都是建立在對聯(lián)機日志、歸檔日志的提取和應用的基礎上。(4)Oracle DataGuard:這個技術也是利用了聯(lián)機日志和歸檔日志的傳遞應用來實現數據的完全冗余,從性價比來說,是最經濟的高可用方案。(5)RAC:Real Application Cluster,真正實用集群技術,RAC不能解決存儲的單點故障,一般情況下實施RAC需要和其他高可用技術一同使用。(6)OracleFlashback:閃回技術,把數據庫回滾到之前的某個狀態(tài)。
2.4 Oracle Streams方式
Stream是Oracle高級隊列(Oracle Advanced Queue,OAQ)技術的擴展應用,其原理就是不斷地收集事件,并把收集的事件保存到隊列中,按隊列順序發(fā)布給相應的訂閱者。從DBA管理的角度來說,就是對數據庫Redo日志進行捕獲,之后把捕捉到的Redo日志通過網絡傳播到相應的數據庫,而收到日志的數據庫通過應用日志,進而達到復制變化的作用。
在Stream環(huán)境中,進行數據復制的起點數據庫,我們稱為源數據庫;復制到的終點數據庫則叫作目標數據庫。在源和目標數據庫上都要創(chuàng)建隊列,發(fā)送隊列建在源數據庫上,接收隊創(chuàng)建在目標數據庫上,對數據庫的一切操作均被記錄在日志信息當中。完成Stream環(huán)境搭建,在源數據庫上會產
生一個捕獲進程,該進程利用Logminer技術從日志中提取相應的DDL,DML語句,這些語句叫作邏輯變更記錄,一個邏輯變更記錄對應著一個行變更。這些變更記錄被系統(tǒng)保存到源數據庫的發(fā)送隊列中,然后通過傳播進程把這些記錄完整地發(fā)送到目標數據庫隊列當中。目標數據庫通過一個專門的應用進程,從隊列中取出邏輯變更記錄的數據,在本地數據庫中應用,從而實現數據的同步。
2.5 對比分析
針對Oracle數據庫實現高可用的幾種方式,從主要目的、同步方向、數據粒度以及異庫同步等角度,對其進行對比,具體如表1所示。
3 結語
本文首先對高可用的原理進行簡要介紹,實現高可用的方式通常是主從、雙工以及集群模式。然后,針對Oracle數據庫實現高可用的幾種方式進行原理性的介紹,從RAC,DataGuard再到它們的完美結合MAA,以及Streams復制方式,并對RAC,DataGuard,Streams復制從主要目的、同步方向、讀寫方式、異構平臺支持情況等方面進行對比,以供Oracle數據庫系統(tǒng)相關從業(yè)技術人員在進行高可用平臺搭建時參考。
[參考文獻]
[1]賽義德,塔里克,瑞亞吉,等.深入理解Oracle RAC 12C[M].趙燚,梁濤,程飛,等,譯北京:電子工業(yè)出版社,2014.
[2]袁勇,袁光靈,孫小林.Oracle RAC集群性能優(yōu)化策略分析[J].無線互聯(lián)科技,2017(22): 108-109.
[3]劉炳林.構建最高可用Oracle數據庫系統(tǒng)Oracle llgR2 RAC管理、維護與性能優(yōu)化[M].北京:機械工業(yè)出版社,2012.
[4]高斌.Oracle RAC核心技術詳解[M].北京:機械工業(yè)出版社,2015.