為運行在 Microsoft Azure 的 SQL Server 虛擬機器啟用自動備份及自動修補

Microsoft Azure 於 2015 年 1 月推出一項基於 SQL Server IaaS Agent 元件的新功能,為運行在 Microsoft Azure 上的 SQL Server 虛擬機器提供自動備份(Automated Backup)及自動修補(Automated Patching)的功能,有助於提升系統管理員或 DBA 在管理 SQL Server 虛擬機器時更有效率也更便利,使用這兩項功能可以在預覽版 Azure 管理入口網站做設定,若遇到需要大量設定的情境,也可以搭配 PowerShell 來進行自動化部署。

有關自動備份和自動修補的說明,請見下列的介紹。

本文索引:

自動備份

自動修補

SQL Server IaaS Agent

學習目標

使用預覽版 Azure 管理入口網站啟用自動備份

使用 PowerShell 啟用自動備份

使用預覽版 Azure 管理入口網站啟用自動修補

使用 PowerShell 啟用自動修補

管理SQL Server IaaS Agent

問題排除

參考資料
 


自動備份

目前自動備份支援的作業系統必須是 Windows Server 2012 或 Windows Server 2012 R2 ,搭配 SQL Server 2014 標準版或企業版。不論是現有的資料庫或是新建立的資料庫都可以在啟用自動備份功能後,依照設定自動為資料庫做備份,其背後是利用 SQL Server 2014 內建的受管理的備份(Managed Backup)來實現自動備份。

本項功能預設為停用,換言之您必須和過去在企業內部部署 SQL Server 一樣,擬訂資料庫備份計畫再以SQL Server Agent 來建立備份排程。當您啟用自動備份,就可以讓 SQL Server 自己做資料庫備份,需設定的項目如下:

  • 保留週期(Retention Period)

    設定備份媒體集(media set)要保留多久,可以設定1至30天。

  • 儲存體帳號(Storage Account)

    預設情況下,備份媒體集則是存放在和虛擬機器相同的儲存體帳戶中,名稱為【虛擬機器名稱- mssqlserver】的容器裡。

    若有災難復原的需求也支援將資料庫備份到不同地區的資料中心。

  • 啟用加密(Encryption)

    預設加密選項為停用。當您啟用加密,相關憑證及金鑰會存放在和虛擬機器相同的儲存體帳戶中名稱為 automaticbackup 的容器裡,啟用加密時必須指定用來加密的密碼。

自動修補

就像目前您所熟悉的做法一樣,在企業內部部署的伺服器中,使用 Windows Update 代理程式,來為伺服器安裝修補程式,差別在於您可以自訂維護視窗(maintenance window),並且不需要任何 Windows Update 的基礎設施(如 Windows Server Update Services),也不需強制要求加入網域,就可以為運行在 Microsoft Azure 上的 SQL Server 虛擬機器進行自動修補。

自動修補功能支援的作業系統有 Windows Server 2012 和 Windows Server 2012 R2 ,搭配 SQL Server 2012 或 SQL Server 2014 。啟用自動修補時,需設定下列的項目:

  • 星期幾(DayOfWeek)

    設定每一週的星期幾進行自動修補。

  • 維護視窗起始時間(MaintenanceWindowStartingHour)

    設定開始自動修補的時間,單位為小時。

  • 維護視窗期間(MaintenanceWindowsDuration)

    設定自動修補的持續時間,單位為分鐘,選項有 60、90、120、150 及 180 分鐘。

  • 修補類別(PatchCategory)

    只有以 PowerShell 設定自動修補時才能指定修補類別。目前自動修補只會安裝重要(Important)類別的修補程式。

SQL Server IaaS Agent

自動備份和自動修補是以基於 Azure 虛擬機器擴充功能(Azure VM Extension)的 SQL Server IaaS Agent 的新功能,可用來幫助系統管理員更有效率的管理 SQL Server 虛擬機器,並提供大量部署的機制(如搭配Azure PowerShell)來派送、設定及移除代理程式。

本文假設您已經具備 Microsoft Azure 訂用帳戶並熟悉如何利用虛擬機器映像建立 SQLServer 的虛擬機器,以及下載並安裝 Azure PowerShell 。

該如何實作上述功能,請見下一節的說明。

學習目標

當您看完本文的介紹,您應該會對下列的操作有一定的了解。

1. 使用預覽版 Azure 管理入口網站啟用自動備份。

2. 使用 PowerShell 啟用自動備份。

3. 使用預覽版 Azure 管理入口網站啟用自動修補。

4. 使用 PowerShell 啟用自動修補。

5. 管理 SQL Server IaaS Agent 。

使用預覽版 Azure 管理入口網站啟用自動備份

目前 SQL Server 虛擬機器的自動備份功能,只有預覽版 Azure 管理入口網站才有支援,請打開瀏覽器並於網址列輸入 https://portal.azure.com ,登入之後請點選【 瀏覽 > 虛擬機器 > 點選要設定的虛擬機器 】。

 

於虛擬機器刀鋒視窗下方點選 Auto backup,可以看到 Automated backup 目前的狀態的預設值為 Disable(停用)。

點選 Enable 來設定自動備份的保留天數,並且指定要放在哪一個儲存體帳戶,您也可以視情況選擇是否啟用加密,若啟用加密必須輸入加密所要使用的密碼,設定完成後按確定。

待設定生效後,就可以在下圖紅色框框處看到您設定自動備份的內容。

上述步驟適用於已經存在的 SQL Server 虛擬機器,您也可以在建立虛擬機器時點選 【 選擇性組態 > 自動備份 】 來設定自動備份,設定方式和設定現有的虛擬機器相同。

當您設定自動備份後,SQL Server IaaS Agent 幫我們做了哪些事情呢?首先它幫我們建立一張可以用來連接儲存體帳戶憑證(AutoBackup_Credential),接著將使用者資料庫加入受管理的備份,透過 smart_admin.fn_backup_db_config 系統函式找到 is_managed_backup_enabled 資料行為 1 的資料列,即可看出有哪些資料庫會被自動備份到儲存體帳戶。

另外在受管理的備份視窗當中,也可以看到和在預覽版 Azure 管理入口網站所設定的相同內容。

使用 PowerShell 啟用自動備份

當您有許多 SQL Server 虛擬機器需要設定自動備份,可以使用 Azure PowerShell 來做大量設定。

下列的 PowerShell 指令碼中,第 8-10 列利用 Get-AzureStorageKey 來取的儲存體帳戶的主要金鑰,接著使用 New-AzureStorageContext 建立自動備份設定所需要的 StorageContext 。第 13 列使用 ConvertTo-SecureString 來產生加密備份所需要的密碼。第 14 列使用 New-AzureVMSqlServerAutoBackupConfig 並傳入前面所建立的變數,來建立自動備份組態設定。第 21 列先用 Get-AzureVM 取得虛擬機器後,傳遞給 Set-AzureVMSqlServerExtension 並搭配 AutoBackupSettings 引數來導入自動備份的相關設定,最後搭配 Update-AzureVM 使設定生效。

使用預覽版 Azure 管理入口網站啟用自動修補

和自動備份相同,只有預覽版 Azure 管理入口網站才有支援 SQL Server 虛擬機器自動修補,請打開瀏覽器並於網址列輸入 https://portal.azure.com,登入之後請點選【瀏覽 > 虛擬機器 > 點選要設定的虛擬機器】。

於虛擬機器刀鋒視窗下方點選 Auto patching,可以看到 Automated patching 目前的狀態的預設值為 Disable(停用)。

點選 Enable 來設定自動修補的排程(Maintenance Schedule),您可以每天都讓 SQL Server IaaS Agent 自動為虛擬機器進行修補,也可以挑選每一週的特定一天來做自動修補;另外自動修補的時間(Maintenance Start hour)以及持續多久(Maintenance window duration),設定完畢後按確定。

等到通知刀鋒視窗出現成功更新自動修補設定時,就表示相關設定已經生效。

您就可以在虛擬機器刀鋒視窗看到自動修補的設定狀況。

上述步驟適用於已經存在的 SQL Server 虛擬機器,您也可以在建立虛擬機器時點選【選擇性組態 > 自動修補】來設定自動修補,設定方式和設定現有的虛擬機器相同,在此就不贅述。

  

使用 PowerShell 啟用自動修補

相較於自動備份所使用的 PowerShell 指令碼,自動修補只需使用下圖第 8-13 列的 New-AzureVMSqlServerAutoPatchingConfig cmdlet 來設定相關自動修補的參數,接著以第 16 列的 Get-AzureVM 取得虛擬機器後,傳遞給 Set-AzureVMSqlServerExtension 並搭配 AutoPatchingSettings 引數來導入自動修補的相關設定,最後搭配 Update-AzureVM 使設定生效。

管理SQL Server IaaS Agent

有關 SQL Server IaaS Agent 的停用、移除甚至是將擴充功能移除,可以分別利用 Set-AzureVMSqlServerExtension 搭配 Disable 引數、Set-AzureVMSqlServerExtension 搭配 Uninstall 引數及 Remove-AzureVMSqlServerExtension 等 cmdlet 來進行,如下列 PowerShell 指令碼。

問題排除

不論是啟用自動修補或自動備份之後,SQL Server 虛擬機器未能依照您所設定的參數來運作,可以嘗試在預覽版 Azure 管理入口網站的虛擬機器刀鋒視窗點選【All settings > 擴充功能】,查看 SqlIaaSAgent 的狀態。

如下圖可見,SqlIaaSAgent 的狀態顯示 Warning,其發生原因是由於虛擬機器有部分重要修補程式未安裝所導致。

因此,建議在啟用相關擴充功能前,可以先檢查虛擬機器是否安裝,以確保自動修補或自動備份功能可以正常運作。

若您使用 Azure PowerShell 將 SqlIaaSAgent 擴充功能移除,再次使用 Set-AzureVMSqlServerExtension cmdlet 設定自動備份,可能遇到下列的錯誤訊息:

解決這個問題比較快的做法是利用預覽版 Azure 管理入口網站重新設定自動備份,就可以把相關的擴充功能及代理程式都安裝完成,您可以在虛擬機器中看到 SQL Server IaaS Agent 已經正常執行。

以及在預覽版 Azure 管理入口網站看到相對應的擴充功能的狀態也呈現 Success。

參考資料

1. Automated Everything with SQL Server on IaaS VMs

2. Automated Backup and Automated Patching for SQL Server in Azure Portal and PowerShell

3. Azure VM Extensions and Features

4. VM Agent and Extensions – Part 1

5. VM Agent and Extensions – Part 2

6. Automated Backup and Patching for SQL Server in Azure Virtual Machines

7. SQL Automated Backup and Patching Support in Existing SQL Server Virtual Machines