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}
。例如,如果您在
Contoso
SQL 執行個體下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