共用方式為


關於 Azure VM 中的 SQL Server 備份

Azure 備份 提供以數據流為基礎的特製化解決方案,可備份在 Azure VM 中執行的 SQL Server。 此解決方案會與 Azure 備份的零基礎結構備份、長期保留和集中管理的優點對應。 另還特別針對 SQL Server 提供下列優點:

  • 支援所有備份類型 (完整、差異和記錄) 的工作負載感知備份
  • 15 分鐘的 RPO (復原點目標) 與頻繁的記錄備份
  • 最多可達一秒的時間點復原
  • 個別資料庫層級備份和還原

若要檢視我們今天支援的備份和還原案例,請參閱 支援矩陣

備份程序

此解決方案會利用 SQL 原生 API 來備份您的 SQL 資料庫。

  • 在您指定想要保護的 SQL Server VM 並查詢此 VM 中的資料庫之後,Azure 備份服務會在此 VM 上安裝名為 AzureBackupWindowsWorkload 的工作負載備份擴充功能。

  • 此延伸模組是由一個協調器和一個 SQL 外掛程式所組成。 協調器負責觸發各種作業 (例如設定備份、備份和還原) 的工作流程,而外掛程式則負責實際的資料流程。

  • 為了能夠在此 VM 上探索資料庫,「Azure 備份」會建立 NT SERVICE\AzureWLBackupPluginSvc 帳戶。 此帳戶會用於備份和還原,且必須具備 SQL 系統管理員 (sysadmin) 權限。 帳戶 NT SERVICE\AzureWLBackupPluginSvc虛擬服務帳戶,因此不需要任何密碼管理。 Azure 備份利用 NT AUTHORITY\SYSTEM 帳戶探索/查詢資料庫,因此這個帳戶必須是 SQL 上的公開登入帳戶。 如果您未從 Azure Marketplace 建立 SQL Server VM,您可能會收到 UserErrorSQLNoSysadminMembership 錯誤。 如果發生這種情況, 請遵循這些指示

  • 在您於選取的資料庫上觸發設定保護之後,備份服務便會為協調器設定備份排程及其他原則詳細資料,延伸模組會將這些都快取在 VM 本機。

  • 在排程的時間,協調器會與外掛程式通訊,並開始使用 VDI(虛擬設備介面)從 SQL Server 串流備份數據。

  • 外掛程式會將資料直接傳送到復原服務保存庫,因此不需要暫存位置。 「Azure 備份」服務會將資料加密並儲存在儲存體帳戶中。

  • 當資料傳輸完成時,協調器會向備份服務確認認可。

    SQL 備份架構

在您開始使用 Intune 之前

開始之前,請先驗證下列需求:

  1. 請確定您具有在 Azure 中執行的 SQL Server 執行個體。 您可以在市集中 快速建立 SQL Server 實例
  2. 檢閱 特性考量情境支持
  3. 檢閱此案例的常見問題

設定 VM 權限

當您在 SQL Server 上執行探索時,Azure 備份會執行下列動作:

  • 新增 AzureBackupWindowsWorkload 擴充功能。
  • 建立 NT SERVICE\AzureWLBackupPluginSvc 帳戶以探索虛擬機器上的資料庫。 此帳戶會用於備份和還原,且必須具備 SQL 系統管理員 (sysadmin) 權限。
  • 探索在虛擬機器上執行的資料庫,Azure 備份會使用 NT AUTHORITY\SYSTEM 帳戶。 此帳戶必須是 SQL 上的公用登入。

如果您未在 Azure Marketplace 中建立 SQL Server VM,或是在 SQL 2008 或 2008 R2 上,您可能會收到 UserErrorSQLNoSysadminMembership 錯誤。

如需在 Windows 2008 R2 上執行的 SQL 20082008 R2 的許可權,請參閱 這裡

針對所有其他版本,請依照下列步驟修正權限:

  1. 使用具有 SQL Server 系統管理員權限的帳戶登入 SQL Server Management Studio (SSMS)。 除非您需要特殊權限,否則 Windows 驗證應該能運作。

  2. 在 SQL Server 上,開啟 [安全性]/[登入] 資料夾。

    開啟 [安全性/登入] 資料夾以查看帳戶

  3. 以滑鼠右鍵按一下 [登入] 資料夾,然後選取 [新增登入]。 在 [登入 - 新增] 中,選取 [搜尋]

    在 [登入 - 新增] 對話框中,選取 [搜尋]

  4. Windows 虛擬服務帳戶 NT SERVICE\AzureWLBackupPluginSvc 是在虛擬機註冊和 SQL 探索階段期間建立的。 請輸入 [輸入要選取的物件名稱] 中顯示的帳戶名稱。 選取 [檢查名稱] 以解析名稱。 選取 [確定]。

    選取 [檢查名稱] 以解決服務名稱未知的問題

  5. [伺服器角色] 中,確定已選取 系統管理員 角色。 選取 [確定]。 現在應該存在必要權限。

    確定已選取系統管理員伺服器角色

    如果 SQL Server 實例是 Always-On 可用性群組 (AG) 的一部分,請確定 NT AUTHORITY\SYSTEM 帳戶已啟用 VIEW SERVER STATE 許可權。

    此螢幕快照顯示如何檢查針對備份選取之 SQL Server 實例的許可權。

  6. 現在,請建立資料庫與復原服務保存庫的關聯。 在 Azure 入口網站的 [受保護的伺服器] 清單中,以滑鼠右鍵按一下處於錯誤狀態的伺服器 -> [重新探索 DB]

    確認伺服器具有適當的許可權

  7. 在 [通知] 區域中查看進度。 找到選取的資料庫之後,即會出現成功訊息。

    部署成功訊息

注意

如果您的 SQL Server 已安裝多個 SQL Server 實例,則必須將所有 SQL 實例新增 NT Service\AzureWLBackupPluginSvc 帳戶的 sysadmin 許可權。

為 SQL 2008 和 SQL 2008 R2 提供 SQL 系統管理員權限

NT AUTHORITY\SYSTEMNT Service\AzureWLBackupPluginSvc 登入新增至 SQL Server 實例:

  1. 移至 [物件總管] 中的 SQL Server 執行個體。

  2. 瀏覽至 [安全性] -> [登入]

  3. 以滑鼠右鍵按一下 [登入],然後選取 [新增登入...]

    使用SSMS的新登入

  4. 移至 [一般] 索引標籤,然後輸入 NT AUTHORITY\SYSTEM 作為 [登入名稱]。

    SSMS 的登入名稱

  5. 移至 [伺服器角色],然後選擇 [公用] 和 [sysadmin] 角色。

    在 SSMS 中選擇角色

  6. 移至 [狀態]。 「授與」權限連線到資料庫引擎,且 [登入] 為 [已啟用]

    在 SSMS 中授予許可權

  7. 選取 [確定]。

  8. 重複相同的步驟順序 (上述 1-7),將 NT Service\AzureWLBackupPluginSvc 登入新增到 SQL Server 執行個體。 如果登入已存在,請確定其具有 sysadmin 伺服器角色,且在 [狀態] 下具有「授與權限連線到資料庫引擎,且 [登入] 為 [已啟用]」。

  9. 授與許可權之後,在入口網站中重新發現資料庫:保存庫 -> 管理 -> 備份基礎結構 -> Azure VM 中的工作負載:

    在 Azure 入口網站中重新探索 DB

或者,您可以藉由在管理員模式中執行下列 PowerShell 命令以自動化提供權限。 預設執行個體名稱設定為 MSSQLSERVER。 視需要在指令碼中變更執行個體名稱引數。

param(
    [Parameter(Mandatory=$false)]
    [string] $InstanceName = "MSSQLSERVER"
)
if ($InstanceName -eq "MSSQLSERVER")
{
    $fullInstance = $env:COMPUTERNAME   # In case it is the default SQL Server Instance
}
else
{
    $fullInstance = $env:COMPUTERNAME + "\" + $InstanceName   # In case of named instance
}
try
{
    sqlcmd.exe -S $fullInstance -Q "sp_addsrvrolemember 'NT Service\AzureWLBackupPluginSvc', 'sysadmin'" # Adds login with sysadmin permission if already not available
}
catch
{
    Write-Host "An error occurred:"
    Write-Host $_.Exception|format-list -force
}
try
{
    sqlcmd.exe -S $fullInstance -Q "sp_addsrvrolemember 'NT AUTHORITY\SYSTEM', 'sysadmin'" # Adds login with sysadmin permission if already not available
}
catch
{
    Write-Host "An error occurred:"
    Write-Host $_.Exception|format-list -force
}

設定同時備份

您現在可以設定備份,以同時將 SQL Server 恢復點和記錄儲存在本機儲存體和復原服務保存庫中。

若要設定同時備份,請遵循下列步驟:

  1. 移至 C:\Program Files\Azure Workload Backup\bin\plugins 位置,如果尚不存在,則建立檔案 PluginConfigSettings.json

  2. 將逗號分隔的索引鍵值實體,並將索引鍵 EnableLocalDiskBackupForBackupTypesLocalDiskBackupFolderPath 新增至 JSON 檔案。

    • EnableLocalDiskBackupForBackupTypes 下,列出您要儲存在本機的備份類型。

      例如,如果您要儲存 完整 備份和 記錄 備份,請註明 ["Full", "Log"]。 若要只儲存記錄備份,請提及 ["Log"]

    • 請在 LocalDiskBackupFolderPath 下方提及 本機資料夾的路徑。 請確定您在提及 JSON 檔案中的路徑時,使用 雙斜線

      例如,如果本機備份的慣用路徑是 E:\LocalBackup,請將 JSON 中的路徑稱為 E:\\LocalBackup

      最終的 JSON 應該會顯示為:

      {
         "EnableLocalDiskBackupForBackupTypes": ["Log"],
         "LocalDiskBackupFolderPath": "E:\\LocalBackup",
      }
      

      如果 JSON 檔案中有其他預先填入的專案,請在 右大括弧之前,於 JSON 檔案底部新增上述兩個專案。

  3. 若要讓變更立即生效,而不是一小時,請移至 TaskManager>Services,以滑鼠右鍵按兩下 [AzureWLbackupPluginSvc ],然後選取 [ 停止]。

    警告

    此動作將會取消所有進行中的備份作業。

    預存備份檔案的命名慣例及其資料夾結構的命名慣例將會是 {LocalDiskBackupFolderPath}\{SQLInstanceName}\{DatabaseName}

    例如,如果您在 ContosoSQL 執行個體下MSSQLSERVER有資料庫 ,則檔案會位於 E:\LocalBackup\MSSQLSERVER\Contoso

    檔名是用於備份作業的 VDI device set guid

  4. 檢查LocalDiskBackupFolderPath下的目標位置對是否具有讀取和寫入許可權。

    注意

    針對本機 VM 磁碟上的資料夾,以滑鼠右鍵按兩下資料夾,然後在 [安全性]NT Service\AzureWLBackupPluginSvc 索引標籤上設定 的必要權限。

    如果您使用網路或 SMB 共用,請從已經具有存取共用權限的使用者主控台執行下列 PowerShell Cmdlet 來設定權限:

    $cred = Get-Credential
    New-SmbGlobalMapping -RemotePath <FileSharePath> -Credential $cred -LocalPath <LocalDrive>:  -FullAccess @("<Comma Separated list of accounts>") -Persistent $true
    

    範例

    $cred = Get-Credential
    New-SmbGlobalMapping -RemotePath \\i00601p1imsa01.file.core.windows.net\rsvshare -Credential $cred -LocalPath Y:  -FullAccess @("NT AUTHORITY\SYSTEM","NT Service\AzureWLBackupPluginSvc") -Persistent $true
    

下一步