在上一篇文章中,我們一起討論了為什麼會發生數據庫遷移,其中我們討論出主要原因是廠商出於控制成本,會由高成本的數據庫產品遷移到好用,成本又低的數據庫產品上。那麼,如果成本是可以控制的,是不是數據庫遷移就不會發生了呢?答案是否定的。即使成本可以控制,數據庫的遷移仍然會發生,這是為什麼呢?
因為,此時廠商要考慮的問題也發生了遷移,由處於成本的考慮改為考慮數據庫本身是否“給力”。那麼考慮的因素都有哪些呢?最主要的是考慮高可用性容災及故障恢復的能力。
高可用性的含義是什麼?
高可用性(High Availability)基本上表示用戶可以訪問數據,他們不在乎數據是從哪裡來的,他們只在乎能不能夠訪問。我們在書中做了一個比喻,高可用就像是安一個燈泡,你希望它能永遠不滅,你無須思考讓它發亮背後的原理。
那麼在後端,高可用性意味著什麼?
你必須確保能夠應對各種各樣的故障場景,你需要考慮到人為故障、硬件故障等等。然後你要構建冗余,把一切可能性都計算在內,向最好的目標努力,但同時要做最壞的打算。
高可用性的對比:
說到高可用的時候,各家都有話說:
微軟:當微軟用戶提到高可用性時,他們首先想到的會是AlwaysOn。這是SQL Server下代數據庫中的一大亮點。通過采訪微軟SQL Server中國研發中心 BPUM團隊的項目經理黃漢傑得知:微軟一直致力於研究高可用性,每一個版本或者增加了新的高可用性功能,又或者改進了現有的功能,在下一代產品中引進了一種新的技術AlwaysOn以提高其高可用性。
Oracle:當Oracle用戶提到高可用性時,他們首先想到的會是Oracle RAC。Scott Jesse表示RAC雖然是高可用性的基礎,但並不是Oracle的全部。除了RAC,你還可以使用像Data Guard這樣的產品來保護你的數據庫,這裡會用到所謂的閃回技術來確保備份計劃的完整性。
DB2:當DB2用戶提到高可用性時,他們首先想到的會是HADR。DB2說我們以圖說話:
注:處於備用角色的數據庫不能被訪問。
除了高可用性,大家還會考慮什麼呢?答:遷移風險性與安全性。
遷移是一定會有風險的,何如控制風險,讓風險盡量的小呢?黃漢傑先生表示,在遷移之前,我們都會有詳細的部署,以控制遷移中風險的產生。比如,通過鏡像的方法就可以最大限度的減少客戶不能訪問的時間;利用一些現有的遷移工具輔助遷移的進行。
遷移過程中,是否存在安全風險呢?帶著這個問題,我們再次找到黃漢傑先生。他表示,在遷移過程中,數據是處於安全狀態的。危險可以產生在遷移前或遷移後,但是在遷移過程中,是沒有安全風險的。就像之前說到的一樣,通過遷移前的一系列的部署,遷移過程中,安全是可以得到保證的。
與之前的文章合二為一的閱讀,會發現為什麼要進行數據庫遷移?說來很簡單,就三點理由。
降低成本。作為一名天生很摳的老板,你一定想降低成本之後再降低成本吧?這是你作為老板天生的本性。可是現在的數據庫已經被你搾得油干燈盡了。怎麼辦?遷移吧。
提升性能。作為老板,誰不想讓馬兒跑得又快又歡,當然,省錢是必須的。靈活的環境是必須要創建滴,業務目標也需要與IT基礎架構聯系起來,最重要的是,新的數據庫一定要能夠顯著提升企業價值。
減少風險。雖然馬克思說過,有300%的利潤,資本家就會冒著上斷頭台的危險去從事利潤。不過話說回來,做數據庫遷移,風險卻是最大的忌諱。咱做遷移,要是不能保證風險更低,誰干吶?新的可伸縮集群數據庫以及運行大量事務處理的應用程序,在減少管理和軟件成本的同時,也能企業降低系統的運行風險,何樂而不為啊。
附錄:
HA三種工作方式
(1)主從方式 (非對稱方式)
工作原理:主機工作,備機處於監控准備狀況;當主機宕機時,備機接管主機的一切工作,待主機恢復正常後,按使用者的設定以自動或手動方式將服務切換到主機上運行,數據的一致性通過共享存儲系統解決。
(2)雙機雙工方式(互備互援)
工作原理:兩台主機同時運行各自的服務工作且相互監測情況,當任一台主機宕機時,另一台主機立即接管它的一切工作,保證工作實時,應用服務系統的關鍵數據存放在共享存儲系統中。
(3)集群工作方式(多服務器互備方式)
工作原理:多台主機一起工作,各自運行一個或幾個服務,各為服務定義一個或多個備用主機,當某個主機故障時,運行在其上的服務就可以被其它主機接管。