新手學安裝SQL Server 2008「容錯移轉叢集(Failover Cluster)」(10)

by Derrick 27. 十二月 2011 17:26

前言

在前一期文章中,介紹了變更「節點伺服器」的IP位址、變更「容錯移轉叢集伺服器」的IP位址、變更「分散式交易協調器」的IP位址,以及變更「SQL Server容錯移轉叢集伺服器」的IP位址等程序,以及重新命名SQL Server容錯移轉叢集伺服器之作法等主題。

在本期文章裡,將繼續討論建立與組態新的叢集磁碟、記錄各個叢集磁碟的磁碟簽章,使用DISKPART公用程式、變更「仲裁磁碟」存放的磁碟區、變更「分散式交易協調器」所使用的「叢集磁碟」、變更「「SQL Server容錯移轉叢集伺服器」所使用的「叢集磁碟」。等主題。

實作練習十一:更換叢集磁碟

若是因故要置換既有的「叢集磁碟」,舉例來說:當磁碟空間不足,效能不佳等情況發生時,就會需要執行更換「叢集磁碟」的作業。但在更換的程序上與一般更換非「叢集磁碟」的作業程序是不同的。


這裡要留意的是,Windows容錯移轉叢集伺服器在存取使用「叢集磁碟」時,叢集系統是依據其所記錄的各個「叢集磁碟」之「磁碟簽章(disk signatures)」編號來做識別存取作業。


在啟動「叢集服務」時,系統會掃描與比對存放在「叢集登錄檔」內的「磁碟簽章」之記錄,而不是使用磁碟機代號來追蹤記錄這些「叢集磁碟」。因此,在啟動「叢集服務」時,系統會場是比對目前連接的實體磁碟資源之「磁碟簽章」編號是否與所記錄的「磁碟簽章」編號相同。


若是系統因故找不到符合「叢集登錄檔」內所記錄的「磁碟簽章」 編號其所對應之「叢集磁碟」,將導致無法正確使用此「叢集磁碟」。而在Windows事件檢視器內將會記錄以下的錯誤資訊:

事件識別碼:1034
來源: ClusDisk
描述: 找不到叢集磁碟資源 %driveletter%相關聯的磁碟。磁碟的預期的簽章 %磁碟簽章 %。
Event ID: 1034
Source: ClusDisk
Description: The disk associated with cluster disk resource %DriveLetter% could not be found. The expected signature of the disk was %Disk Signature%.


一般而言,會遭遇到事件識別碼:1034的錯誤之可能問題有:
  • 「叢集磁碟」因故無法使用或是損毀,導致「叢集服務」無法存取此硬碟。
  • 「叢集磁碟」的「磁碟簽章」編號,因故被異動。

所以在執行更換「叢集磁碟」前,應先查詢與記錄下各個「叢集磁碟」的「磁碟簽章」編號。若是因故發生事件識別碼:1034的錯誤,將需要重新設定登錄這些「磁碟簽章」編號。

若是要備份與設定「磁碟簽章」,在 Windows Server 2000/2003版本上可以使用 Dumpcfg.exe 公用程式。而在 Windows Server 2008 版本上則是可以使用 DISKPART.exe 公用程式來處理與磁碟相關的問題。

不論是使用 Dumpcfg.exe 還是 DISKPART.exe 公用程式,都需要自行查詢備份原始的「磁碟簽章」後,再逐一設定寫回這些「磁碟簽章」編號到新的「叢集磁碟」上,其程序較為繁瑣。

後來在Microsoft Windows Server 2003 Resource Kit內提供了ClusterRecovery 程式,提供了方便使用的圖型介面管理工具,讓你可以很方便的來更換「叢集磁碟」、置換受損的「叢集磁碟」、還原「磁碟簽章」編號的異動等功能。下載 Cluster Server Recovery Utility (ClusterRecovery.exe) 管理工具http://www.microsoft.com/downloads/en/details.aspx?FamilyID=2be7ebf0-a408-4232-9353-64aafd65306d

依據其資料的說明,ClusterRecovery.exe 可以支援的作業系統有:Windows Server 2000、2003版本。但很可惜不支援 Windows Server 2003 x64、Windows Server 2003 for Itanium-based 版本的系統,也就是此工具不支援64位元版本的作業系統。請參考下圖1、2所示:

image

圖1:執行ClusterRecovery.exe管理工具

image

圖2:無法偵測「叢集磁碟」

有關於「磁碟簽章」編號的資料,是有保留一份副本記錄在以下的登錄子機碼內:HKLM/System/CurrentControlSet/Services/Clusdisk/Parameters,多字串值的名稱:AttachedDisk內,請參考下圖3所示:

image

圖3:檢視存放在登錄機碼內的「磁碟簽章」編號

在本次實作練習中,將完成以下的建置作業:

  • 建立與組態新的叢集磁碟。
  • 設定在單一節點伺服器上作業。
  • 記錄各個叢集磁碟的磁碟簽章,使用DISKPART公用程式。
  • 變更「仲裁磁碟」存放的磁碟區。
  • 變更「分散式交易協調器」所使用的「叢集磁碟」。
  • 變更「「SQL Server容錯移轉叢集伺服器」所使用的「叢集磁碟」。

以下是本次實作練習所使用的「叢集磁碟」之環境說明:

  • 「仲裁磁碟」原本使用的「叢集磁碟」是:磁碟區:(W):Witness,計畫置換為將新的「叢集磁碟」:nwWitness。
  • 「分散式交易協調器」:WCL1Dtc,原本使用的「叢集磁碟」是:磁碟區:(T):MSDTC,計畫置換為將新的「叢集磁碟」:nwMSDTC。
  • 「SQL Server容錯移轉叢集伺服器」:WCL1SQL,原本使用的「叢集磁碟」是:磁碟區:(F):Data1,計畫置換為將新的「叢集磁碟」:nwData1,並加大儲存空間到20GB(原本的是10GB)。

工作一:建立與組態新的叢集磁碟


步驟01. 先確認在各台「節點伺服器」上已經組態好新增的「叢集磁碟」,包含:使用「磁碟管理」,設定連線、格式化、指定磁碟機代號。

步驟02. 使用網域使用者帳戶:oscl,登入到第一台「節點伺服器」:ND1。

步驟03. 點選「開始」\「系統管理工具」,選擇執行「容錯移轉叢集管理員」,選擇指定的「容錯移轉叢集伺服器」:WCL1.dba.com。

步驟04. 在左邊窗格,點選「存放裝置」節點,在右邊窗格,在「存放裝置」區域,點選「新增磁碟」,請參考下圖4所示:

image

圖4:選擇「新增磁碟」


步驟05. 在「將磁碟新增到叢集」視窗,點選「確定」,請參考下圖5所示:

image

圖5:將新增加的磁碟加入到「叢集磁碟」內


步驟06. 在中間窗格,在「可用存放裝置」區域,可以觀察到先前步驟所新增加的「叢集磁碟」,請參考下圖6所示:

image

圖6:檢視已經新增加的「叢集磁碟」


步驟07. 對這些新增加的「叢集磁碟」,設定其資源名稱,請參考以下的對應說明與參考下圖7所示:
「磁碟區:(X)」:nwWitness、「磁碟區:(Y)」:nwMSDTC、「磁碟區:(Z)」:nwData1。

image

圖7:對新增加的「叢集磁碟」,重新命名

工作二:設定在單一節點伺服器上作業


步驟01. 確認第一台「節點伺服器」擁有所有的「叢集磁碟」資源,接下的作業程序也都是在第一台「節點伺服器」執行設定。但請勿關閉第二台「節點伺服器」,仍必須保持正常連線,繼續叢集服務。

工作三:記錄各個叢集磁碟的磁碟簽章,使用DISKPART公用程式

步驟01. 開啟「命令提示字元」視窗,執行以下的命令來查詢此「節點伺服器」上的磁碟清單,請參考範例程式碼1與下圖8所示:

DISKPART
LIST DISK
EXIT

範例程式碼1:使用DISKPART公用程式,來查詢磁碟清單資訊

使用的參數說明:
LIST DISK:列出此伺服器中每個磁碟的摘要資料。

image

圖8:使用DISKPART公用程式,來查詢磁碟清單資訊

在上圖8中,可以觀察到此「節點伺服器」上的磁碟清單是磁碟 0 到磁碟 9。若在非擁有磁碟的「節點伺服器」上執行上述的查詢作業,也是會獲得相同的磁碟清單資料,這類似於使用「電腦管理」工具內的「磁碟管理」所顯示之結果,請參考下圖9所示:

image

圖9:使用DISKPART公用程式,來查詢磁碟清單資訊

步驟02. 建立與自行修改以下的範例程式碼2:

SELECT DISK 0
DETAIL DISK
SELECT DISK 1
DETAIL DISK
EXIT

範例程式碼2:查詢各個磁碟的詳細資料

使用的參數說明:

  • SELECT DISK [=n] :SELECT DISK 指令會將焦點設至具有所指定的磁碟代號的磁碟。如果沒有指定磁碟代號,此指令會顯示目前設為焦點的磁碟。
  • DETAIL DISK:DETAIL DISK指令會輸出目前設為焦點的磁碟之詳細資訊,例如:磁碟識別碼(也就是「磁碟簽章」編號)、型態、狀態、LUN 識別碼、是否為「叢集磁碟」等等。請參考下圖10所示:

image

圖10:查詢各個磁碟的詳細資訊


在範例程式碼2中,是設定由磁碟 0 查詢到磁碟 1為例,若還要查詢其他編號的磁碟,請自行增加相關的指令碼。請將範例程式碼2內的指令碼,存檔放置在C:\myScript.txt檔案內。


步驟03. 在「命令提示字元」視窗,執行以下的範例程式碼3:

DISKPART.exe < C:\myScript.txt >C:\myDisk.txt

範例程式碼3:執行查詢各個磁碟的詳細資料之指令碼

在範例程式碼3中,使用 DISKPART.exe 公用程式來執行 myScript.txt 檔案內的指令碼,並將其結果輸出到 myDisk.txt 檔案內存放。

步驟04. 開啟與妥善保存 C:\myDisk.txt 檔案,請參考下圖11所示:
image

圖11:檢視存放的各個磁碟之詳細資訊


在上圖11中,myDisk.txt 檔案內存放了此「節點伺服器」上的磁碟清單,以及各個磁碟的詳細資料。

 

工作四:變更「仲裁磁碟」存放的磁碟區


「仲裁磁碟」是用來作為磁碟見證的存放磁碟區。

步驟01. 點選「開始」\「系統管理工具」,選擇執行「容錯移轉叢集管理員」,選擇指定的「容錯移轉叢集伺服器」:WCL1.dba.com,滑鼠右鍵,選擇「其他動作」\「設定叢集仲裁設定」,請參考下圖12所示:
image

圖12:執行設定叢集仲裁設定之程序


步驟02. 在「設定叢集仲裁精靈」視窗,點選「下一步」。

步驟03. 在「選取仲裁設定」視窗,接受預設值的設定,點選「節點與磁碟多數(D)(根據您目前的節點數目,建議使用此項)」,點選「下一步」。

步驟04. 在「設定存放見證」視窗,勾選名稱為:nwWitness,其「磁碟區」編號為:X,的「叢集磁碟」來擔任新的「仲裁磁碟」,用來作為磁碟見證的存放磁碟區,點選「下一步」,請參考下圖13所示:

image

圖13:選擇新的「叢集磁碟」來擔任「仲裁磁碟」


步驟05. 在「確認」視窗,檢視準備要組態的資料,點選「下一步」,請參考下圖14所示:
image

圖14:檢視準備要組態的仲裁設定之資料

步驟06. 在「摘要」視窗,可以點選「檢視報告」來閱讀建置作業的成果,點選「完成」,請參考下圖15與16所示:

image

圖15:已經完成「仲裁磁碟」的變更作業

image

圖16:檢視「仲裁磁碟」變更作業的報告

步驟07. 在「容錯移轉叢集管理員」,在左邊窗格,點選「存放裝置」節點,在中間窗格,在「仲裁中的磁碟見證」區域,可以觀察到已經變更為使用新增加的「叢集磁碟」:nwWitness,磁碟區(X),請參考下圖17所示:

image

圖17:已經改用新的「叢集磁碟」來擔任「仲裁磁碟」

步驟08. 在「可用存放裝置」區域,選取原先的擔任「仲裁磁碟」用的「叢集磁碟」:Witness,磁碟區(W),滑鼠右鍵,選擇「刪除」。

步驟09. 在「請確認動作」視窗,點選「是」,請參考下圖18所示:

image

圖18:刪除原先的「叢集磁碟」

步驟10. 在「仲裁中的磁碟見證」區域,選取「叢集磁碟」:nwWitness,磁碟區(X),滑鼠右鍵,選取「變更磁碟機代號」,請參考下圖19所示:

image

圖19:選取「變更磁碟機代號」

若是第二台「節點伺服器」因故無法上線服務,是無法變更「叢集磁碟」所使用的磁碟機代號,請參考下圖20所示:

image

圖20:無法取得可用的磁碟機代號

步驟11. 在「變更磁碟機代號」視窗,下拉選取原先的磁碟機代號:W,點選「確定」,請參考下圖21所示:

image

圖21:變更為原先的磁碟機代號

步驟12. 在「請確認動作」視窗,點選「是」,請參考下圖22所示:

image

圖22:確認要變更磁碟機代號

步驟13. 在兩台「節點伺服器」之間手動執行「容錯移轉」機制,並請確認可以正常運作,檢查是否有產生相關的錯誤事件資料。

步驟14. 經過前述的步驟,我們已經完成更換「仲裁磁碟」存放的磁碟區之作業。

工作五:變更「分散式交易協調器」所使用的「叢集磁碟」


以下採行的作業程序是:先刪除既有的「分散式交易協調器」資源群組,再重建新的「分散式交易協調器」資源群組。

步驟01. 點選「開始」\「系統管理工具」,選擇執行「容錯移轉叢集管理員」,選擇指定的「容錯移轉叢集伺服器」:WCL1.dba.com。

步驟02. 在左邊窗格,展開「服務與應用程式」節點,在中間窗格,在「名稱區域」,選擇「WCL1Dtc」資源群組,滑鼠右鍵,選擇「刪除」。

步驟03. 在「請確認動作」視窗,點選「刪除 WCL1Dtc」,請參考下圖23所示:

image
圖23:確認要刪除「分散式交易協調器」資源群組

步驟04. 在左邊窗格,點選「存放裝置」節點,在中間窗格,在「可用存放裝置」區域,選擇「叢集磁碟」:MSDTC,磁碟區(T),滑鼠右鍵,選擇「刪除」。

步驟05. 在「請確認動作」視窗,點選「是」。

步驟06. 在「可用存放裝置」區域,選擇「叢集磁碟」:nwMSDTC,磁碟區(Y),滑鼠右鍵,選取「變更磁碟機代號」。

步驟07. 在「變更磁碟機代號」視窗,下拉選取原先的磁碟機代號:T,點選「確定」。

步驟08. 在左邊窗格,點選「服務與應用程式」節點,滑鼠右鍵,選擇「設定服務或應用程式」。

步驟09. 在「高可用性精靈」視窗,點選「下一步」。

步驟10. 在「選取服務或應用程式」視窗,點選右邊窗格的「分散式交易協調器(DTC)」,點選「下一步」。

步驟11. 在「用戶端存取點」視窗,設定以下的參數,點選「下一步」:

n 在右邊窗格,在「名稱」區域,系統會自動提供一個作為「分散式交易協調器」服務用的伺服器名稱,例如:WCL1Dtc。

n 在「位址」區域,點選「按一下這裡輸入位址」,輸入:172.16.1.54。

步驟12. 在「選取存放裝置」視窗,在右邊窗格,勾選「叢集磁碟」:nwMSDTC,磁碟區(T),點選「下一步」,請參考下圖24所示:

image

圖24:選取「分散式交易協調器」服務所使用的「叢集磁碟」

步驟13. 在「確認」視窗,檢視準備要設定的相關資料,點選「下一步」。

步驟14. 在「摘要」視窗,點選「檢視報告」來閱讀「分散式交易協調器(DTC)」設定的成果,點選「完成」,請參考下圖25所示:

image

圖25:檢視「分散式交易協調器(DTC)」設定的成果

步驟15. 在左邊窗格,點選「服務與應用程式」節點,以及點選先前新加入的「分散式交易協調器(DTC)」服務:WCL1Dtc,已經正確使用新的「叢集磁碟」,請參考下圖26所示:

image

圖26:「分散式交易協調器」已經使用新的「叢集磁碟」

步驟16. 由於採取的方式是重新建立「分散式交易協調器」,所以,在建立好全新的「分散式交易協調器」後,還需要再度設定相關的功能。例如:啟用網路 DTC 存取功能、設定預設的「分散式交易協調器(DTC)」執行個體、測試與觀察「分散式交易協調器(DTC)」的運作等功能。

關於這部份的執行程序,請參考「新手學安裝SQL Server 2008「容錯移轉叢集(Failover Cluster)」(8)」一文內的「實作練習八:組態SQL Server容錯移轉叢集伺服器所需的分散式交易」,有提供了完整的執行步驟與設定注意事項。

工作六:變更「「SQL Server容錯移轉叢集伺服器」所使用的「叢集磁碟」


以下採行的作業程序是:先關閉 SQL Server 相關服務、複製資料到新的「叢集磁碟」、移除既有的「叢集磁碟」,再加入新的「叢集磁碟」、重新設定對應的磁碟機代號等程序。

步驟01. 點選「開始」\「系統管理工具」,選擇執行「容錯移轉叢集管理員」,選擇指定的「容錯移轉叢集伺服器」:WCL1.dba.com。

步驟02. 在左邊窗格,展開「服務與應用程式」,選擇「SQL Server(MSSQLSERVER)」節點。

步驟03. 在中間窗格,在下方的「其他資源」區域,選擇「SQL Server」,滑鼠右鍵,選擇「讓此資源離線」,請參考下圖27所示:

image

圖27:選擇讓此資源離線

步驟04. 在「請確認動作」視窗,點選「使 SQL Server 離線」,請參考下圖28所示:

image

圖28:確認停止SQL Server服務

在圖28中,由於SQL Server Agent服務與SQL Server服務兩者之間有著依存性。因此,當你關閉SQL Server服務,將會一併關閉SQL Server Agent服務,請參考下圖29所示:

image

圖29:一併關閉了SQL Server Agent服務

步驟05. 在左邊窗格,展開「服務與應用程式」,點選「SQL Server(MSSQLSERVER)」節點。滑鼠右鍵,選擇「停止自動啟動」,請參考下圖30所示:

image

圖30:一併關閉了SQL Server Agent服務

步驟06. 複製SQL Server相關資料到新的「叢集磁碟」上。在本次實作練習環境上,原本使用的磁碟區是:Data1(F),如今是先要將資料複製到新的磁碟區:nwData1(Z)。

筆者這邊使用在 Windows Server 2008、Windows 7 作業系統上內建的 ROBOCOPY.exe 公用程式來執行同步兩個磁碟區內的資料,請參考以下的範例程式碼1與下圖31所示:

ROBOCOPY F: Z: /MIR /SEC

範例程式碼4:執行ROBOCOPY公用程式來同步資料

使用的參數說明:

  • /MIR:鏡像樹狀目錄 (相當於 /E 加 /PURGE)。
  • /SEC:複製包含安全性的檔案 (相當於 /COPY:DATS)。

image

圖31:執行ROBOCOPY公用程式來同步資料

要提醒你,請記得要務必要將資料夾與檔案的權限,均需一併完整的複製到新的磁碟區上。

假若是當此SQL Server的服務啟動帳戶是採取最小原則的方式來設計,這將造成SQL Server服務啟動帳戶無法存取新的磁碟區上的資料,也就無法啟動服務,在Windows事件檢視器內可以觀察到以下的錯誤訊息,請參考下圖32所示:

事件識別碼:17058,initerrlog: 無法開啟錯誤記錄檔 'F:\MSSQL10_50.MSSQLSERVER\MSSQL\Log\ERRORLOG'。作業系統錯誤 = 5(存取被拒)。

image

圖32:因為檔案權限並未同步到目的地,導致發生服務啟動失敗,錯誤的事件識別碼:17058

步驟07. 執行「容錯移轉叢集管理員」,在左邊窗格,展開「服務與應用程式」,點選「SQL Server(MSSQLSERVER)」節點,在中間窗格,在「磁碟機」區域,選擇「叢集磁碟」:Data1,磁碟區(F),滑鼠右鍵,選擇「從 SQL Server(MSSQLSERVER)移除」,請參考下圖33所示:

image

圖33:選擇「從 SQL Server(MSSQLSERVER)移除」

步驟08. 在「請確認動作」視窗,點選「是」,請參考下圖34所示:

image

圖34:確認移除舊的叢集磁碟

步驟09. 在左邊窗格,點選「存放裝置」節點,在中間窗格,在「可用存放裝置」區域,選擇「叢集磁碟」:Data1,磁碟區(F),滑鼠右鍵,選擇「變更磁碟機代號」。

步驟10. 在「變更磁碟機代號」視窗,下拉選取不同的磁碟機代號,例如:Y,點選「確定」。

步驟11. 在「可用存放裝置」區域,選擇「叢集磁碟」:nwData1,磁碟區(Z),滑鼠右鍵,選擇「變更磁碟機代號」。

步驟12. 在「變更磁碟機代號」視窗,下拉選取原先存放SQL Server資料用的磁碟機代號:F,點選「確定」。

步驟13. 在「可用存放裝置」區域,選擇「叢集磁碟」:nwData1,磁碟區(F),滑鼠右鍵,選擇「其他動作」\「將此資源移動到另一個服務或應用程式」。

步驟14. 在「選取服務或應用程式」視窗,在「名稱」區域,點選:SQL Server(MSSQLSERVER),點選「確定」。

步驟15. 在左邊窗格,展開「服務與應用程式」,點選「SQL Server(MSSQLSERVER)」節點。

步驟16. 在中間窗格,在下方的「其他資源」區域,選擇「SQL Server」,滑鼠右鍵,選擇「讓此資源上線」。

步驟17. 在中間窗格,在下方的「其他資源」區域,選擇「SQL Server Agent」,滑鼠右鍵,選擇「讓此資源上線」,請參考下圖35所示:

image

圖35:重新啟動SQL Server與SQL Server Agent服務

步驟18. 在左邊窗格,展開「服務與應用程式」,點選「SQL Server(MSSQLSERVER)」節點。滑鼠右鍵,選擇「啟用自動啟動」。

步驟19. 在兩台「節點伺服器」之間手動執行「容錯移轉」機制,並請確認可以正常運作,檢查是否有產生相關的錯誤事件資料。

步驟20. 經過前述的步驟,我們已經完成更換「仲裁磁碟」存放的磁碟區之作業。最後,讓我們來檢視更換「叢集磁碟」後的成果,請參考下圖36所示:

image

圖36:各個叢集磁碟都已經完成更換的程序

結語


在本期文章中,帶領各位按部就班來認識建立與組態新的叢集磁碟、記錄各個叢集磁碟的磁碟簽章,使用DISKPART公用程式、變更「仲裁磁碟」存放的磁碟區、變更「分散式交易協調器」所使用的「叢集磁碟」、變更「「SQL Server容錯移轉叢集伺服器」所使用的「叢集磁碟」等主題。

Tags:

SQL Server資料庫 | 陳俊宇Derrick Chen

新增評論




  Country flag
biuquote
  • 評論
  • 線上預覽
Loading






NET Magazine國際中文電子雜誌

NET Magazine國際中文電子版雜誌,由恆逸資訊創立於2000,自發刊日起迄今已發行超過500篇.NET相關技術文章,擁有超過40000名註冊讀者群。NET Magazine國際中文電子版雜誌希望藉於電子雜誌與NET Developer達到共同學習與技術新知分享,歡迎每一位對.NET 技術有興趣的朋友們多多支持本雜誌,讓作者群們可以有持續性的動力繼續爬文。<請加入免費訂閱>

月分類Month List