濮阳杆衣贸易有限公司

主頁 > 知識庫 > sql server2005實現(xiàn)數(shù)據(jù)庫讀寫分離介紹

sql server2005實現(xiàn)數(shù)據(jù)庫讀寫分離介紹

熱門標(biāo)簽:滄州營銷外呼系統(tǒng)軟件 舞鋼市地圖標(biāo)注app 電銷機器人虛擬號碼 松原導(dǎo)航地圖標(biāo)注 沈陽智能外呼系統(tǒng)代理 海南自動外呼系統(tǒng)價格 創(chuàng)業(yè)電銷機器人 九鹿林外呼系統(tǒng)怎么收費 浙江地圖標(biāo)注
Internet的規(guī)模每一百天就會增長一倍,客戶希望獲得7天×24小時的不間斷可用性及較快的系統(tǒng)反應(yīng)時間,而不愿屢次看到某個站點“Server Too Busy”及頻繁的系統(tǒng)故障。

隨著業(yè)務(wù)量的提高,以及訪問量和數(shù)據(jù)流量的快速增長,網(wǎng)絡(luò)各個核心部分的處理性能和計算強度也相應(yīng)增大,使得單一設(shè)備根本無法承擔(dān)。在此情況下,如果扔掉現(xiàn)有設(shè)備去做大量的硬件升級,必將造成現(xiàn)有資源的浪費,而且下一次業(yè)務(wù)量的提升,又將導(dǎo)致再一次硬件升級的高額成本投入。于是,負(fù)載均衡機制應(yīng)運而生。

對于負(fù)載均衡,筆者經(jīng)常接觸的當(dāng)屬Oracle的負(fù)載均衡機制。下面,我們先簡單了解Oracle的負(fù)載均衡的實現(xiàn)方案。

Real Application Clusters是雙機并行服務(wù)器(8i及以前版本稱作Oracle Parallel Server,OPS),用來在集群環(huán)境下實現(xiàn)多機共享數(shù)據(jù)庫,以保證應(yīng)用的高可用性,同時可以自動實現(xiàn)并行處理及均分負(fù)載,還能實現(xiàn)數(shù)據(jù)庫在故障時的排錯和無斷點恢復(fù)。它可以自動進(jìn)行負(fù)載平衡、故障修復(fù)和規(guī)劃停機時間,以支持高可用性應(yīng)用程序。若并行服務(wù)器中某節(jié)點失效,透明的應(yīng)用程序容錯能夠把用戶自動轉(zhuǎn)接到另一節(jié)點上繼續(xù)運行,應(yīng)用程序在用戶沒有察覺的情況下繼續(xù)執(zhí)行。這使周期性和非周期性發(fā)生故障的系統(tǒng)增大了連續(xù)可用性。進(jìn)程的失效可以完全透明地轉(zhuǎn)移到另一節(jié)點上去,通過適當(dāng)?shù)嘏渲?,可以指定所有查詢都在客戶端進(jìn)行緩存,這樣它們便可以在轉(zhuǎn)移后的節(jié)點上重新設(shè)置。

下面我們重點介紹Sql Server 2005是如何實現(xiàn)負(fù)載均衡的。

Sql Server 2005的新特性

端到端拓?fù)涞氖聞?wù)性復(fù)制

SQL Server 2005對端到端(P2P)拓?fù)浣Y(jié)構(gòu)上事務(wù)性的復(fù)制加強了支持。P2P的拓?fù)浣Y(jié)構(gòu)支持無限的發(fā)布服務(wù)器,它們彼此之間可以互相交換事務(wù)。

P2P拓?fù)涫荢QL Server的一個巨大進(jìn)步?,F(xiàn)在,多端點服務(wù)器可以更改數(shù)據(jù),并且向其他的發(fā)布者復(fù)制事務(wù)。這就是說,訂閱服務(wù)器不再被限制在主要的報告環(huán)境中,可以通過事務(wù)性負(fù)載全球共享的方式將服務(wù)器分布開來。當(dāng)用戶的數(shù)量增加的時候,只要簡單地向這個群體中添加服務(wù)器即可。

除了將負(fù)載分布之外,這個拓?fù)浣Y(jié)構(gòu)還增加了可用性。如果任何一個點的服務(wù)器不可達(dá),則池中其他服務(wù)器就會共享這個負(fù)載,因為每個服務(wù)器都有其他所有服務(wù)器上可獲得的全部數(shù)據(jù)集合。

數(shù)據(jù)庫鏡像和快照

SQL Server 2005引入了數(shù)據(jù)庫鏡像的概念,來幫助獲得高可用性。特別提醒的是,只要它正式發(fā)布了,數(shù)據(jù)庫鏡像就可以在SQL Server 2005上使用。然而,只有到SQL Server 2005 Service Pack 1才會支持鏡像。

數(shù)據(jù)庫快照是SQL Server 2005中引入的另一項特性??煺帐悄骋粋€時間點上的數(shù)據(jù)庫的克隆。只要對鏡像數(shù)據(jù)庫進(jìn)行了快照,就可以讓用戶查詢快照??煺盏纳赏ǔV恍枰獛酌腌?,因為它實際上在這個過程中并沒有拷貝任何數(shù)據(jù)。因此,要把負(fù)載分布到主服務(wù)器和備用服務(wù)器上,就可以將數(shù)據(jù)庫做鏡像,然后階段性地對備份服務(wù)器進(jìn)行快照。而且還可以使用快照在主服務(wù)器上進(jìn)行報告。

軟件實現(xiàn)SQL Server 2005的負(fù)載均衡

中間層

實現(xiàn)數(shù)據(jù)庫的負(fù)載均衡技術(shù),首先要有一個可以控制連接數(shù)據(jù)庫的控制端。在這里,它截斷了數(shù)據(jù)庫和程序的直接連接,由所有的程序來訪問這個中間層,然后再由中間層來訪問數(shù)據(jù)庫。這樣,我們就可以具體控制訪問某個數(shù)據(jù)庫了,然后還可以根據(jù)數(shù)據(jù)庫的當(dāng)前負(fù)載來調(diào)整每次連接到哪個數(shù)據(jù)庫。好處在兩個方面:首先,它成功地將數(shù)據(jù)庫放到了內(nèi)網(wǎng)之中,更好地保護(hù)了數(shù)據(jù)庫的安全性。如果數(shù)據(jù)庫也在公網(wǎng)上,1433端口是很容易被攻擊的,所以要保護(hù)數(shù)據(jù)庫與之的連接,就用到了中間層。它可以將數(shù)據(jù)庫更加好地保護(hù)在內(nèi)網(wǎng)。其次,連接數(shù)據(jù)庫的所有連接都可以控制,更方便DBA對數(shù)據(jù)的管理,看哪些連接更耗費數(shù)據(jù)庫資源,以便更好地優(yōu)化代碼。

但是,也有兩點要注意:第一,必須要做成Windows的服務(wù)程序。Windows發(fā)展到今天,如果以一個集成的大系統(tǒng)來講,做成服務(wù)程序更加穩(wěn)定,也更加安全,這樣做即使用戶不登錄機器,也可以使用。第二,必須要使用多個中間層。從中間層的作用可以看出,它承接了數(shù)據(jù)庫的所有連接,所以,一旦出了問題,就會導(dǎo)致整個系統(tǒng)癱瘓。所以做多個中間層是必要的,這樣,如果一個壞了可以登錄到另一個。

實現(xiàn)多據(jù)庫數(shù)據(jù)同步

中間層有了,下一步的工作是設(shè)置構(gòu)建數(shù)據(jù)庫集群。對于負(fù)載均衡,最重要的就是所有服務(wù)器的數(shù)據(jù)都是同步的。這是一個集群所必需的,因為,如果數(shù)據(jù)不同步,那么用戶從一臺服務(wù)器讀出的數(shù)據(jù),就有別于從另一臺服務(wù)器讀出的數(shù)據(jù),這是不能允許的。所以必須實現(xiàn)一個數(shù)據(jù)庫的數(shù)據(jù)同步。這里設(shè)置一個用于寫入的數(shù)據(jù)庫,設(shè)置兩個用于讀出的數(shù)據(jù)庫,因為據(jù)統(tǒng)計,一般來講,70%的數(shù)據(jù)庫操作為讀操作。

首先,在寫入數(shù)據(jù)庫上做一個發(fā)布服務(wù)器,主要基于SQL Server 2005的復(fù)制技術(shù),將即將用到的表都選上。注意,在連接上要選用模擬用戶,然后共享時選擇sa用戶,這樣就可以將數(shù)據(jù)共享了。

其次,在兩個讀服務(wù)器上做訂閱服務(wù),要注意同樣的事項,這樣一個“一寫兩讀”的數(shù)據(jù)庫集群就完成了。

數(shù)據(jù)庫的安全備份

在一個大的系統(tǒng)中,系統(tǒng)的無故障性是很重要的,但是在剛才的系統(tǒng)下,如果用于寫的服務(wù)器突然壞了,整個系統(tǒng)就會出現(xiàn)問題,所以,再做個備份是必要的。

數(shù)據(jù)庫鏡像是SQL Server 2005大力推出的,它就是要實現(xiàn)數(shù)據(jù)庫的安全轉(zhuǎn)移,所以需要再單獨拿出一臺機器來做備份服務(wù)器,將完全鏡像寫入該服務(wù)器,這樣,即使寫入服務(wù)器壞了,它也可以自動轉(zhuǎn)移到備份服務(wù)器上來,保證不影響用戶。

這實際上就相當(dāng)于實現(xiàn)了對服務(wù)器的容災(zāi)管理,但是有一點需要注意,在這種鏡像的體系中,必須要有一臺服務(wù)器作為監(jiān)視服務(wù)器,以便察看哪臺服務(wù)器壞了,用以在機器出錯之后迅速調(diào)整。

回傳數(shù)據(jù)庫的狀態(tài)

數(shù)據(jù)庫服務(wù)器均已配完,整體的機器集群架構(gòu)已經(jīng)構(gòu)建,接下來的工作就是配置程序。

首先,在讀和寫的服務(wù)器都放上一個監(jiān)控程序,它同樣必須是Windows的服務(wù),這樣更穩(wěn)定;其次,它可以設(shè)定成每隔30秒或者一定時間,將服務(wù)器的CPU、內(nèi)存、網(wǎng)卡流量和當(dāng)前數(shù)據(jù)庫狀態(tài)等信息發(fā)送回來。在這里需要設(shè)置一個權(quán)值,用以衡量CPU、內(nèi)存利用率等信息的各自比例。在這個系統(tǒng)中,建議以CPU利用率為準(zhǔn)。

中間層實現(xiàn)的負(fù)載均衡

到此為止,所有的準(zhǔn)備工作都已完成,包括數(shù)據(jù)庫的建立和配置,中間層的位置,下面所作的就是用軟件來實現(xiàn)這個負(fù)載均衡。

首先,當(dāng)一個用戶有數(shù)據(jù)庫請求時,先判斷是讀還是寫,如果是寫的話,就直接返回寫入服務(wù)器,這樣當(dāng)寫服務(wù)器寫完數(shù)據(jù)以后,差不多可以在3秒內(nèi)返回其他兩臺機器。

其次,當(dāng)遇到一個讀的請求時,根據(jù)監(jiān)控返回來的數(shù)據(jù)判斷,根據(jù)剛才的權(quán)值返回一個當(dāng)前最空閑的機器。需要注意的是,這時最好做一個記錄器,用以保持一段時間的數(shù)值,可以讓管理員自行設(shè)定,更好地做到幾臺數(shù)據(jù)庫的壓力平衡。

最后,如果為主的寫入服務(wù)器突然壞掉,程序可以自動把備份的服務(wù)器切換過來,用剛才的備份服務(wù)器當(dāng)作寫服務(wù)器,然后做一個報警系統(tǒng),用以通知管理員。同樣,當(dāng)監(jiān)控服務(wù)器發(fā)現(xiàn)其他兩臺讀服務(wù)器壞掉時,也會自動通知管理員,來處理服務(wù)器的異常情況,這樣就可以保證系統(tǒng)的穩(wěn)定運行,而且易于管理和維護(hù)。

總之,用軟件和微軟SQL Server 2005的一些新技術(shù),可以很輕松地實現(xiàn)負(fù)載均衡,這樣不但可以不用硬件來實現(xiàn),方便管理員的操控,更有利于DBA管理數(shù)據(jù)庫,及時發(fā)現(xiàn)問題。

您可能感興趣的文章:
  • SQL Server 2005附加數(shù)據(jù)庫時Read-Only錯誤的解決方案
  • sql server2012附加數(shù)據(jù)庫問題解決方法
  • Sqlserver 2005附加數(shù)據(jù)庫時出錯提示操作系統(tǒng)錯誤5(拒絕訪問)錯誤5120的解決辦法
  • sqlserver附加.mdf權(quán)限問題解決
  • MSSQL2005在networkservice權(quán)限運行附加數(shù)據(jù)庫報(Microsoft SQL Server,錯誤: 5120)
  • SQL SERVER 2008 無法附加數(shù)據(jù)庫的解決方法
  • mssql server 數(shù)據(jù)庫附加不上解決辦法分享
  • SQLServer 附加數(shù)據(jù)庫后出現(xiàn)只讀或失敗的解決方法
  • mssql server .ldf和.mdf的文件附加數(shù)據(jù)庫的sql語句
  • SQL Server 數(shù)據(jù)庫分離與附加 就這么簡單!

標(biāo)簽:咸寧 西藏 商洛 日喀則 寶雞 公主嶺 臺灣

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《sql server2005實現(xiàn)數(shù)據(jù)庫讀寫分離介紹》,本文關(guān)鍵詞  sql,server2005,實現(xiàn),數(shù)據(jù)庫,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《sql server2005實現(xiàn)數(shù)據(jù)庫讀寫分離介紹》相關(guān)的同類信息!
  • 本頁收集關(guān)于sql server2005實現(xiàn)數(shù)據(jù)庫讀寫分離介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    遂溪县| 华阴市| 木兰县| 扶沟县| 卓尼县| 永川市| 缙云县| 铁力市| 金门县| 芜湖县| 古交市| 吴桥县| 泗阳县| 永新县| 山阴县| 华容县| 靖江市| 温泉县| 安溪县| 麻城市| 治多县| 垫江县| 法库县| 正阳县| 大化| 孙吴县| 南安市| 敦化市| 德兴市| 哈密市| 洛宁县| 海宁市| 三亚市| 长岛县| 江华| 宜春市| 格尔木市| 察雅县| 仙游县| 徐州市| 泸州市|