背景
資料庫是資訊化的基石,支撐著整個業務系統,發揮著非常重要的作用,被喻為“IT的心臟”。因此,讓資料庫安全、穩定、高效地執行已經成為IT管理者必須要面對的問題。資料庫在底層架構層面需要滿足以下幾點建設要求:安全和可靠:不能因為伺服器的軟硬體故障導致資料丟失和業務中斷;
容災:多資料中心間的資料同步,某一個資料中心出現故障後,可以在另一個資料中心快速拉起業務;
讀寫分離(報表分離):把介面程式、報表程式、整合平臺資料抽取、大資料運算等高消耗的查詢語句分離到備機執行,從而避免對主伺服器的效能消耗以及造成的阻塞和死鎖;
負載均衡:需要多臺伺服器同時負載併發請求,降低單臺伺服器的壓力,提升系統整體效能;
彈性擴充套件:透過增加伺服器的方式應對資料量或者訪問量增加帶來的效能瓶頸。
Moebius(莫比斯)
Moebius資料庫多活叢集是格瑞趨勢為SQL Server資料庫研發的能夠同時滿足可用性、資料安全、容災、讀寫分離、負載均衡的一站式多活叢集。叢集的名字取自Moebius環,寓意無限擴充套件。
Moebius採用“share nothing”架構,每個節點的SQL Server服務獨立安裝,使用每個伺服器自己儲存介質內的資料庫檔案。不基於共享儲存裝置,也不基於磁碟映象等功能,透過SQL Server的日誌同步技術實現各節點中資料的一致性。在主節點寫入資料時會產生日誌,Moebius捕獲並傳輸日誌到其他節點,並透過REDO技術把日誌轉換成資料。因此每個節點的SQL Server服務都是啟動的,資料都是“活”的。Moebius有實時和準實時兩種同步方式,不同的節點可以使用不同的同步方式。
Moebius 透過“網路心跳”及“仲裁機制”實現故障監控,當偵測到某節點發生故障並經過仲裁後,將此節點剝離出叢集,如果故障節點是主節點,則會進行自動故障轉移,重新選擇健康的節點作為主節點。節點故障恢復後會自動從主節點同步差異資料,同步完成後加入到叢集中。
Moebius的排程引擎支援連線級和SQL語句級兩種排程方式,透過規則的配置,在不改動或者少改動應用程式的前提下,透明的實現讀寫分離、負載均衡。
功能亮點
故障切換
-
多節點仲裁、資料夾仲裁、共享盤仲裁三種仲裁方式確保故障切換穩定準確;
-
每個節點都是活動的,故障切換時,輔助節點不需要經歷掛載磁碟、啟動例項、初始化資料庫等步驟,在10秒內可完成切換;
-
可以和告警系統對接,故障切換時及時通知系統運維人員。
資料同步
-
充分利用SQL Server特性,只同步日誌,不同步資料,同步資料量小,同步速度更快;
-
實時和準實時兩種同步方式,準實時同步方式支援惡劣網路條件下的斷點續傳;
-
同步過程中資料壓縮,頻寬消耗更小;
-
節點多活,可以隨時在輔助節點上執行查詢語句驗證資料同步。
讀寫分離&負載均衡
-
在叢集中透過配置規則的方式實現讀寫分離和負載均衡,不用或者少量修改應用程式;
-
規則支援正規表示式程式設計,可以從資料庫名稱、客戶端主機名、登入名等多種維度進行配置;
-
多臺伺服器負載均衡,同時負載併發請求,提升整體效能。
軟體價值
高可用:伺服器出現故障時,快速切換到正常節點,確保系統持續執行;
高資料安全:有多份一致的資料,確保資料足夠安全;
高使用者體驗:透過讀寫分離和負載均衡,提升系統效能,大幅減少阻塞、死鎖等問題,給業務系統帶來高效的使用者體驗;
高擴充套件性:當現有伺服器資源不夠時,可根據需要隨時新增伺服器節點,增加處理能力;
低系統總體擁有成本(TCO):
-
叢集不強制需要儲存裝置,可以用價效比更高的SSD盤,節省儲存裝置的開銷;
-
可以充分利用原有伺服器組建叢集,避免資源浪費;
-
可以用多個廉價PC伺服器代替單一的昂貴伺服器,節省硬體成本;
-
不需要再購買雙機、備份、容災等其它軟體。
常見問題
虛擬化\超融合平臺下還有做Moebius的必要嗎?
虛擬化或者超融合雖然能夠保障可用性和資料安全,但本質上提供的是一個單資料庫伺服器。如果有在SQL Server層面的容災或者讀寫分離、負載均衡的需求,就是有必要的。
Moebius相容虛擬化\超融合平臺嗎?
相容,Moebius的節點可以是物理機,也可以是虛擬機器,或者是兩者的組合。
做了Moebius後還有必要做儲存雙活嗎?
如果儲存裝置只是為了資料庫伺服器提供的,那麼是沒有必要再做雙活的,因為Moebius的資料就是多份的,既能保障資料安全,又可以隨時驗證資料的一致性。可以讓每個Moebius節點各接一個獨立的儲存裝置,這樣既節省了雙活模組的成本,又提升了磁碟空間的利用率。