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