SQL Server 2005負載均衡部分性能分析
前文,關于SQL Server 2005的負載均衡的一些特點我們已經了解了一些,在這里,我們再來補充一些內容。整個SQL Server 2005軟件系統中包含的服務有很多,在這里我們主要是介紹一下負載均衡相關的性能。
數據庫的安全備份
在一個大的系統中,系統的無故障性是很重要的,但是在剛才的系統下,如果用于寫的服務器突然壞了,整個系統就會出現問題,所以,再做個備份是必要的。
數據庫鏡像是SQL Server 2005大力推出的,它就是要實現數據庫的安全轉移,所以需要再單獨拿出一臺機器來做備份服務器,將完全鏡像寫入該服務器,這樣,即使寫入服務器壞了,它也可以自動轉移到備份服務器上來,保證不影響用戶。
這實際上就相當于實現了對服務器的容災管理,但是有一點需要注意,在這種鏡像的體系中,必須要有一臺服務器作為監視服務器,以便察看哪臺服務器壞了,用以在機器出錯之后迅速調整。
回傳數據庫的狀態
數據庫服務器均已配完,整體的機器集群架構已經構建,接下來的工作就是配置程序。
首先,在讀和寫的服務器都放上一個監控程序,它同樣必須是 Windows的服務,這樣更穩定;其次,它可以設定成每隔30秒或者一定時間,將服務器的CPU、內存、網卡流量和當前數據庫狀態等信息發送回來。在這里需要設置一個權值,用以衡量CPU、內存利用率等信息的各自比例。在這個系統中,建議以CPU利用率為準。
中間層實現的負載均衡
到此為止,所有的準備工作都已完成,包括數據庫的建立和配置,中間層的位置,下面所作的就是用軟件來實現這個負載均衡。
首先,當一個用戶有數據庫請求時,先判斷是讀還是寫,如果是寫的話,就直接返回寫入服務器,這樣當寫服務器寫完數據以后,差不多可以在3秒內返回其他兩臺機器。
其次,當遇到一個讀的請求時,根據監控返回來的數據判斷,根據剛才的權值返回一個當前最空閑的機器。需要注意的是,這時最好做一個記錄器,用以保持一段時間的數值,可以讓管理員自行設定,更好地做到幾臺數據庫的壓力平衡。
最后,如果為主的寫入服務器突然壞掉,程序可以自動把備份的服務器切換過來,用剛才的備份服務器當作寫服務器,然后做一個報警系統,用以通知管理員。同樣,當監控服務器發現其他兩臺讀服務器壞掉時,也會自動通知管理員,來處理服務器的異常情況,這樣就可以保證系統的穩定運行,而且易于管理和維護。
總之,用軟件和微軟SQL Server 2005的一些新技術,可以很輕松地實現負載均衡,這樣不但可以不用硬件來實現,方便管理員的操控,更有利于DBA管理數據庫,及時發現問題。
圖1 數據庫分布示意圖