Sql-Server

Windows Server (VMware) 上的 SQL Server - 線上儲存交換

  • November 7, 2019

我有一個旨在儲存多個 SQL Server 實例的 VM 集群。我們使用現在必須更改的各種儲存提供商(即 3PAR、XIV)(與什麼品牌無關)。在 Linux 上的 Oracle 上,我們使用 VLM / Oracle ASM 在 Oracle 實例保持線上時執行儲存交換。我需要在 Windows 中交換用作 User_DB、User_DB_Logs 和備份分區的磁碟的儲存。我可以在 SQL Server/Windows Server 世界中做些什麼來實現它嗎?

SQL Server 標準和企業版 2012-2017

Windows 伺服器 2012 R2 - 2019

編輯1:

我正在尋找諸如同時寫入數據和登錄到兩個目標的選項(使用一個 MSSQL 實例)或 Windows Server / VMware 級別的磁碟鏡像,這將允許我在兩個磁碟同步的情況下進行熱交換。

我的設置有超過 500 個單獨的 SQL Server 實例,其中許多實例上有 100 多個數據庫。解決方案必須是精心編排的,而且相當通用。

據我所知,在 Windows/MSSQL 世界中沒有這樣的東西,但是這個論壇讓我驚訝了足夠多的時間來提出這個問題。

編輯2:

我最終有了一個想法,即在它們主要所在的同一實例上創建第二組數據庫。這將允許我擁有位於新引入磁碟的數據庫集的副本(由 VM 後面的新儲存提供程序提供支持)。在我的設置中,我只需要遷移使用者數據庫(包括他們的日誌),其他所有內容都保留在其目前驅動器集上(備份很容易移動)。因此,我現在需要實現的是強制一種可用的 HA 技術將我的數據庫集的副本創建到同一個 SQL Server 實例中。因此我的計劃是這樣的:

  • 為 SQL 數據庫數據和數據庫日誌啟動新磁碟
  • 向他們介紹 Windows 和 SQL Server
  • 將所有使用者數據庫的事務複製設置到同一個 SQL Server 實例中,更改數據庫名稱及其在驅動器上的物理位置
  • 一切同步後,停止 SQL 流量,重命名數據庫集並故障轉移到位於新驅動器上的數據庫
  • 清理(​​舊數據庫、複製、緩衝池等)

這將使我能夠在最短的時間內引入新的驅動器。

您能想到比(不涉及引入新的 SQL Server 實例)更快的方法嗎?

因此,在實際情況中進行了一些探勘和應用此解決方案之後,我可以與您分享,使用庫存的 Windows Server 工具遷移您的 SQL Server(系統數據庫、使用者數據庫甚至安裝文件)是可能的。你所要做的就是:

  • 將新儲存引入您的作業系統
  • 打開磁碟管理器(diskmgmt.msc)並將您的磁碟(遷移)轉換為動態
  • 設置針對新驅動器的磁碟(分區)鏡像
  • 等待他們同步
  • 從舊磁碟(分區)中刪除鏡像

這個過程有一些限制,而且 I\O 顯然很昂貴,並且肯定會減慢您的 SQL Server 實例,但最重要的是 - 這可以在它一直線上的同時移動它,這是我的主要需求解決方案。

按照此處的過程:移動數據庫文件將數據庫移動到新儲存。您可以讓實例線上,但每個數據庫都需要離線,同時將其文件複製到新位置。

或者,您可以提供新驅動器,關閉 SQL Server,將所有文件複製到新驅動器,解除安裝舊驅動器,將新驅動器安裝在與舊驅動器相同的文件夾或驅動器號中,然後重新啟動 SQL Server。

在這兩種情況下,在您開始之前備份您的數據庫 在您成功遷移到新驅動器並為您的數據庫進行新備份之前,不要從舊驅動器中刪除任何文件。

我現在需要實現的是強制一種可用的 HA 技術將我的數據庫集的副本創建到同一個 SQL Server 實例中。

為此,請使用備份/恢復,而不是跨國複製。複製更複雜、更昂貴,並且不支持沒有主鍵的表或所有數據庫對象。因此,對於每個數據庫:

  1. 將數據庫置於完全恢復模式
  2. 進行完整備份並使用新名稱和位置進行還原,無需恢復
  3. 對源數據庫進行尾部日誌備份(使其離線)。
  4. 通過恢復在新數據庫上還原尾部日誌備份。
  5. 重命名或刪除舊數據庫
  6. 重命名新數據庫(重新聯機)。
  7. 恢復新數據庫所需的恢復模式。

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