多方位全面保護數據庫
前不久看了朋友發的一條微博,去聽了一場公開課,加深了我對數據庫保護方面的理解,主要是結合使用多種措施的意義。
盡管我從事數據保護和災備行業已經有幾個年頭,但更多時候是在向用戶解釋什么時候適合用備份?什么時候適合CDP(持續數據保護)?它們的區別,RPO和RTO等等。
簡注:
RPO——恢復點目標,即到故障發生前的數據丟失量
RTO——恢復時間目標,即恢復故障所用的時間
拿這兩個指標一衡量,就可以看出不同類型數據庫保護/備份技術的差別,類似的比較網上有許多,在此我只是以Oracle為代表簡單總結一下,如有不準確之處還請大家指正。
1.RMAN/備份軟件簡化跨平臺數據保護
為什么把Oracle RMAN和備份軟件歸為一類,因為后者目前主要的機制也是調用RMAN,或者導入/導出。作為一種定時的數據庫物理備份方式,基于RMAN的備份可以保證 恢復的有效性,以磁盤、磁帶介質為目標,做到完全、增量和差異備份,可以說是DBA和備份管理員所必須掌握的。
不足:首先是備份間隔——定時備份通常不適合在業務繁忙時進行,所以頻率不能太高,RPO相對較大;而且在有些數據量很大的用戶那里,每天一次夜 間備份窗口也不夠用了,可能要改為每周一次;出現故障時,需要一個恢復的過程,數據才能可用,所以RTO也不算短;RMAN要求數據庫必須打開歸檔日志。
如今隨著兩地三中心和雙活的流行,人們對RPO和RTO的要求不斷提高,備份看上去有些退居二線。但實際上它具有長期保留等方面的價值,還是很重要的一道保障。
代表產品:NetBackup、CommVault、戴爾NetVault(原Bakbone)等。
這些軟件都能支持Windows、Linux和Unix多種平臺,以及Oracle RAC集群。其中NetVault的一大特點是簡捷易用,通過圖形界面可以繞開RMAN命令的復雜性。

RMAN備份Oracle數據庫到重復數據刪除設備、遠程復制容災示意
1.5重復數據刪除設備這里我加了一個特殊的序號,該產品分類實際上要配合備份軟件或者RMAN來使用,目的是通過重復數據刪除等優化技術,節約存儲空間并加快備份的速度。站在數據庫保護的角度,不應完全算做一個單獨的技術路線。
代表產品:EMC DataDomain、戴爾PowerVault DR系列等。
2.數據庫物理復制高可用的低成本容災
如今DataGuard(DG)已經是Oracle一個免費的組件,它通過將redo log同步/異步傳送到本地或者遠程的數據庫服務器,再將對數據塊的操作進行到備庫。在11g之后的版本中,Active DataGuard(ADG)支持只讀方式掛載的活動備庫,不是完全的雙活。
注:ADG是需要額外收費的,DG不單獨收費。
同步方式的DataGuard基本上可以做到RPO=0,并且支持通過腳本來實現自動故障切換,RPO最短可達分鐘級水平,不過生產環境中通常還是手動切換,畢竟一旦誤切也挺麻煩的。

不足:由于傳送的是全量日志,對網絡帶寬和延時的要求較高。另外常用的DataGuard物理備庫,偶爾也會遇到由于Oracle某種bug或者其他原因,導致block邏輯損壞,而且這個損壞會傳輸到備庫,導致備庫也異常。
DataGuard比較適合低成本容災,非ADG不需要另外購買License,但也需要有人來監控、維護庫之間的復制狀態,或者說對DBA水平要求高一些,還是會產生一定成本。
注:備份可以理解為將某個時間點的數據狀態導出單獨保存;而數據庫軟件復制,只是建立了備庫,如果想回滾到歷史狀態都需要用數據庫自身的日志來實現。
3.數據庫邏輯復制隨時可用的靈活容災
代表產品:Oracle GoldenGate、戴爾SharePlex(原Quest)等。
它們的共同特點,都是從Oracle日志中解析出邏輯SQL語句,發送到備庫,并將這些SQL重新執行一遍,以達到數據復制的效果。由于解析出來 特定格式的文件,本身不需要傳遞所有日志,這類軟件在傳輸的過程中可能還增加了壓縮功能,所以邏輯復制通過網絡傳送的數據量顯著減少,對帶寬要求降 低,RTO最短可達1秒。
這類復制軟件應用相當靈活,支持異構跨平臺(比如在小型機和x86服務器之間),甚至跨不同數據庫復制。數據庫邏輯復制應用的場景包括數據遷移、 多庫合并、容災等方面,能夠做到雙活雙寫實時可用,只是備庫做不到與主庫之間的嚴格同步一致(會有一點滯后)。因此不需要數據庫的切換,只要做好站點的仲 裁并在上層應用切換即可。

數據庫邏輯復制流程示意
不足:正是因為靈活,邏輯復制有時沒有redo log的物理復制來的可靠,因此有的DBA朋友提出它并不適合所有的容災需求。另外,復制的對象是表,因此要求DBA必須參照主庫提前規劃好備庫,增加了 日常維護的工作量。還有就是價格,這類軟件通常的銷售方式是按照參與復制的節點數/CPU插槽來計算,所以購買成本不菲。
曾有業內資深人士表示,“SharePlex在國內的支持響應速度比較快,以前他們在某個用戶的環境中遇到讀歸檔日志慢的情況,原廠開發人員1天內就解決了這個bug。相比之下,有的廠商在國內的服務主要是第三方來做,原廠工程師來了有時解決不了問題”。
4.存儲陣列的快照和復制改善的存儲經濟性
磁盤/閃存陣列提供的本地、遠程復制功能,被稱為底層存儲(數據塊級)的容災保護。在經過LUN的初始同步之后,只需要繼續復制數據增量/變化量即可。該技術配置簡單,以邏輯盤為單位,而無需關注到具體的應用數據內容。
存儲級復制,容災端陣列上的LUN可以隨時掛載到備用數據庫服務器使用,根據操作的自動化程度,RTO可達分鐘級。同步復制(鏡像)的RPO接近零,但需要裸光纖,并且一般距離不超過50公里;異步復制RPO通常不短于5分鐘。

遠程復制
不足:陣列復制只負責維護源端存儲和目標端存儲之間的一致性,而上面數據的有效性(比如數據庫是否能正常打開)則不負責。因此該技術許多時候要結合快照一同使用。
快照是一種邏輯數據保護方式,它相當于在一個LUN上增加了時間點數據狀態回滾/掛載的功能。為了實現應用數據的有效一致性,有些高級快照功能支 持主機端代理程序,比如在快照之前通知Oracle將內存中臟數據寫盤,短時暫停I/O等快照完成再恢復。此外,對于應用數據在多個LUN之間的同步一 致,比如Oracle數據文件、日志文件等放在不同磁盤的情況,快照還需要支持一致性組功能,以保證它們在同一時間點創建快照。
快照能在很短的時間內回滾到歷史點,或者直接生成即時數據回放(或稱直接掛載、瘦克隆),需要人工干預但RTO也較短。帶有快照的復制,能夠更好地與應用結合。

高級快照功能
不足:不同陣列的快照技術水平,決定了對性能影響和磁盤空間的占用也不相同,單一LUN/整個系統的快照數量通常也會做出限制。因此默認就打開或 者推薦用戶使用快照的存儲廠商并不多,比如戴爾SC(Compellent)和NetApp FAS系列。在存儲高壓力寫入的情況下,即使有專門的一致性保證機制,還是有一定幾率出現快照數據不可用的情況,這有點類似于主機掉電對數據庫的影響。
戴爾SC系列得益于原生的底層存儲空間虛擬化管理,在單一存儲系統上支持高達16000個Replay快照,可短至1分鐘間隔達到準CDP的效 果。并獨創了根據策略將快照數據轉換為不同RAID級別(如RAID 10 to RAID 5/6)來節省空間,或者遷移到廉價存儲層來降低成本。
對于快照、異步復制和同步復制功能,有些陣列品牌需要購買License,有的則包含在基礎功能中。
小結戴爾一站式解決方案 構建多維度屏障
正如那位數據庫專家朋友有感而發:“Oracle的備份、容災不能全部依賴物理DataGuard容災。因此在條件允許情況下,建議增加物理備份 和邏輯容災。”這里的物理備份就是我們介紹的第1類——RMAN/備份軟件;邏輯容災則是第3類——數據庫邏輯復制軟件;我認為第4類——存儲陣列的快照 和復制也可以作為一種補充。這三類產品戴爾全部都有,而且在技術上還都是屬于廣受好評的,能夠為用戶提供一站式解決方案。
至于同時應用多重數據保護技術是否復雜?“取決客戶對于數據安全的重視程度”。本文我們只是拿Oracle來舉例,對于其它類型數據庫也可以作為一個參考。
</div>