SQL Server資料庫實現負載均衡

2021-08-25 19:39:07 字數 3943 閱讀 2108

微軟官方方案:

1、通過分庫分表、分庫磁碟io、share-disk架構

2、alwayson

第三方軟體服務:

1、dbtwin

2、負載均衡產品moebius for sql server

3、資料庫路由器軟體icx(提供ms sql server資料庫伺服器的集群功能,可以實現資料庫伺服器的並行處理、負載均衡和熱備份、實時切換。 )

硬體負載方案

1、f5 +資料池

當今世界是乙個資訊化的世界,我們的生活中無論是生活、工作、學習都離不開資訊系統的支撐。而資訊系統的背後用於儲存和處理最終結果的地方就是資料庫。因此資料庫系統就變得尤為重要,這意味著如果資料庫如果面臨問題,則意味著整個應用系統也會面臨挑戰,從而帶來嚴重的損失和後果。

如今「大資料」這個詞已經變得非常流行,雖然這個概念如何落地不得而知。但可以確定的是,隨著物聯網、移動應用的興起,資料量相比過去會有幾何級的提公升,因此資料庫所需要解決的問題不再僅僅是記錄程式正確的處理結果,還需要解決如下挑戰:

面對上述挑戰乙個顯而易見的辦法是將多個伺服器組成一組集群,這樣一來就可以充分利用每一台伺服器的資源並將客戶端負載分發到不同伺服器上,隨著應用程式負載的增加,只需要將新的伺服器新增到集群即可。

internet的規模每一百天就會增長一倍,客戶希望獲得7天×24小時的不間斷可用性及較快的系統反應時間,而不願屢次看到某個站點「server too busy」及頻繁的系統故障。

隨著業務量的提高,以及訪問量和資料流量的快速增長,網路各個核心部分的處理效能和計算強度也相應增大,使得單一裝置根本無法承擔。在此情況下,如果扔掉現有裝置去做大量的硬體公升級,必將造成現有資源的浪費,而且下一次業務量的提公升,又將導致再一次硬體公升級的高額成本投入。於是,負載均衡機制應運而生。

對於負載均衡,筆者經常接觸的當屬oracle的負載均衡機制。下面,我們先簡單了解oracle的負載均衡的實現方案。

下面我們重點介紹sql server 2005是如何實現負載均衡的。

sql server 2005的新特性

端到端拓撲的事務性複製

sql server 2005對端到端(p2p)拓撲結構上事務性的複製加強了支援。p2p的拓撲結構支援無限的發布伺服器,它們彼此之間可以互相交換事務。

p2p拓撲是sql server的乙個巨大進步。現在,多端點伺服器可以更改資料,並且向其他的發布者複製事務。這就是說,訂閱伺服器不再被限制在主要的報告環境中,可以通過事務性負載全球共享的方式將伺服器分布開來。當使用者的數量增加的時候,只要簡單地向這個群體中新增伺服器即可。

除了將負載分布之外,這個拓撲結構還增加了可用性。如果任何乙個點的伺服器不可達,則池中其他伺服器就會共享這個負載,因為每個伺服器都有其他所有伺服器上可獲得的全部資料集合。

資料庫映象和快照

sql server 2005引入了資料庫映象的概念,來幫助獲得高可用性。特別提醒的是,只要它正式發布了,資料庫映象就可以在sql server 2005上使用。然而,只有到sql server 2005 service pack 1才會支援映象。

資料庫快照是sql server 2005中引入的另一項特性。快照是某乙個時間點上的資料庫的轉殖。只要對映象資料庫進行了快照,就可以讓使用者查詢快照。快照的生成通常只需要幾秒鐘,因為它實際上在這個過程中並沒有拷貝任何資料。因此,要把負載分布到主伺服器和備用伺服器上,就可以將資料庫做映象,然後階段性地對備份伺服器進行快照。而且還可以使用快照在主伺服器上進行報告。

軟體實現sql server 2005的負載均衡

中間層

實現資料庫的負載均衡技術,首先要有乙個可以控制連線資料庫的控制端。在這裡,它截斷了資料庫和程式的直接連線,由所有的程式來訪問這個中間層,然後再由中間層來訪問資料庫。這樣,我們就可以具體控制訪問某個資料庫了,然後還可以根據資料庫的當前負載來調整每次連線到哪個資料庫。好處在兩個方面:首先,它成功地將資料庫放到了內網之中,更好地保護了資料庫的安全性。如果資料庫也在公網上,1433埠是很容易被攻擊的,所以要保護資料庫與之的連線,就用到了中間層。它可以將資料庫更加好地保護在內網。其次,連線資料庫的所有連線都可以控制,更方便dba對資料的管理,看哪些連線更耗費資料庫資源,以便更好地優化**。

但是,也有兩點要注意:第一,必須要做成windows的服務程式。windows發展到今天,如果以乙個整合的大系統來講,做成服務程式更加穩定,也更加安全,這樣做即使使用者不登入機器,也可以使用。第二,必須要使用多個中間層。從中間層的作用可以看出,它承接了資料庫的所有連線,所以,一旦出了問題,就會導致整個系統癱瘓。所以做多個中間層是必要的,這樣,如果乙個壞了可以登入到另乙個。

實現多據庫資料同步

中間層有了,下一步的工作是設定構建資料庫集群。對於負載均衡,最重要的就是所有伺服器的資料都是同步的。這是乙個集群所必需的,因為,如果資料不同步,那麼使用者從一台伺服器讀出的資料,就有別於從另一台伺服器讀出的資料,這是不能允許的。所以必須實現乙個資料庫的資料同步。這裡設定乙個用於寫入的資料庫,設定兩個用於讀出的資料庫,因為據統計,一般來講,70%的資料庫操作為讀操作。

首先,在寫入資料庫上做乙個發布伺服器,主要基於sql server 2005的複製技術,將即將用到的表都選上。注意,在連線上要選用模擬使用者,然後共享時選擇sa使用者,這樣就可以將資料共享了。

其次,在兩個讀伺服器上做訂閱服務,要注意同樣的事項,這樣乙個「一寫兩讀」的資料庫集群就完成了。

資料庫的安全備份

在乙個大的系統中,系統的無故障性是很重要的,但是在剛才的系統下,如果用於寫的伺服器突然壞了,整個系統就會出現問題,所以,再做個備份是必要的。

資料庫映象是sql server 2005大力推出的,它就是要實現資料庫的安全轉移,所以需要再單獨拿出一台機器來做備份伺服器,將完全映象寫入該伺服器,這樣,即使寫入伺服器壞了,它也可以自動轉移到備份伺服器上來,保證不影響使用者。

這實際上就相當於實現了對伺服器的容災管理,但是有一點需要注意,在這種映象的體系中,必須要有一台伺服器作為監視伺服器,以便察看哪台伺服器壞了,用以在機器出錯之後迅速調整。

回傳資料庫的狀態

資料庫伺服器均已配完,整體的機器集群架構已經構建,接下來的工作就是配置程式。

首先,在讀和寫的伺服器都放上乙個監控程式,它同樣必須是windows的服務,這樣更穩定;其次,它可以設定成每隔30秒或者一定時間,將伺服器的cpu、記憶體、網絡卡流量和當前資料庫狀態等資訊傳送回來。在這裡需要設定乙個權值,用以衡量cpu、記憶體利用率等資訊的各自比例。在這個系統中,建議以cpu利用率為準。

中間層實現的負載均衡

到此為止,所有的準備工作都已完成,包括資料庫的建立和配置,中間層的位置,下面所作的就是用軟體來實現這個負載均衡。

首先,當乙個使用者有資料庫請求時,先判斷是讀還是寫,如果是寫的話,就直接返回寫入伺服器,這樣當寫伺服器寫完資料以後,差不多可以在3秒內返回其他兩台機器。

其次,當遇到乙個讀的請求時,根據監控返回來的資料判斷,根據剛才的權值返回乙個當前最空閒的機器。需要注意的是,這時最好做乙個記錄器,用以保持一段時間的數值,可以讓管理員自行設定,更好地做到幾台資料庫的壓力平衡。

最後,如果為主的寫入伺服器突然壞掉,程式可以自動把備份的伺服器切換過來,用剛才的備份伺服器當作寫伺服器,然後做乙個報警系統,用以通知管理員。同樣,當監控伺服器發現其他兩台讀伺服器壞掉時,也會自動通知管理員,來處理伺服器的異常情況,這樣就可以保證系統的穩定執行,而且易於管理和維護。

總之,用軟體和微軟sql server 2005的一些新技術,可以很輕鬆地實現負載均衡,這樣不但可以不用硬體來實現,方便管理員的操控,更有利於dba管理資料庫,及時發現問題。

【參考文獻】

1、大資料時代下的sql server第三方負載均衡方案----moebius測試

2、資料庫集群技術漫談 -

SQL SERVER 資料庫實現

1.執行儲存過程和呼叫系統命令 execute 利用execute建立資料夾 啟用外圍配置 exec sp configure show advanced options 1 reconfigure exec sp configure xp cmd shell 1 reconfigure go2.呼...

SQL SERVER實現遠端資料庫鏈結

檢視當前鏈結情況 select from sys.servers 使用 sp helpserver 來顯示可用的伺服器 exec sp helpserver 刪除已經存在的某個鏈結 exec sp droplinkedsrvlogin 伺服器別名,null exec sp dropserver 伺服...

SQL SERVER實現遠端資料庫鏈結

select from sys.servers 使用 sp helpserver 來顯示可用的伺服器 exec sp helpserver 刪除已經存在的某個鏈結 exec sp droplinkedsrvlogin 伺服器別名,null exec sp dropserver 伺服器別名 使用sp ...