誤區(qū)10.數(shù)據(jù)庫鏡像在故障發(fā)生后,馬上就能發(fā)現(xiàn)
錯誤
市面上大肆宣傳數(shù)據(jù)庫鏡像技術(shù)可以在故障發(fā)生后,立即檢測到錯誤并進(jìn)行故障轉(zhuǎn)移。
但事實并不是這樣,檢測到故障發(fā)生的速度要取決于故障的類型。
檢測故障發(fā)生的最快的情況是,鏡像中的主體實例崩潰,從而鏡像服務(wù)器每秒一次的PING就無法返回值,從而知道主體服務(wù)器上不再有這個進(jìn)程偵聽相應(yīng)的TCP端口,這種情況下,鏡像服務(wù)器幾乎瞬間就能發(fā)現(xiàn)故障。
檢測到故障發(fā)生第二快的情況是主體服務(wù)器的操作系統(tǒng)崩潰。此時主體服務(wù)器不再響應(yīng)鏡像服務(wù)器的PING,從而在鏡像服務(wù)器PING超時后發(fā)現(xiàn)錯誤。這個超時的閾值默認(rèn)是10秒。但你也可以延長這個時間,這時,故障發(fā)生時間完全取決于PING的超時時間。
檢測到故障第三快的情況是是主體的日志磁盤不可用,此時SQL SERVER仍然會發(fā)起IO請求,但20秒IO等待無法寫入日志后發(fā)現(xiàn)日志磁盤不可用,最終40秒后宣告磁盤日志不可用,從而讓鏡像服務(wù)器上線。SQL SERVER是十分有耐心的,比如拿鎖來說,SQL SERVER對于鎖會無限等待,除非遇到死鎖才進(jìn)行干預(yù)。
還有,損壞頁有可能完全不會引發(fā)故障,如果查詢報了823或是824錯誤,鏡像技術(shù)完全不會關(guān)注(SQL SERVER 2008之后這個問題得到修復(fù): SQL Server 2008: Automatic Page Repair with Database Mirroring),如果數(shù)據(jù)回滾的過程中遇到823錯誤或是824錯誤,數(shù)據(jù)庫立刻會變?yōu)橘|(zhì)疑狀態(tài),也就是日志和數(shù)據(jù)不統(tǒng)一。這也會導(dǎo)致鏡像失敗。
你在圣經(jīng)上學(xué)習(xí)到的那些教條也不是需要完全遵循的嘛:-)
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。