關於 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 備份」服務會將資料加密並儲存在儲存體帳戶中。
當資料傳輸完成時,協調器會向備份服務確認認可。
在您開始使用 Intune 之前
開始之前,請先驗證下列需求:
- 請確定您具有在 Azure 中執行的 SQL Server 執行個體。 您可以在 Marketplace 中快速建立 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 探索階段建立。 請輸入 [輸入要選取的物件名稱] 中顯示的帳戶名稱。 選取 [檢查名稱] 以解析名稱。 選取 [確定]。
在 [伺服器角色] 中,確定已選取系統管理員角色。 選取 [確定]。 現在應該存在必要權限。
現在,請建立資料庫與復原服務保存庫的關聯。 在 Azure 入口網站的 [受保護的伺服器] 清單中,以滑鼠右鍵按一下處於錯誤狀態的伺服器 -> [重新探索 DB]。
在 [通知] 區域中查看進度。 找到選取的資料庫之後,即會出現成功訊息。
注意
如果您的 SQL Server 安裝了多個 SQL Server 執行個體,您就必須將 NT Service\AzureWLBackupPluginSvc 帳戶的系統管理員權限新增至所有的 SQL 執行個體。
為 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 伺服器角色,且在 [狀態] 下具有「授與權限連線到資料庫引擎,且 [登入] 為 [已啟用]」。
授與權限之後,在入口網站中 [重新探索 DB]:[保存庫] -> [管理] -> [備份基礎結構]-> 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
下的目標位置是否有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