Sql-Server

非 DBA 提問:如何通過備份/恢復輕鬆地將 SQL Server 實例複製/移動到另一台伺服器?

  • March 31, 2011

我們剛剛有了一個新伺服器,所以我需要從舊的數據庫盒中複製現有的 SQL Server 2008 實例。

我通常通過複製 .mdf 和日誌文件並附加它們來做到這一點,但我無法讓 dbs 離線,因為它們 24/7 都在使用,所以我已經備份了數據庫並將它們恢復到新的機器。但是,我最終遇到了一些問題,其中一個與孤兒使用者有關。所以我正在尋找的是一個故障安全的過程,以最小的麻煩/麻煩/頭痛來移動*所有東西。*我是一名 .Net 開發人員,擁有相當多的 SQL,但 SQL Server 的內部工作原理對我來說很大程度上是個謎,我發現 MS 文件很難搜尋。

請幫忙。

如果您無法使數據庫離線,則需要進行備份/恢復。我建議如下:

  1. 在新盒子上安裝 SQL 2008,使用與舊盒子相同的文件結構用於 MDF 和 LDF 文件。
  2. 備份舊盒子上的所有數據庫。
  3. 將舊盒子中的 master 恢復到以單使用者模式啟動 SQL 的新盒子。恢復主方法
  4. 使用 NORECOVERY 選項將每個數據庫從舊盒子還原到新盒子,以便能夠應用未來的 Diff 或 T-log 備份。
  5. 將 msdb 從舊框恢復到新框。

如果您建構和配置新盒子看起來與舊盒子完全一樣,那麼您將不必大驚小怪。

我不知道你的數據庫有多大,所以這種方法可能需要很長時間。最簡單的做法是關閉舊機器並複制 MDF 和 LDF 文件,然後(在恢復主文件後)您只需要重新啟動 SQL 即可使您的數據庫聯機。但是您說這不是一種選擇,因為不允許數據庫離線。

您提到了 24/7 全天候執行,因此最好的方法是在新系統上創建一個數據庫鏡像,然後您可以簡單地切換最小 - 可能為零,具體取決於您的應用程序的結構 - 使用客戶端的停機時間 -側重定向。基本步驟是:

  1. 確保您的主數據庫在完全恢復模式下執行
  2. 備份主並在鏡像上還原WITH NORECOVERY
  3. 在兩台伺服器上創建“端點”,並確保連接(例如防火牆規則),正確設置埠和 IP 地址)例如:
CREATE ENDPOINT endpoint1
STATE=STARTED AS TCP(LISTENER_PORT = 5222, LISTENER_IP = 192.168.1.5) 
FOR DATA_MIRRORING(ROLE = PARTNER, AUTHENTICATION = WINDOWS NEGOTIATE, ENCRYPTION = REQUIRED ALGORITHM RC4)
  1. 在鏡像上設置鏡像,指向主鏡像:
ALTER DATABASE GaiusMirrorDB SET PARTNER = 'TCP://192.168.1.5:5222'
go
EXEC sys.sp_dbmmonitoraddmonitoring
go
  1. 在主伺服器上,指向鏡像(只是不同的數據庫名稱和 IP 地址。
  2. 然後,時機成熟時,只需將主節點切換到鏡像節點:
ALTER DATABASE GaiusDB SET PARTNER FAILOVER
GO

注意:我假設這兩個伺服器在同一個網路上,所以在同步模式下執行就可以了。如果這是通過 WAN 連結,請使用非同步模式。

引用自:https://dba.stackexchange.com/questions/1880