SQLServer 伺服器架構遷移
最近伺服器架構遷移,將原來的伺服器架構遷移到新的伺服器,新的伺服器在硬體方面比之前更好!原來伺服器使用雙向同步,並且為水平劃分到多個數據庫伺服器。遷移過程中,資料庫方面涉及到資料一致性,帳號,重新劃更多分割槽,規範索引,分散式查詢,刪除無效觸發器等等。程式方面重新修改配置檔案,SQL等。
原架構如圖:
現在有相同的伺服器,所有分庫都遷移到新的伺服器,再增加一臺伺服器作為獨立的分發伺服器。然而,總庫已經沒有多餘的伺服器了,怎麼辦?解決方法是 ,總庫(DBA)中再安裝一個數據庫例項!這樣,每臺伺服器都有對應了。為什麼總庫也要對應一個伺服器?因為總庫與分庫有資料差異,使用者使用的都是分庫,所以原總庫資料不能要!但是資料庫名稱仍然不變,所以只有新增一個例項了!總庫不能要,怎麼將分庫資料彙總成一個完整的總庫?
那麼,整個遷移方案中,可以分為5個階段:
第一階段:前期階段,計劃方案,確定步驟,預先執行部分耗時操作;
第二階段:停機前一兩小時,預先準備,將步驟看清一邊,預先執行可執行的操作;
第三階段:停機維護中,更改分散式指令碼;切換使用者對資料庫的訪問;訪問測試;
第四階段:停機時間到,開啟訪問,重要的部分工作先完成;
第五階段:接下來這一兩天完成所有後續工作;並且觀察資料庫方面的效能;
切換架構如圖:
上圖中,上半部分是原架構,下半部分是新架構。考慮的問題較多!!同樣分幾個階段處理:
第一階段:
新伺服器的和資料庫的安裝升級配置不必說了;
將總庫備份還原到新例項,設定簡單模式,並將裡面的資料全部清空(truncate)並收縮資料庫;
刪除所有索引,批量建立主鍵;
新增檔案及檔案組,設定檔案增長率;
重新劃分更多分割槽,設定LOCK_ESCALATION ;
更改預設值約束,去掉無用觸發器;
遷移登入帳號;
備份當前的空資料庫,留著還原到新的分庫中;
設定分發資料庫;
原來的分庫(db1~dbn)建立事物釋出到新的總庫中,只對表釋出;(參考:SQL Server 中心訂閱模型(多釋出單訂閱))
授予許可權;
(新分庫還原上面的空庫並參考上面的一些步驟)
新總庫建立釋出到新分庫中;
新分庫設定完整模式並設定備份計劃;
第二階段:
連結伺服器的更改;
停掉以前的複製;
禁止備份作業及其他相關作業;
檢查同步情況;
對比沒有彙總的一些引數表;
第三階段:
停機維護啟動;
檢查同步情況及新舊資料庫是否有差異(sysindexes)
更改sql指令碼;
升級web配置檔案
第四階段:
授予開發人員許可權;
部分許可權修改;
觀察系統執行情況;
第五階段:
原總庫資料庫刪除,新總庫遷移到SSD盤;
辛苦備份計劃建立;
作業轉移或重建;
刪除原分庫到新總庫的複製;觀察系統執行情況;
整個過程,方便的,幾乎都用指令碼來執行,因為指令碼可以提前寫好,可以計劃好順序。實際上,不出問題的話,停機維護時間可以不到半小時。總之,能其他做的先做,能往後做的後做,減少停機維護時間。