標籤:sql server 資料庫
為什麼寫這篇文章,主要是因為考慮到群集上更換儲存的情況,例如原來的儲存發生過小故障,擔心資料丟失,必須將群集中的儲存換成一個新的儲存。於是就搭了個實驗環境驗證一下實施過程。本環境是基於Windows server 2003+SQL Server 2005的環境。後面會上一篇Windows Server 2008+ SQL Server 2008的相關文檔。
仲裁磁碟中記錄有仲裁資訊,如所示:
650) this.width=650;" title="image" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_1406384484QpLF.png" width="307" height="213" />
而資料盤中存放的有系統資料庫等資訊,如所示:
650) this.width=650;" title="image" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_14063844842kQ5.png" width="593" height="351" />
最關鍵的就是這S盤中的資訊。
首先:儲存為上新的仲裁盤和資料盤劃分好LUN,並映射到兩個節點上。兩個節點上都能看到相同的磁碟資訊。
650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_140638448549oh.png" height="294" />
先在一個節點上進行分區,格式化等操作,為了與早期的仲裁及資料盤區分開,在此仲裁為P盤,資料為T盤,另一個節點上重新掃描即可,不需要重新啟動,然後添加盤符,如所示:
650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_1406384485c48l.png" height="346" />650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_14063844858Gey.png" height="244" />
更換群集中的仲裁磁碟:
第一步,我們先將仲裁磁碟加入到群集組中,如所示,其他動作預設。
650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_1406384485xs5k.png" height="249" />
然後,編輯Windows群集的屬性,仲裁---指定新的仲裁磁碟即可。如所示:
650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_1406384485XPbS.png" height="366" />650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_1406384485ymmt.png" height="368" />
注意:如何因為仲裁磁碟不可用而無法啟動叢集服務,請使用 /FIXQUORUM 開關啟動叢集服務。然後,便能夠更改仲裁磁碟。如所示:
650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_1406384485QRkg.png" height="244" />
此命令只是在群集因為仲裁原因無法啟動的時候使用,成功設定仲裁磁碟後,刪除此參數,再重新啟動叢集服務。然後可以刪除原來的仲裁盤,或者是保留用作備份。
更換群集中的資料磁碟
首先,把新的資料盤加入到SQL Server資源群組中,如所示,其他預設。
650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_1406384485PmSy.png" height="218" />
接下來,需要讓SQL Server服務能夠識別到此磁碟,這裡取決於SQL Server的依賴關係,如所示,將新的磁碟加入到依賴關係中,仔細檢查SQL Server相關服務的依存關係,我這裡用到SQL Server Fulltext和SQL Server服務,注意,服務要先離線,再添加資源依存,然後服務再聯機。
650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_1406384486UsUW.png" height="413" />650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_14063844869NZJ.png" height="412" />
此時,SQL Server就可以識別到新添加的磁碟了,可以進行資料的備份等操作了。 如所示:
650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_14063844869J4P.png" height="134" />
然後,就是複製資料,將S:盤中的所有資料複製到T:。
具體操作步驟是:
1. 只保證一個節點開機,其他節點關機,目的是讓所有的磁碟資源都切換到一個節點上。便於操作。
2. 停止SQL Server服務,否則,無法複製檔案。
650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_1406384486TC49.png" height="197" />
因為S盤中存放的是資料庫的內容,必須停機後才能進行複製。根據資料量和儲存效能時間不等。所有內容,全選複製。
650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_1406384486BFJp.png" height="409" />
緊接著,修改磁碟盤標:
1、開啟磁碟管理器,查看所有的磁碟均被識別,並記錄磁碟編號,如所示:
650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_1406384486O5I9.png" height="453" />
原有仲裁盤為磁碟1,原有的資料庫為磁碟2,新的仲裁盤為磁碟3,新的資料盤為磁碟4.
2、開啟註冊表,找到以下位置:
HKLM/System/CurrentControlSet/Services/Clusdisk/Parameters/Signatures的索引值,找到所有的原儲存共用磁碟數字編號
650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_14063844866le9.png" height="390" />
這裡,我們主要是記錄原有資料盤的編號,磁碟2,對應的是7FE3E998。
650) this.width=650;" title="image" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_1406384487A1h1.png" height="357" />
3、將原有的資料磁碟的編號與新的磁碟對應起來,也就是更改磁碟簽名。
但無奈沒有找到dumpcfg.exe命令,這個命令應該是包括在Windows 2000的資源工具包裡,但實在是不在好找,我就偷個懶,直接修改註冊表了。(強烈建議使用dumpcfg.exe命令操作),不知道直接修改註冊表,有什麼隱患,希望有知道的朋友給說明一下,或者告訴我哪兒可以下載到dumpcfg.exe程式。
650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_1406384487WIFq.png" height="368" />
修改依存關係:
650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_14063844878mhd.png" height="286" />650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_1406384487y1Db.png" height="288" />
然後,啟動所有節點,刪除原有資料盤S盤,(刪除資源時必須要求所有節點都開機)
650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_1406384487uxNG.png" height="417" />
緊接著,其他節點再次關機,只保留一個節點開機,修改新資料盤的盤符為S盤。
650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_1406384487oXWs.png" height="275" />
然後,此節點關機,再開啟第二個節點,查看盤符是否為S:如果不是,則需要修改一致。然後,所有節點開機。
最後,再將SQL Server服務和代理服務聯機,即可,如所示:
650) this.width=650;" title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;border-left:0px;padding-right:0px;" border="0" alt="image" src="http://img1.51cto.com/attachment/201407/26/382644_14063844873ie5.png" height="85" />
至此,操作就操作。
群集中的其他儲存更換,方法一樣。都是先加入到群集中後,修改磁碟資訊(簽名)。例如,存在MSDTC資源的話,也是同樣的操作方法,將新的磁碟加入到群集中,停止服務,將來源硬碟的資料複製到新盤中,修改磁碟簽名,刪除源磁碟,修改盤符。啟動服務,OK.
另外,需要注意:
或者有些情況下需要將SQL Server service account 添加到SQL Server 檔案夾和OLAP 檔案夾,並且讓SQL Server service account有該檔案夾的所有許可權。
參考:http://tech.diannaodian.com/dw/data/sql/2012/0610/181991.html
經過實驗,微軟給出的操作是通過dumpcfg.exe命令 更新磁碟簽名,但不用好像也可以。如果是關於SQL Server 2008的環境,可以參考下面的討論:
http://social.microsoft.com/Forums/cs-CZ/24e3cbf1-43af-412d-909a-1a68c72fe527/windows-2008-server-r2-
http://social.msdn.microsoft.com/Forums/zh-CN/c263cd5c-1b2b-48e3-95df-96805bc1e579?forum=sqlserverzhchs
本文出自 “杜飛” 部落格,請務必保留此出處http://dufei.blog.51cto.com/382644/1530567
SQL Server 2005群集更換儲存