背景:
由於建設初期使用的vSphere vCenter版,其中安裝自動化過程中會使用SQL Server Express的免費版數據庫進行基礎環境構建。而此時隨着業務量的增加,虛擬機數的膨脹,產生的日誌如果不被及時清理掉或者轉移走的話,會導致該免費版數據庫很快觸發閾值而停止SQL Server服務(對於2005/2008版【vCenter Server 4.1以下版本】是mdf文件不能超過4GB,對於2008 R2版【vCenter Server 5.5以上版本】的是mdf文件不能超過10GB),這樣就會導致vCenter主服務無法啓動,vCenter對外服務異常。
因此最終用户方提出能否通過技術手段對免費受限版的數據庫升級?
探索:
通過爬VMware的KB知識庫,有發現介紹如何遷移免費版到完整版的文章KB1028601。通過仔細閲讀,我瞭解到很多關於數據內部調用,註冊表項的真實含義,以及安全遷移的必備環境等內容。
由於上文介紹的是遷移內容,再結合用户現有環境,可以借鑑遷移文章中涉及到的知識點,但是不能完全照搬完成我這次的升級,因此真正實施的過程中該文是我的重要技術保障,接下來將給各位帶來如何安全平滑升級到完整版SQL Server的詳細步驟。
平滑升級過程:
1. 進行環境備份
a) 虛擬化環境對該vCenter虛機進行快照即可
b) 物理環境建議做一下全鏡像,可以微軟自己的Windows Server Backup功能,也可以使用其他第三方的磁盤級別備份工具
2. 如果有開啓DRS,請臨時關閉DRS或更改成手動DRS(F該操作非必需項,有此建議的原因是實踐中,當vCenter再次啓動服務後,會重新計算“標準偏差”,這將可能會帶來不必要的虛機遷移風暴)
3. 停止一切VMware vCenter服務,詳細步驟可參考KB2109881
4. 準備升級材料
a) 大於等於現有免費版本號的SQL Server 英文版
b) 可供管理現有vCenter Server 內建數據庫實例的“SQL Server Management Studio”工具
表格 1取自維基百科的版本與發佈名成對照表
|
|
RTM (noSP) |
SP1 |
SP2 |
SP3 |
SP4 |
|
SQL Server 2016
|
13.0.1601.5 |
|
|
|
|
|
SQL Server 2014
|
12.0.2000.8 |
12.0.4100.1or 12.1.4100.1 |
12.0.5000.0or 12.2.5000.0 |
|
|
|
SQL Server 2012
|
11.0.2100.60 |
11.0.3000.0or 11.1.3000.0 |
11.0.5058.0or 11.2.5058.0 |
11.0.6020.0or 11.3.6020.0 |
|
|
SQL Server 2008 R2
|
10.50.1600.1 |
10.50.2500.0or 10.51.2500.0 |
10.50.4000.0or 10.52.4000.0 |
10.50.6000.34or 10.53.6000.34 |
|
|
SQL Server 2008
|
10.0.1600.22 |
10.0.2531.0or 10.1.2531.0 |
10.0.4000.0or 10.2.4000.0 |
10.0.5500.0or 10.3.5500.0 |
10.0.6000.29or 10.4.6000.29 |
|
SQL Server 2005
|
9.0.1399.06 |
9.0.2047 |
9.0.3042 |
9.0.4035 |
9.0.5000 |
|
SQL Server 2000
|
8.0.194 |
8.0.384 |
8.0.532 |
8.0.760 |
8.0.2039 |
|
SQL Server 7.0
|
7.0.623 |
7.0.699 |
7.0.842 |
7.0.961 |
7.0.1063 |
5. 確認升級前版本
a) 使用“SQL Server Management Studio”登陸“VIM_SQLEXP”實例
b) 查看當前實例的數據庫版本號,以vSphere 5.5 vCenter為例,它使用的是英文版v10.50.2500.0,等換成發佈名稱就是SQL Server 2008 R2 with SP1
圖 1確認數據庫實例語言和版本
6. 獲取目標版本
a) 由於內建免費版使用的SQL Server相對來説有點過於久遠,因此在用户購買的版本中找到了SQL Server 2012 with SP3作為目標版本使用
7. 開始升級
a) 本小節會有大量截圖出現,使您更直觀的瞭解到升級全貌
b)
圖 2選擇維護項(Maintenance)的版本更新(Edition Upgrade)
c)
圖 3輸入用於更新的目標版本產品密鑰,我這裏使用的是企業版密鑰
d)
圖 4同意授權許可
e)
圖 5注意選擇實例(VIM_SQLEXP)藍色箭頭,紅色箭頭1注意版本,紅色箭頭2注意版本號(這裏看到11.3.6020,是因為之前做過一次基於版本號的升級,原本這裏應該是10.51.2500.0的)
f)
圖 6升級規則檢查,6項全部通過
g)
圖 7最後再看一下彙總,瞭解操作內容和目標版本信息以及實例名稱
h)
圖 8升級完後,通過管理工具確認版本1和版本號2信息,同時我們注意到根目錄3此時也發生了變化
i) 確認無誤,至此SQL Server 這邊的升級到此結束
8. 更新vSphere vCenter所需要用到的DSN(此操作步驟非必需,但可以確保一致性,提高兼容性)
a) 此步驟來自於VMware的遷移文檔KB1028601 描述
b) 由於此次我選擇的是升級而非遷移,所以SQL在服務中的啓動名也沒有變(依舊是MSSQL$VIM_SQLEXP),倒是DSN的版本需要更新一下,原先是10,現在是11
c)
圖 9通過查看控制面板內的管理工具,在ODBC數據源管理器(odbcad32.exe)中我們可以看到vCenter的系統DSN還是版本10
d) 如果想偷懶,可以在註冊表編輯器(regedit.exe)下面先導出HKEY_LOCAL_MACHINE\SOFTWARE\ODBC這個分支下的所有內容
e) 隨後我刪除這個名稱是VMware vCenter的系統數據源
f) 接着我開始配置一個新的VMware vCenter數據源
i.
圖 10按圖選擇版本11的驅動程序
ii.
圖 11使用剛剛導出的reg註冊表文件,按照順序依次填入這三個內容後下一步
iii.
圖 12保持默認,使用Windows 授權驗證,隨後下一步
iv.
圖 13在紅字1處選擇默認數據庫為VIM_VCDB,紅字2處選擇讀寫,隨後下一步
v.
圖 14最後一步,點擊完成進行簡單測試
vi.
圖 15完成測試,看到測試通過字樣
vii.
圖 16最後看到系統DSN內生成了新的基於11版本的數據源
9. 最後不做任何操作的重啓一下vCenter服務器,目的是一起檢查系統服務自啓動,vCenter服務自啓動,同時也利於問題就近發現
10. 登陸vCenter,對DRS進行開啓或者變更成自動
11. 最後的最後就是穩定工作一段時間後就可以刪除原有的快照文件了
總結:
1.和遷移方案不同,這裏我們使用的是原地升級,因此省去了很多VMware內部調動外部數據庫的配置動作,唯獨需要注意的是DSN版本,而這個也是為了看起來一致,非必需步驟
2.這種升級方式屬於偷懶升級,但是也很安全,滿足用户方在沒有syslog服務器的情況下在本地更多存放日誌信息到數據庫內
3.請一定準備好英文版SQL Server安裝介質作為目標升級版本
4.這種操作的弊端,我認為經過一段時間後隨着數據庫的變大,系統啓動時間會變長,對去歷史日誌的時候也會有所變慢,可以通過遷移到更快速存儲或者設置日誌留存級別來控制數據庫大小
5.在vSphere5.5之後6.0之前的這些版本內,使用的都是SQL Server 2008 R2 的免費版,因此可以提供10GB的免費使用數據庫空間,在一定程度上滿足大多數用户需求
6.各位看過之後有任何疑問歡迎留言