Azure 虛擬機器的自動備份 v2 (Resource Manager)

適用于:Azure VM 上的SQL Server

「自動備份 v2」會針對執行 SQL Server 2016 或更新版本的 Standard、Enterprise 或 Developer 版本之 Azure VM 上所有現有和新的資料庫,自動設定受控備份至 Microsoft Azure。 這可讓您設定利用長期Azure Blob 儲存體的一般資料庫備份。 自動備份 v2 相依於 SQL Server 基礎結構即服務 (IaaS) 代理程式延伸模組

必要條件

若要使用「自動備份 v2」,請檢閱下列必要條件:

作業系統

  • Windows Server 2012 R2 或更新版本

SQL Server 版本

  • SQL Server 2016 或更新版本:Developer、Standard 或 Enterprise

注意

對於 SQL Server 2014,請參閱適用於 SQL Server 2014 的自動備份

資料庫組態

  • 目標的使用者資料庫必須使用完整復原模型。 系統資料庫不一定要使用完整復原模式。 不過,如果要求針對模型或 MSDB 進行記錄備份,就必須使用完整復原模式。 如需深入瞭解完整復原模式對備份之影響,請參閱在完整復原模式下備份
  • SQL Server 的 VM 已在完整管理模式下註冊 SQL IaaS 代理程式擴充功能。
  • 自動備份相依於完整的 SQL Server IaaS 代理程式擴充功能。 如此一來,只有預設執行個體上的目標資料庫或單一具名執行個體,才會支援自動備份。 如果沒有預設執行個體,或是存在多個具名執行個體,SQL IaaS 延伸模組即會運作失敗,且自動備份將無法運作。

設定

下表說明可以為自動備份設定的選項。 實際的設定步驟會依據您是使用 Azure 入口網站或 Azure Windows PowerShell 命令而有所不同。 請注意,自動備份預設會使用 備份壓縮 ,而且您無法將其停用。

基本設定

設定 範圍 (預設值) 描述
自動備份 啟用/停用 (已停用) 針對執行 SQL Server 2016/2017 Developer、Standard 或 Enterprise 的 Azure VM,啟用或停用自動備份。
保留週期 1-90 天 (90 天) 保留備份的天數。
儲存體帳戶 Azure 儲存體帳戶 將自動備份檔案儲存在 Blob 儲存體中時,所使用的 Azure 儲存體帳戶。 這個位置會建立一個容器來儲存所有備份檔案。 備份檔案命名慣例包括日期、時間和資料庫 GUID。
加密 啟用/停用 (已停用) 啟用或停用加密。 啟用加密時,用來還原備份的憑證會放在指定的儲存體帳戶中。 其使用相同的自動備份容器與命名慣例。 如果密碼變更,就會以該密碼產生新的憑證,但是舊的憑證還是會保留,以還原先前的備份。
密碼 密碼文字 加密金鑰的密碼。 唯有啟用加密時,才需要此密碼。 若要還原加密的備份,您必須要有建立備份時所使用的正確密碼和相關憑證。

進階設定

設定 範圍 (預設值) 描述
系統資料庫備份 啟用/停用 (已停用) 當啟用時,此功能會一併備份系統資料庫:Master、MSDB 及 Model。 針對 MSDB 和 Model 資料庫,如果您想要進行記錄備份,請確認它們處於完整復原模式。 針對 Master 是一律不進行記錄備份。 而針對 TempDB 則不進行任何備份。
備份排程 手動/自動化 (自動化) 預設會根據記錄的成長情況自動決定備份排程。 手動備份排程可讓使用者指定備份的時間範圍。 在此情況下,只會以指定的頻率且在特定一天的指定時間範圍期間進行備份。
完整備份頻率 每天/每週 完整備份的頻率。 在這兩種情況下,完整備份都會在下一個排定的時間範圍期間開始進行。 選取 [每週] 時,備份可以跨多天,直到所有資料庫都已順利備份為止。
完整備份開始時間 00:00 – 23:00 (01:00) 可進行完整備份的特定一天開始時間期間。
完整備份時間範圍 1 – 23 小時 (1 小時) 可進行完整備份的特定一天時間範圍持續時間。
記錄備份頻率 5 – 60 分鐘 (60 分鐘) 記錄備份的頻率。

了解完整備份頻率

了解每天與每週備份之間的差異相當重要。 請考慮下列兩個案例範例。

案例 1:每週備份

您有一部包含一些大型資料庫的 SQL Server VM。

在星期一,您以下列設定啟用「自動備份 v2」:

  • 備份排程:手動
  • 完整備份頻率:每週
  • 完整備份開始時間:01:00
  • 完整備份時間範圍:1 小時

這意謂著下一個可用的備份時間範圍是星期二上午 1 點,持續時間為 1 小時。 到該時間,「自動備份」會開始逐一備份您的資料庫。 在此案例中,由於您的資料庫相當大,因此會完成前幾個資料庫的完整備份。 不過,在一小時之後,並非所有資料庫都已完成備份。

如果發生這種情況,「自動備份」就會在下一天 (星期三) 的上午 1 點備份剩餘的資料庫,持續時間為一小時。 如果在該時間未完成所有資料庫的備份,就會在下一天的相同時間再次嘗試。 這會持續直到順利備份所有資料庫為止。

再次到了星期二後,「自動備份」就會重新開始將所有資料庫備份一遍。

此案例說明「自動備份」只會在指定的時間範圍內運作,且每個資料庫每週會備份一次。 這也說明在無法一天內完成所有備份的情況下,可以跨多天執行備份。

案例 2:每日備份

您有一部包含一些大型資料庫的 SQL Server VM。

在星期一,您以下列設定啟用「自動備份 v2」:

  • 備份排程:手動
  • 完整備份頻率:每日
  • 完整備份開始時間:22:00
  • 完整備份時間範圍:6 小時

這意謂著下一個可用的備份時間範圍是星期一下午 10 點,持續時間為 6 小時。 到該時間,「自動備份」會開始逐一備份您的資料庫。

然後,在星期二下午 10 點,會重新開始進行所有資料庫的完整備份,持續時間為 6 小時。

重要

備份會在每個間隔內依序進行。 針對具有大量資料庫的執行個體,請以足夠的時間來排程您的備份間隔,以容納所有備份。 如果備份無法在指定的間隔內完成,某些備份可能會略過,而您的單一資料庫備份之間的時間可能會高於設定的備份間隔時間,這可能會對還原點目標 (RPO) 造成負面影響。

設定新的虛擬機器

以 Resource Manager 部署模型建立新的 SQL Server 2016 或更新版本虛擬機器時,請使用 Azure 入口網站來設定自動備份。

在 [SQL Server 設定] 索引標籤中,選取 [自動備份] 下的 [啟用]。 當您啟用自動備份時,可以進行下列設定:

  • 備份的保留期間 (最多 90 天)
  • 用於備份的儲存體帳戶和儲存體容器
  • 備份的加密選項和密碼
  • 備份系統資料庫
  • 設定備份排程

若要加密備份,請選取 [啟用]。 然後指定 [密碼] 。 Azure 會建立憑證來加密備份,並使用指定的密碼來保護該憑證。

選擇 [選取儲存體容器],以指定要用來儲存備份的容器。

依預設會自動設定排程,但您可以選取 [手動] 以建立自己的排程,如此,您即可設定備份頻率、備份時間範圍和記錄備份頻率 (以分鐘為單位)。

下列 Azure 入口網站螢幕擷取畫面顯示建立新的 SQL Server VM 時的自動備份設定:

Azure 入口網站中的自動備份組態

設定現有的虛擬機器

針對現有的 SQL Server 虛擬機器,請移至 SQL 虛擬機器資源,然後選取 [備份] 以設定自動備份。

選取 [啟用] 以設定自動備份設定。

您可以設定保留期限 (最多90天)、要用來儲存備份的儲存體帳戶容器,以及加密和備份排程。 根據預設,排程會自動進行。

現有 VM 的自動備份

如果您想設定自己的備份排程,請選擇 [手動] 並設定備份頻率 (無論您是否要備份系統資料庫),以及交易記錄備份間隔 (以分鐘為單位)。

選取 [手動] 以設定您自己的備份排程

完成後,請按一下 [備份] 設定頁面底部的 [套用] 按鈕,以儲存變更。

如果這是您第一次啟用「自動備份」,Azure 就會在背景中設定 SQL Server IaaS Agent。 在此期間,Azure 入口網站可能不會顯示已設定自動備份。 請等候幾分鐘的時間來安裝及設定代理程式。 之後,Azure 入口網站將會反映新的設定。

使用 PowerShell 設定

您可以使用 PowerShell 來設定「自動備份 v2」。 開始進行之前,您必須:

注意

本文使用 Azure Az PowerShell 模組,這是與 Azure 互動時建議使用的 PowerShell 模組。 若要開始使用 Az PowerShell 模組,請參閱安裝 Azure PowerShell。 若要瞭解如何遷移至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 遷移至 Az。

安裝 SQL Server IaaS 擴充功能

如果您是從 Azure 入口網站佈建 SQL Server 虛擬機器,則「SQL Server IaaS 擴充功能」應該已經安裝妥當。 您可透過呼叫 Get-AzVM 命令並檢查 Extensions 屬性,以判斷是否已為 VM 安裝該延伸模組。

$vmname = "vmname"
$resourcegroupname = "resourcegroupname"

(Get-AzVM -Name $vmname -ResourceGroupName $resourcegroupname).Extensions 

如果已安裝 SQL Server IaaS 代理程式延伸模組,您應該會看到它列為 "SqlIaaSAgent" 或 "SQLIaaSExtension"。延伸模組的 ProvisioningState 也應該顯示為「成功」。

如果未安裝或無法佈建擴充功能,您可以使用下列命令來安裝。 除了 VM 名稱和資源群組之外,您還必須指定 VM 所在的區域 ( $region)。

$region = "EASTUS2"
Set-AzVMSqlServerExtension -VMName $vmname `
    -ResourceGroupName $resourcegroupname -Name "SQLIaasExtension" `
    -Version "2.0" -Location $region 

確認目前的設定

如果已在佈建期間啟用自動備份,則可使用 PowerShell 來檢查目前的設定。 請執行 Get-AzVMSqlServerExtension 命令並檢查 AutoBackupSettings 屬性:

(Get-AzVMSqlServerExtension -VMName $vmname -ResourceGroupName $resourcegroupname).AutoBackupSettings

您應該會看到類似以下的輸出:

Enable                      : True
EnableEncryption            : False
RetentionPeriod             : 30
StorageUrl                  : https://test.blob.core.windows.net/
StorageAccessKey            :  
Password                    : 
BackupSystemDbs             : False
BackupScheduleType          : Manual
FullBackupFrequency         : WEEKLY
FullBackupStartTime         : 2
FullBackupWindowHours       : 2
LogBackupFrequency          : 60

如果輸出顯示 Enable 是設定為 False,您就必須啟用自動備份。 好消息是,啟用和設定「自動備份」的方式是相同的。 如需這項資訊,請參閱下一節。

注意

如果您在進行變更後立即檢查設定,可能會得到舊的組態值。 只要等幾分鐘後再重新檢查設定,即可確定已套用您的變更。

設定自動備份 v2

您可以使用 PowerShell 來啟用「自動備份」,也可以隨時修改其組態和行為。

首先,為備份檔案選取或建立儲存體帳戶。 以下指令碼會選取或建立儲存體帳戶 (如果不存在)。

$storage_accountname = "yourstorageaccount"
$storage_resourcegroupname = $resourcegroupname

$storage = Get-AzStorageAccount -ResourceGroupName $resourcegroupname `
    -Name $storage_accountname -ErrorAction SilentlyContinue
If (-Not $storage)
    { $storage = New-AzStorageAccount -ResourceGroupName $storage_resourcegroupname `
    -Name $storage_accountname -SkuName Standard_GRS -Location $region } 

注意

「自動備份」不支援將備份存放在進階儲存體中,但是可以從使用「進階儲存體」的 VM 磁碟進行備份。

接著,使用 New-AzVMSqlServerAutoBackupConfig 命令來啟用及設定自動備份 v2 設定,以將備份存放在 Azure 儲存體帳戶中。 在此範例中,是將備份設定為保留 10 天。 系統資料庫備份已啟用。 完整備份是排定為每週執行,時間範圍是從 20:00 開始並持續 2 小時。 記錄備份是排定為每 30 分鐘執行一次。 第二個命令 Set-AzVMSqlServerExtension 會使用這些設定來更新指定的 Azure VM。

$autobackupconfig = New-AzVMSqlServerAutoBackupConfig -Enable `
    -RetentionPeriodInDays 10 -StorageContext $storage.Context `
    -ResourceGroupName $storage_resourcegroupname -BackupSystemDbs `
    -BackupScheduleType Manual -FullBackupFrequency Weekly `
    -FullBackupStartHour 20 -FullBackupWindowInHours 2 `
    -LogBackupFrequencyInMinutes 30 

Set-AzVMSqlServerExtension -AutoBackupSettings $autobackupconfig `
    -VMName $vmname -ResourceGroupName $resourcegroupname 

可能需要幾分鐘的時間來安裝及設定 SQL Server IaaS 代理程式。

若要啟用加密,請修改先前的指令碼,為 CertificatePassword 參數傳遞 EnableEncryption 參數和密碼 (安全字串)。 下列指令碼會啟用上述範例中的自動備份設定,並新增加密。

$password = "P@ssw0rd"
$encryptionpassword = $password | ConvertTo-SecureString -AsPlainText -Force  

$autobackupconfig = New-AzVMSqlServerAutoBackupConfig -Enable `
    -EnableEncryption -CertificatePassword $encryptionpassword `
    -RetentionPeriodInDays 10 -StorageContext $storage.Context `
    -ResourceGroupName $storage_resourcegroupname -BackupSystemDbs `
    -BackupScheduleType Manual -FullBackupFrequency Weekly `
    -FullBackupStartHour 20 -FullBackupWindowInHours 2 `
    -LogBackupFrequencyInMinutes 30 

Set-AzVMSqlServerExtension -AutoBackupSettings $autobackupconfig `
    -VMName $vmname -ResourceGroupName $resourcegroupname

若要確認是否已套用您的設定,請確認自動備份組態

停用自動備份

若要停用自動備份,請執行相同的指令碼,但不要對 New-AzVMSqlServerAutoBackupConfig 命令使用 -Enable 參數。 沒有 -Enable 參數時,即表示通知命令停用此功能。 和安裝一樣,可能需要幾分鐘的時間來停用自動備份。

$autobackupconfig = New-AzVMSqlServerAutoBackupConfig -ResourceGroupName $storage_resourcegroupname

Set-AzVMSqlServerExtension -AutoBackupSettings $autobackupconfig `
    -VMName $vmname -ResourceGroupName $resourcegroupname

範例指令碼

以下指令碼提供一組變數,您可以自訂這些變數來為您的 VM 啟用及設定「自動備份」。 在您的案例中,您可能需要根據您的需求自訂此指令碼。 例如,如果您想要停用系統資料庫備份或啟用加密,您就必須進行變更。

$vmname = "yourvmname"
$resourcegroupname = "vmresourcegroupname"
$region = "Azure region name such as EASTUS2"
$storage_accountname = "storageaccountname"
$storage_resourcegroupname = $resourcegroupname
$retentionperiod = 10
$backupscheduletype = "Manual"
$fullbackupfrequency = "Weekly"
$fullbackupstarthour = "20"
$fullbackupwindow = "2"
$logbackupfrequency = "30"

# ResourceGroupName is the resource group which is hosting the VM where you are deploying the SQL Server IaaS Extension 

Set-AzVMSqlServerExtension -VMName $vmname `
    -ResourceGroupName $resourcegroupname -Name "SQLIaasExtension" `
    -Version "2.0" -Location $region

# Creates/use a storage account to store the backups

$storage = Get-AzStorageAccount -ResourceGroupName $resourcegroupname `
    -Name $storage_accountname -ErrorAction SilentlyContinue
If (-Not $storage)
    { $storage = New-AzStorageAccount -ResourceGroupName $storage_resourcegroupname `
    -Name $storage_accountname -SkuName Standard_GRS -Location $region }

# Configure Automated Backup settings

$autobackupconfig = New-AzVMSqlServerAutoBackupConfig -Enable `
    -RetentionPeriodInDays $retentionperiod -StorageContext $storage.Context `
    -ResourceGroupName $storage_resourcegroupname -BackupSystemDbs `
    -BackupScheduleType $backupscheduletype -FullBackupFrequency $fullbackupfrequency `
    -FullBackupStartHour $fullbackupstarthour -FullBackupWindowInHours $fullbackupwindow `
    -LogBackupFrequencyInMinutes $logbackupfrequency

# Apply the Automated Backup settings to the VM

Set-AzVMSqlServerExtension -AutoBackupSettings $autobackupconfig `
    -VMName $vmname -ResourceGroupName $resourcegroupname

監視

若要監控 SQL Server 2016/2017 上的自動備份,您有兩個主要選項。 因為自動備份使用 SQL Server 受控備份功能,所以相同的監控技術適用於兩者。

首先,您可以藉由呼叫 msdb.managed_backup.sp_get_backup_diagnostics 來輪詢狀態。 或查詢 msdb.managed_backup.fn_get_health_status 資料表值函式。

另一個選項是利用內建的 Database Mail 功能進行通知。

  1. 呼叫 msdb.managed_backup.sp_set_parameter 預存程序,以將電子郵件地址指派至 SSMBackup2WANotificationEmailIds 參數。
  2. 啟用 SendGrid,以從 Azure VM 傳送電子郵件。
  3. 使用 SMTP 伺服器與使用者名稱以設定 Database Mail。 您可以在 SQL Server Management Studio 中或使用 Transact-SQL 命令設定 Database Mail。 如需詳細資訊,請參閱 Database Mail
  4. 設定 SQL Server Agent 以使用 Database Mail
  5. 確認是否允許 SMTP 連接埠經過本機虛擬機器防火牆和虛擬機器的網路安全性群組。

後續步驟

「自動備份 v2」會在 Azure VM 上設定受控備份。 因此,請務必 檢閱受控備份的文件 ,以了解其行為和隱含意義。

您可以在下列文章中找到適用於 Azure VM 上 SQL Server 的其他備份和還原指引:Azure 虛擬機器中的 SQL Server 備份和還原

如需有關其他可用之自動化工作的資訊,請參閱 SQL Server IaaS 代理程式擴充功能

如需在 Azure VM 上執行 SQL Server 的詳細資訊,請參閱 Azure 虛擬機器上的 SQL Server 概觀