2015年11月23日 星期一

如何規畫並進行SQL Server的搬移計畫

近日接到新的專案,由於最近新進一台主機,所以需要將原本的SQL Server 2012搬移到新的主機上,由於需要確認的事項眾多,所以我將相關的所有過程整理起來,以備日後與大家參考,加有不足的部份也歡迎大家補充。

環境描述:

  1. SQL Server 2012(11.3000)
  2. 只有使用基本的Backup方案,沒有使用其他的DR(Disaster Recovery)方案。
  3. 有使用Third-Party軟體進行備份檔案的移地備份。
  4. 新舊資料庫主機的環境已設定成相同。

預期方案:

  1. 兩台資料庫主機在完成後,會進行IP的交換。
  2. 由於為了避免轉移失敗,所以會先保留原機,待移轉成功後,再進行舊機器的處理。
  3. 在搬移資料檔的方式有很多種,可以參考下列的作法,但由於我的二台主機的版本與版號完全相同,所以我將透過附加資料檔的方式進行。

    Move a database from one server to another server in SQL Server 2008
    http://blogs.msdn.com/b/sreekarm/archive/2009/09/11/move-a-database-from-one-server-to-another-server-in-sql-server-2008.aspx

先前檢查動作:

  1. 確認相關的應用程式,在進行搬移時,也需要進行停機的動作。
  2. 確認所有連線到此資料庫的應用程式,是否有透過資料庫主機名稱進行連線,如果有請進行調整。
  3. 確認新主機上的1433 Port是否已有開啟,詳細的SQL Server Port設定可以參考下列的連結:

    Configure the Windows Firewall to Allow SQL Server Access
    https://msdn.microsoft.com/en-us//library/cc646023(v=sql.120).aspx
  4. 確認兩台資料庫設定(sp_configure)是否相符。
  5. 確認各資料庫的大小與搬移時所需的時間。
  6. 確認新主機的磁碟空間大小是否足夠。
  7. 確認資料庫搬移後,新的資料庫主機的磁碟代號是否相符。
  8. 確認有那些Database Login、Users與相關的權限設定。
  9. 確認有那些已建立的相依性物件(SQL Agent Jobs、Linked Servers)。
  10. 確認有那些維護計畫需要進行搬移。
  11. 確認有那些DTS Package需要進行搬移。

總體停機時間評估:

  1. 資料庫搬移:如我的資料庫總大小為122G,而如果透過單純的網路傳輸,約為每秒80MB,所以大約傳輸完成最快要下列的時間,但實際上可能不會這麼的理想。

    All Data Files 122G/ Network Transfer 80MB = 1561.6 sec
  2. 移轉登入與密碼(可事先準備)
  3. 解決孤兒使用者的問題,相關的處理方式,請使用下列的語法進行處理。

    sp_change_users_login (Transact-SQL)
    https://technet.microsoft.com/zh-tw/library/ms174378(v=sql.110).aspx
  4. 移動作業、警示與操作員(可事先準備)。
  5. 移動 DTS 封裝(可事先準備)
  6. IP位置更換
  7. 相關應用程式上線與測試。
  8. 相關問題排除。

     
PS:在總體時間上建議可以多評估較長時間,以免在轉移後發現問題無法即時處理。


詳細轉移動作:
關於詳細的轉換方式,由於在官網上已有詳細的說明,如下列的作法,我將大項目列出,僅供參考。

  1. 移動使用者資料庫
  2. 移轉登入與密碼
  3. 解決孤兒使用者的問題
  4. 移動作業、警示與操作員
  5. 移動 DTS 封裝
  6. 變更 sp_configure 設定以符合先前的系統

     如何在執行 SQL Server 的電腦之間移動資料庫
     https://support.microsoft.com/zh-tw/kb/314546


確認檢查表:


檢查表檔案下載:
https://onedrive.live.com/redir?resid=F8199A68177F41CB!7062&authkey=!ABsNtbO68dxPBtI&ithint=file%2cxlsx


關鍵字:Migrating SQL Server DatabasesChecklistMove Database

2 則留言:

  1. 請問, 使用 Database Mirroring 是否會比較輕鬆些?

    1. 舊 SQL mirror 到新主機,程式加 failover 設定
    2. SQL mirror 切換, 確認相關程式是否正常運作

    回覆刪除
    回覆
    1. 要看你的需求而定,因為我的二台新舊主機的規格不同,所以不建議作這樣的設定,如果要進行Database Mirroring也是建議兩台主機規格相同會比較好,另外目前你也可以考慮使用AlwaysOn會是比較好的作法。

      刪除