中國傳媒大學(xué)南廣學(xué)院 薛雁丹 卜言彬 陳 婷 楊 艷 楊文娟
Oracle數(shù)據(jù)庫任意距離零數(shù)據(jù)丟失保護的解決方案
中國傳媒大學(xué)南廣學(xué)院 薛雁丹 卜言彬 陳 婷 楊 艷 楊文娟
為實現(xiàn)數(shù)據(jù)庫長距離零數(shù)據(jù)丟失保護和可用性,提出了實時遠程同步的解決方案。Oracle Active Data Guard(ADG)實時遠程同步解決方案實現(xiàn)零數(shù)據(jù)丟失保護擴展至位于主數(shù)據(jù)庫任意距離的一個或多個備用數(shù)據(jù)庫,并且不會因此影響性能,避免核心的任務(wù)關(guān)鍵型的Oracle數(shù)據(jù)庫發(fā)生單點故障,而且成本和復(fù)雜性最小,從而避免在數(shù)據(jù)保護上做出讓步。
零數(shù)據(jù)丟失;遠程同步;實時處理
ADG與 Oracle 數(shù)據(jù)庫深度集成,完全專注于實時數(shù)據(jù)保護和可用性,是Oracle數(shù)據(jù)庫發(fā)生單點故障的最全面的全庫級數(shù)據(jù)復(fù)制解決方案,它具備數(shù)據(jù)保護和自動檢測恢復(fù)的雙重能力。如果主數(shù)據(jù)庫因各種原因?qū)е虏豢捎?那么,通過ADG解決方案不僅可提供零數(shù)據(jù)丟失保護,還可實現(xiàn)近似即時恢復(fù)。但是,當主數(shù)據(jù)庫與備用數(shù)據(jù)庫相隔很遠時,任何實時同步復(fù)制方法都會對數(shù)據(jù)庫的性能產(chǎn)生影響,這使得實現(xiàn)零數(shù)據(jù)丟失保護變得不切實際,而ADG 遠程同步可將零數(shù)據(jù)丟失保護擴展到和主數(shù)據(jù)庫任意距離的備用數(shù)據(jù)庫上。
數(shù)據(jù)庫業(yè)務(wù)連續(xù)性是IT系統(tǒng)連續(xù)性的核心,但由于種種原因可能導(dǎo)致數(shù)據(jù)庫系統(tǒng)不可用。因此,在不影響生產(chǎn)數(shù)據(jù)庫性能前提下,零數(shù)據(jù)丟失保護尤為重要。
2.1 Data Guard(DG)零數(shù)據(jù)丟失保護
要實現(xiàn)零數(shù)據(jù)丟失保護,要求生產(chǎn)數(shù)據(jù)庫與備用數(shù)據(jù)庫之間必須進行同步通信,DG通常采用最高可用性保護模式和重做同步傳輸相結(jié)合的配置方式來實現(xiàn)。采用這種方案后,用戶在主數(shù)據(jù)庫中提交事務(wù)時,Oracle 會生成重做并寫入本地聯(lián)機日志文件,同時, DG傳輸服務(wù)立即從主庫日志緩沖區(qū)中將相同的重做傳輸?shù)絺溆脭?shù)據(jù)庫,并將其寫入備用重做日志文件,然后返回寫入成功的確認信息給主庫。即同步傳輸需要主數(shù)據(jù)庫等待本地和遠程日志文件寫入完成,然后再向應(yīng)用程序發(fā)送提交成功通知,一個交易事務(wù)才算完成。然而,隨著主庫與備用庫之間距離的增加,確認遠程日志文件寫入所需的總往返時間可能會對主庫的性能影響非常大,以至于實現(xiàn)零數(shù)據(jù)丟失保護變得不切實際。
2.2 ADG遠程同步零數(shù)據(jù)丟失保護
ADG遠程同步可實現(xiàn)零數(shù)據(jù)丟失故障快速切換至遠程的備用數(shù)據(jù)庫。遠程同步在距離主數(shù)據(jù)庫可接受的范圍內(nèi)部署一個遠程同步實例實現(xiàn)同步傳輸。遠程同步實例是輕量級的 Oracle實例,僅包含控制文件、Spfile、口令文件和備用日志文件,只需少量的計算和內(nèi)存資源。遠程同步實例通過同步傳輸從主數(shù)據(jù)庫接收重做日志,并立即通過異步傳輸方式將該重做轉(zhuǎn)發(fā)至最多29 個遠程備用數(shù)據(jù)庫,如圖1所示。
圖1 ADG遠程同步架構(gòu)
利用遠程同步,實現(xiàn)跨廣域網(wǎng)零數(shù)據(jù)丟失保護和故障切換。另外,遠程同步實例可分流主庫的負載壓力,如解析遠程備用庫所接收的歸檔日志中的差異、多個備用庫的重做傳輸開銷和重做壓縮等。
根據(jù)應(yīng)用場景和高可用的需要,可以采用不同的遠程同步部署架構(gòu),以下介紹三個常見的遠程同步架構(gòu)。
3.1 單遠程同步實例配置方案
這是最基本的配置方案,使用一個遠程同步實例將主數(shù)據(jù)庫零數(shù)據(jù)丟失故障切換擴展至遠程備用數(shù)據(jù)庫,如圖2所示。通常情況下,遠程同步實例與主數(shù)據(jù)庫部署在城域內(nèi)的不同位置,以免受站點的故障影響正常的容災(zāi)系統(tǒng)。遠程同步實例即使部署在同一個數(shù)據(jù)中心內(nèi)部仍有一定的好處,除完全站點故障之外,主數(shù)據(jù)庫所有無法恢復(fù)的故障都可快速地進行零數(shù)據(jù)丟失切換到備用庫。
圖2 單遠程同步實例配置
在本配置方案中,如果遠程同步實例發(fā)生故障、中斷服務(wù), ADG可自動使用異步傳輸方式直接傳輸重做到遠程的備用數(shù)據(jù)庫,以實現(xiàn)接近零的數(shù)據(jù)丟失保護。一旦遠程同步實例修復(fù)并重新建立連接,ADG自動恢復(fù)為零數(shù)據(jù)丟失保護模式。
3.2 采用高可用的遠程同步實例配置方案
高可用的遠程同步配置方案建立在上一方案之上,它以HA的方式增加了第二個遠程同步實例作為第一個遠程同步實例的備用目標,如圖3所示。假如正在服務(wù)的遠程同步實例發(fā)生故障中斷,則ADG自動地切換到另一個遠程同步實例,最大程度地降低了對零數(shù)據(jù)丟失保護的中斷。
圖3 零數(shù)據(jù)丟失保護的 HA 配置
HA的切換通常需要幾秒鐘的時間。也可采用Oracle RAC部署遠程同步實例,即RAC的健康節(jié)點可快速接管服務(wù),可消除或盡量縮短遠程同步中斷期間配置低于零數(shù)據(jù)丟失保護級別的時間段。
角色轉(zhuǎn)換之后的零數(shù)據(jù)丟失保護配置方案
當故障發(fā)生后,主備數(shù)據(jù)庫角色轉(zhuǎn)換,為快速恢復(fù)零數(shù)據(jù)丟失服務(wù)水平,建議采用本配置方案。本方案建立于方案1和方案2之上,即在遠程備用數(shù)據(jù)庫的城域距離內(nèi)增加一個遠程同步實例(圖4)。當備用數(shù)據(jù)庫處于備用角色時,這個遠程同步實例處于Standby狀態(tài)。當備用數(shù)據(jù)庫轉(zhuǎn)換為主數(shù)據(jù)庫角色時,該遠程同步實例轉(zhuǎn)為活動狀態(tài),允許零數(shù)據(jù)丟失故障切換至新的備用數(shù)據(jù)庫(原主數(shù)據(jù)庫)。當原主數(shù)據(jù)庫處于備用角色時,其本地的遠程同步實例變?yōu)榉腔顒訝顟B(tài)。