關於SQLSERVER 2005的負載均衡

2021-09-05 21:40:24 字數 3632 閱讀 8526

sql server 2005仍然不直接地支援負載均衡——但是它為以前sql server版本中可用的所有負載均衡方法提供了令人激動的改善和支援。

a端到端拓撲的事務性複製

sql server 2005對端到端(p2p)的拓撲結構上的事務性的複製加強了支援。

sql server 2000支援雙向的複製,這就可以讓兩台伺服器同時對彼此發布和訂閱資料。伺服器可以更新同乙個共享資料,但是在這樣的拓撲中你被限制在兩台伺服器上。

p2p的拓撲結構支援無限的發布伺服器,他們彼此之間可以互相交換事務。當然,當參加的發布者的數量增加之後,事務性的延遲也就更大了。雖然在你的p2p拓撲結構中對節點的數量沒有理論上的限制,但是只有在某個確定的數字之下才可以提供可接受的效能。微軟推薦低於12個節點,以保證效能的優化。

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

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

b表分割

分布式分割槽檢視的工作方式在sql server 2005中與以前版本中的工作方式相同。然而,sql server 2005還支援表分割槽,這可以讓你通過分布讀寫負載到多個磁碟(或者磁碟陣列)上來改善效能。

對於分割槽表,你必須識別分割槽要用的是哪乙個卷,還有每個分割槽的範圍。例如,乙個標識欄位的數值可以定義分割槽範圍;乙個分區內可以允許從1到1百萬的數值,在第二個分區內可以允許1百萬到2百萬,以此類推。分割槽範圍可以通過分割槽函式來指定.然後你還必須建立乙個分割槽計畫來講分割槽函式中定義的每個範圍值對映到分離的檔案組上去。每個檔案組都可以放在不同的磁碟上。

c備份和重新儲存方面的改善(片段式重新儲存)d資料庫映象和快照

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

從本質上來說,映象的工作方式與日誌傳輸類似。

1、事務日誌記錄可以應用在兩個伺服器中的資料庫檔案上。與日誌傳輸不同的是,資料庫映象不需要你備份事務日誌,也不需要拷貝備份到備份伺服器上。

2、資料庫映象連續兩次寫入資料。與日誌傳輸不同,備份的資料庫必須保持在非恢復的模式中,這可以防止對資料的訪問,即使是唯讀的方式。然而,映象允許對備份資料庫進行快照。

資料庫快照是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管理資料庫,及時發現問題

摘自:

SQL Server2005複製實現

一 準備工作 1 在發布伺服器上建立乙個共享目錄,作為發布快照檔案的存放目錄。例如 在d 盤根目錄下建資料夾名為pub 2 設定sql 發布伺服器和訂閱伺服器均設定 步驟 開啟服務 控制面板 管理工具 服務 右擊sqlserver agent 屬性 登入 選擇 此帳戶 輸入或選擇第一步中建立的win...

SQL Server 2005完全解除安裝

sql server 2005的解除安裝是乙個非常頭疼的問題。我曾經嘗試過直接使用 新增或刪除程式 工具解除安裝 清除安裝目錄 刪除登錄檔內容等等各種方式綜合解除安裝,勉強成功。現在終於找到了乙個事半功倍的方法,多次嘗試,未有失敗,具體如下 第一種是微軟官方提供的工具 msicuu2.exe 微軟官...

SQLSERVER 2005 遞迴查詢

專案中有使用者組表usergroup如下 其中pid表示當前組的上級組 表資料如下 現在想查詢出頂級組 沒有上級組叫頂級組 a1組的所有子孫組id,sql如下 查詢子節點 with rtd1 as select id pid from usergroup rtd2 as select from rt...