關於 Azure VM 中的 SQL Server 備份

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

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

注意

Azure VM 的 SQL 資料庫快照式備份現為預覽狀態。 這個獨特的供應項目結合了快照集的優點,讓伺服器有更好的 RTO 卻不受什麼影響,又能擁有低 RPO 的頻繁記錄備份。 如有任何查詢/存取問題,請寫信告訴我們:AskAzureBackupTeam@microsoft.com

若要檢視目前支援的備份和還原案例,請參閱支援矩陣

備份程序

此解決方案會利用 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 Backup architecture

在您開始使用 Intune 之前

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

  1. 請確定您具有在 Azure 中執行的 SQL Server 執行個體。 您可以在 Marketplace 中快速建立 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 上,開啟 [安全性]/[登入] 資料夾。

    Open the Security/Logins folder to see accounts

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

    In the Login - New dialog box, select Search

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

    Select Check Names to resolve the unknown service name

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

    Make sure the sysadmin server role is selected

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

    Verify the server has appropriate permissions

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

    Deployment success message

注意

如果您的 SQL Server 安裝了多個 SQL Server 執行個體,您就必須將 NT Service\AzureWLBackupPluginSvc 帳戶的系統管理員權限新增至所有的 SQL 執行個體。

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

新增 NT AUTHORITY\SYSTEMNT Service\AzureWLBackupPluginSvc 登入至 SQL Server 執行個體:

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

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

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

    New Login using SSMS

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

    Login name for SSMS

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

    Choosing roles in SSMS

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

    Grant permissions in SSMS

  7. 選取 [確定]。

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

  9. 授權後,在入口網站中 [重新探索 DB]:[保存庫] -> [備份基礎結構] -> Azure VM 中的工作負載:

    Rediscover DBs in Azure portal

或者,您可以藉由在管理員模式中執行下列 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 下的目標位置是否有 NT Service\AzureWLBackupPluginSvc讀取並以及寫入權限。

    注意

    針對本機 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
    

下一步

  • 了解如何備份 SQL Server 資料庫。
  • 了解如何還原已備份的 SQL Server 資料庫。
  • 了解如何管理已備份的 SQL Server 資料庫。