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 備份」服務會將資料加密並儲存在儲存體帳戶中。
當資料傳輸完成時,協調器會向備份服務確認認可。
在您開始使用 Intune 之前
開始之前,請先驗證下列需求:
- 請確定您具有在 Azure 中執行的 SQL Server 執行個體。 您可以在市集中 快速建立 SQL Server 實例 。
- 檢閱 特性考量 和 情境支持。
- 檢閱此案例的常見問題 。
設定 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 2008 和 2008 R2 的許可權,請參閱 這裡。
針對所有其他版本,請依照下列步驟修正權限:
使用具有 SQL Server 系統管理員權限的帳戶登入 SQL Server Management Studio (SSMS)。 除非您需要特殊權限,否則 Windows 驗證應該能運作。
在 SQL Server 上,開啟 [安全性]/[登入] 資料夾。
以滑鼠右鍵按一下 [登入] 資料夾,然後選取 [新增登入]。 在 [登入 - 新增] 中,選取 [搜尋]。
Windows 虛擬服務帳戶 NT SERVICE\AzureWLBackupPluginSvc 是在虛擬機註冊和 SQL 探索階段期間建立的。 請輸入 [輸入要選取的物件名稱] 中顯示的帳戶名稱。 選取 [檢查名稱] 以解析名稱。 選取 [確定]。
在 [伺服器角色] 中,確定已選取 系統管理員 角色。 選取 [確定]。 現在應該存在必要權限。
如果 SQL Server 實例是 Always-On 可用性群組 (AG) 的一部分,請確定 NT AUTHORITY\SYSTEM 帳戶已啟用 VIEW SERVER STATE 許可權。
現在,請建立資料庫與復原服務保存庫的關聯。 在 Azure 入口網站的 [受保護的伺服器] 清單中,以滑鼠右鍵按一下處於錯誤狀態的伺服器 -> [重新探索 DB]。
在 [通知] 區域中查看進度。 找到選取的資料庫之後,即會出現成功訊息。
注意
如果您的 SQL Server 已安裝多個 SQL Server 實例,則必須將所有 SQL 實例新增 NT Service\AzureWLBackupPluginSvc 帳戶的 sysadmin 許可權。
為 SQL 2008 和 SQL 2008 R2 提供 SQL 系統管理員權限
將 NT AUTHORITY\SYSTEM 和 NT Service\AzureWLBackupPluginSvc 登入新增至 SQL Server 實例:
移至 [物件總管] 中的 SQL Server 執行個體。
瀏覽至 [安全性] -> [登入]
以滑鼠右鍵按一下 [登入],然後選取 [新增登入...]
移至 [一般] 索引標籤,然後輸入 NT AUTHORITY\SYSTEM 作為 [登入名稱]。
移至 [伺服器角色],然後選擇 [公用] 和 [sysadmin] 角色。
移至 [狀態]。 「授與」權限連線到資料庫引擎,且 [登入] 為 [已啟用]。
選取 [確定]。
重複相同的步驟順序 (上述 1-7),將 NT Service\AzureWLBackupPluginSvc 登入新增到 SQL Server 執行個體。 如果登入已存在,請確定其具有 sysadmin 伺服器角色,且在 [狀態] 下具有「授與權限連線到資料庫引擎,且 [登入] 為 [已啟用]」。
授與許可權之後,在入口網站中重新發現資料庫:保存庫 -> 管理 -> 備份基礎結構 -> Azure VM 中的工作負載:
或者,您可以藉由在管理員模式中執行下列 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 恢復點和記錄儲存在本機儲存體和復原服務保存庫中。
若要設定同時備份,請遵循下列步驟:
移至
C:\Program Files\Azure Workload Backup\bin\plugins位置,如果尚不存在,則建立檔案 PluginConfigSettings.json。將逗號分隔的索引鍵值實體,並將索引鍵
EnableLocalDiskBackupForBackupTypes和LocalDiskBackupFolderPath新增至 JSON 檔案。在
EnableLocalDiskBackupForBackupTypes下,列出您要儲存在本機的備份類型。例如,如果您要儲存 完整 備份和 記錄 備份,請註明
["Full", "Log"]。 若要只儲存記錄備份,請提及["Log"]。請在
LocalDiskBackupFolderPath下方提及 本機資料夾的路徑。 請確定您在提及 JSON 檔案中的路徑時,使用 雙斜線 。例如,如果本機備份的慣用路徑是
E:\LocalBackup,請將 JSON 中的路徑稱為E:\\LocalBackup。最終的 JSON 應該會顯示為:
{ "EnableLocalDiskBackupForBackupTypes": ["Log"], "LocalDiskBackupFolderPath": "E:\\LocalBackup", }如果 JSON 檔案中有其他預先填入的專案,請在 右大括弧之前,於 JSON 檔案底部新增上述兩個專案。
若要讓變更立即生效,而不是一小時,請移至 TaskManager>Services,以滑鼠右鍵按兩下 [AzureWLbackupPluginSvc ],然後選取 [ 停止]。
警告
此動作將會取消所有進行中的備份作業。
預存備份檔案的命名慣例及其資料夾結構的命名慣例將會是
{LocalDiskBackupFolderPath}\{SQLInstanceName}\{DatabaseName}。例如,如果您在
ContosoSQL 執行個體下MSSQLSERVER有資料庫 ,則檔案會位於E:\LocalBackup\MSSQLSERVER\Contoso。檔名是用於備份作業的
VDI device set guid。檢查
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