1. 程式人生 > >SQLServer 伺服器架構遷移

SQLServer 伺服器架構遷移

最近伺服器架構遷移,將原來的伺服器架構遷移到新的伺服器,新的伺服器在硬體方面比之前更好!原來伺服器使用雙向同步,並且為水平劃分到多個數據庫伺服器。遷移過程中,資料庫方面涉及到資料一致性,帳號,重新劃更多分割槽,規範索引,分散式查詢,刪除無效觸發器等等。程式方面重新修改配置檔案,SQL等。

原架構如圖:


現在有相同的伺服器,所有分庫都遷移到新的伺服器,再增加一臺伺服器作為獨立的分發伺服器。然而,總庫已經沒有多餘的伺服器了,怎麼辦?解決方法是 ,總庫(DBA)中再安裝一個數據庫例項!這樣,每臺伺服器都有對應了。為什麼總庫也要對應一個伺服器?因為總庫與分庫有資料差異,使用者使用的都是分庫,所以原總庫資料不能要!但是資料庫名稱仍然不變,所以只有新增一個例項了!總庫不能要,怎麼將分庫資料彙總成一個完整的總庫?

過去使用過的方法,現在完整備份各分庫還原到總庫伺服器並使用不同名稱,停機維護時,將分庫日誌備份並還原到總庫伺服器中的各個分庫,此時再使用merge與原總庫對比,則原總庫將會三一個完整的資料庫。 但是,對比時間太長了!當前的方案是,將在各個分庫建立事物釋出,彙總到一個新例項中!(參考:SQL Server 中心訂閱模型(多釋出單訂閱)

那麼,整個遷移方案中,可以分為5個階段:

第一階段:前期階段,計劃方案,確定步驟,預先執行部分耗時操作;

第二階段:停機前一兩小時,預先準備,將步驟看清一邊,預先執行可執行的操作;

第三階段:停機維護中,更改分散式指令碼;切換使用者對資料庫的訪問;訪問測試;

第四階段:停機時間到,開啟訪問,重要的部分工作先完成;

第五階段:接下來這一兩天完成所有後續工作;並且觀察資料庫方面的效能;

切換架構如圖:


上圖中,上半部分是原架構,下半部分是新架構。考慮的問題較多!!同樣分幾個階段處理:

第一階段:

新伺服器的和資料庫的安裝升級配置不必說了;

將總庫備份還原到新例項,設定簡單模式,並將裡面的資料全部清空(truncate)並收縮資料庫;

刪除所有索引,批量建立主鍵;

新增檔案及檔案組,設定檔案增長率;

重新劃分更多分割槽,設定LOCK_ESCALATION ;

更改預設值約束,去掉無用觸發器;

遷移登入帳號;

備份當前的空資料庫,留著還原到新的分庫中;

設定分發資料庫;

原來的分庫(db1~dbn)建立事物釋出到新的總庫中,只對表釋出;(參考:SQL Server 中心訂閱模型(多釋出單訂閱)

授予許可權;

(新分庫還原上面的空庫並參考上面的一些步驟)

新總庫建立釋出到新分庫中;

新分庫設定完整模式並設定備份計劃;

第二階段:

連結伺服器的更改;

停掉以前的複製;

禁止備份作業及其他相關作業;

檢查同步情況;

對比沒有彙總的一些引數表;

第三階段:

停機維護啟動;

檢查同步情況及新舊資料庫是否有差異(sysindexes)

更改sql指令碼;

升級web配置檔案

第四階段:

授予開發人員許可權;

部分許可權修改;

觀察系統執行情況;

第五階段:

原總庫資料庫刪除,新總庫遷移到SSD盤;

辛苦備份計劃建立;

作業轉移或重建;

刪除原分庫到新總庫的複製;

觀察系統執行情況;

整個過程,方便的,幾乎都用指令碼來執行,因為指令碼可以提前寫好,可以計劃好順序。實際上,不出問題的話,停機維護時間可以不到半小時。總之,能其他做的先做,能往後做的後做,減少停機維護時間。