出自《SQLSERVER2012實施與管理實戰指南》
SQLSERVER故障轉移 P41事實上,從sqlserver2000到sqlserver2008 R2,sqsrvres.dll中定義的looksalive和isalive方法都是類似的。具體來講:looksalive:通過服務器控制管理器(service control manager,SCM)來檢查SQLSERVER服務在活躍節點是否處于“啟動狀態”。根據SQLSERVER資源的Advanced Polices選項卡中的設置,這個檢查默認是每5秒做一次isalive:根據SQLSERVER資源的Advanced Polices選項卡中的設置,這個檢查默認是60秒做一次也就是說每12次Looksalive檢查就會伴隨一個Isalive檢查。SQLSERVER需要Isalive檢查是因為即使SQLSERVER服務是正在運行狀態也不能說明SQLSERVER就可以良好地響應應用程序的請求。有時候可能整個SQLSERVER已經掛起了,但是服務的狀態還是“啟動”,所以需要Isalive Check來進一步檢查SQLSERVER的狀態。此外,一旦lookalive檢查的結果失敗,Windows群集服務就會立刻觸發Isalive檢查在SQL2012之前,Isalive所做的事情很簡單,Windows群集服務會使用TCP/ip或者命名管道來連接SQLSERVER群集實例。連接上之后,運行一句命令:“select @@servername”。如果成功返回結果那么Isalive檢查就成功了。從第一次成功執行select @@servername開始,Isalive檢查就會根據設定的時間間隔,使用這個連接不斷地重復檢查工作如果連接不上SQLSERVER群集實例或者語句運行失敗,那么Isalive檢查失敗。此時Windows群集會再做3~5次(Windows的版本和設置不同)Isalive檢查。如果這些檢查都失敗,就要根據Policies選項卡中的設置開始進行故障轉移你可以把故障轉移簡單地想象成SQLSERVER服務的重啟,所不同的是故障轉移的時候,SQLSERVER服務是在當前節點停止的,然后在另一個節點上啟動起來。因此故障轉移所花費的時間和SQLSERVER服務重啟的時間是差不多的。當然共享磁盤和虛擬網絡名等資源在另一個節點上線也會額外花費一點時間,不過在大多數情況下這部分時間是比較短的。另外由于故障轉移一般是意外發生的,所以你要預期SQLSERVER切換到新節點以后,還需要一段時間來做數據庫的修復前面也提到過,除了SQLSERVER和SQLSERVER AGENT以外,SQLSERVER資源組里可能還會有Analysis Service資源。但是和SQLSERVER和SQLSERVER AGENT所不同的是,Analysis Service資源沒有自己的資源類型,也就是說他是一個GENERIC SERVICE(通用服務)。Analysis Service的isalive和lookalive檢查就使用的是clusres.dll中定義的通用服務檢查方法。SQLSERVER的諸多組件和服務中,SQLSERVER 、SQLSERVER AGNET、ANALYSIS SERVICE三個服務無論是有自己專屬的資源類型還是通用服務,都是被設計為可以通過resource dll形成群集資源。這種類型的服務被稱為cluster-aware。SQLSERVER還有很多其他資源,比如:SQL broswer、Reporting Service等,他們被設計為無法通過任何resource dll在Windows群集中形成資源,所以他們不是cluster-aware的。對于不是cluster-aware的服務,即使被安裝在了群集的節點上,Windows依舊把他當成是安裝在了一個單機環境中,他無法具有故障轉移的功能。需要提一下的是Integration Services是一個比較特別的服務。Integration Services本身不是cluster-aware的服務,但是用戶可以通過一些步驟手動把他配置成一個群集資源。但是這樣配置出來的Integration Services群集資源不是一個真正的資源,是不具有自動故障轉移功能的,因此微軟并不推薦這麼做。更多信息,參考http://msdn.microsoft.com/en-us/library/ms345193.aspxConfiguring Integration Services in a Clusterhttp://msdn.microsoft.com/kb/9421762.2.4 SQLSERVER群集的拓撲結構最簡單的SQLSERVER故障轉移群集拓撲結構就是“活躍/非活躍 ”群集,這種結構下群集有兩個節點,用戶在群集上安裝一個SQLSERVER群集實例,該實例的“可能的所有者(Possible Owners)”包含上述兩個節點。這樣任意時間只有一個節點上有SQLSERVER服務在運行,而另一個節點就是“非活躍”節點。這種配置優點就是結構簡單明了,無論SQLSERVER運行在哪個節點上都能獲得同樣的性能表現。缺點是總有一個節點處于空閑狀態,浪費了50%的硬件資源新聞熱點
疑難解答