使用 Azure CLI 在 Azure VM 中備份 SQL 資料庫
Azure CLI 可用來從命令列或透過指令碼建立和管理 Azure 資源。 本文說明如何在 Azure VM 中備份 SQL 資料庫,並使用 Azure CLI 觸發隨選備份。 您也可以使用 Azure 入口網站來執行這些動作。
在本文中,我們假設您已在 Azure VM 上安裝了 SQL 資料庫。 (您也可以使用 Azure CLI建立 VM)。
在本文中,您將學會如何:
- 建立復原服務保存庫
- 註冊 SQL Server 並探索伺服器上的資料庫
- 在 SQL 資料庫上啟用備份
- 觸發隨選備份
請參閱 Azure VM 中 SQL 目前支援的案例。
必要條件
在 Azure Cloud Shell 中使用 Bash 環境。 如需詳細資訊,請參閱 Azure Cloud Shell 中的 Bash 快速入門。
若要在本地執行 CLI 參考命令,請安裝 Azure CLI。 若您在 Windows 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱〈如何在 Docker 容器中執行 Azure CLI〉。
如果您使用的是本機安裝,請使用 az login 命令,透過 Azure CLI 來登入。 請遵循您終端機上顯示的步驟,完成驗證程序。 如需其他登入選項,請參閱使用 Azure CLI 登入。
出現提示時,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能詳細資訊,請參閱使用 Azure CLI 擴充功能。
執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
建立復原服務保存庫
復原服務保存庫是一種邏輯容器,可儲存每個受保護資源 (例如 Azure VM 或 Azure VM 上執行的 SQL 或 HANA 資料庫等工作負載) 的備份資料。 執行受保護資源的備份作業時,它會在復原服務保存庫內建立復原點。 然後您可以使用其中一個復原點,將資料還原到指定的時間點。
使用 az backup vault create 命令,建立復原服務保存庫。 使用與您想要保護的 VM 相同的資源群組和位置。 了解如何使用 Azure CLI 建立 Windows VM 和 Linux VM。
在本文中,我們將使用:
- 名為 SQLResourceGroup 的資源群組
- 名為 testSQLVM 的 VM
- westus2 位置中的資源。
執行下列命令來建立名為 SQLVault的保存庫。
az backup vault create --resource-group SQLResourceGroup \
--name SQLVault \
--location westus2
根據預設,已針對異地備援儲存體設定復原服務保存庫。 異地備援儲存體可確保您的備份資料會複寫到次要 Azure 區域,即使與主要區域相距數百英哩。 如果需要修改儲存體備援設定,請使用 az backup vault backup-properties set 命令。
az backup vault backup-properties set \
--name SQLVault \
--resource-group SQLResourceGroup \
--backup-storage-redundancy "LocallyRedundant/GeoRedundant"
若要確認是否已成功建立保存庫,請使用 az backup vault list 命令。 回應會顯示為:
Location Name ResourceGroup
--------- --------------- -------------
westus2 SQLVault SQLResourceGroup
註冊並保護 SQL Server
若要向復原服務保存庫註冊 SQL Server,請使用 az backup container register 命令。 VMResourceId 是您為了安裝 SQL 所建立 VM 的資源識別碼。
az backup container register --resource-group SQLResourceGroup \
--vault-name SQLVault \
--workload-type SQLDataBase \
--backup-management-type AzureWorkload \
--resource-id VMResourceId
注意
若 VM 所在的資源群組與保存庫不同,則 SQLResourceGroup 會使用建立保存庫的資源群組。
若註冊 SQL Server,系統就會自動探索伺服器上目前所有的資料庫。 不過,若要探索未來可能新增的任何新資料庫,請參閱探索新增至已註冊 SQL Server 的新資料庫一節。
若要確認是否已成功向保存庫註冊 SQL 執行個體,請使用 az backup container list 命令。 回應會顯示為:
Name Friendly Name Resource Group Type Registration Status
------------------------------------------------------ -------------- -------------------- --------- ----------------------
VMAppContainer;Compute;SQLResourceGroup;testSQLVM testSQLVM SQLResourceGroup AzureWorkload Registered
注意
上述輸出中的 name 資料行會參考容器名稱。 下一節將使用此容器名稱來啟用備份並觸發這些備份。 例如,VMAppContainer;Compute;SQLResourceGroup;testSQLVM。
在 SQL 資料庫上啟用備份
針對您在上一個步驟中註冊的 SQL 執行個體,您可以使用 az backup protectable-item list 命令,列出從執行個體中探索到的所有資料庫。
az backup protectable-item list --resource-group SQLResourceGroup \
--vault-name SQLVault \
--workload-type SQLDataBase \
--backup-management-type AzureWorkload \
--protectable-item-type SQLDataBase
--output table
您應該會在這份清單上找到要備份的資料庫,如下所示:
Name Protectable Item Type ParentName ServerName IsProtected
----------------------------- ---------------------- ------------ ----------- ------------
sqldatabase;mssqlserver;master SQLDataBase MSSQLServer testSQLVM NotProtected
sqldatabase;mssqlserver;model SQLDataBase MSSQLServer testSQLVM NotProtected
sqldatabase;mssqlserver;msdb SQLDataBase MSSQLServer testSQLVM NotProtected
現在,設定 sqldatabase;mssqlserver;master 資料庫的備份。
若要設定和保護資料庫上的備份 (一次一個),請使用 az backup protection enable-for-azurewl 命令。 提供您要使用的原則名稱。 若要使用 CLI 建立原則,請使用 az backup policy create 命令。 在本文中,我們使用了 testSQLPolicy 原則。
az backup protection enable-for-azurewl --resource-group SQLResourceGroup \
--vault-name SQLVault \
--policy-name SQLPolicy \
--protectable-item-name "sqldatabase;mssqlserver;master" \
--protectable-item-type SQLDataBase \
--server-name testSQLVM \
--workload-type SQLDataBase \
--output table
如果您有 SQL Always On 可用性群組,而且想要識別可用性群組內的可保護資料來源,您可以使用相同的命令。 在這裡,可保護的項目類型是 SQLAG。
若要確認上述備份設定是否已完成,請使用 az backup job list 命令。 輸出會顯示為:
Name Operation Status Item Name Start Time UTC
------------------------------------ --------------- --------- ---------- -------------------
e0f15dae-7cac-4475-a833-f52c50e5b6c3 ConfigureBackup Completed master 2019-12-03T03:09:210831+00:00
az backup job list 命令會列出所有已執行或目前正在受保護資料庫上執行的備份作業 (已排定或隨選的備份),還會列出註冊、設定備份、和刪除備份資料等其他作業。
注意
要備份在 Azure VM 中執行的 SQL 資料庫時,Azure 備份不會配合日光節約時間的變更自動調整。
請視需要手動修改原則。
啟用自動保護
為求備份設定的順暢,可以使用特定原則自動保護未來新增的所有資料庫。 若要啟用自動保護,請使用 az backup protection auto-enable-for-azurewl 命令。
由於指示是要備份所有未來的資料庫,因此,作業會在 SQLInstance 層級完成。
az backup protection auto-enable-for-azurewl --resource-group SQLResourceGroup \
--vault-name SQLVault \
--policy-name SQLPolicy \
--protectable-item-name "sqlinstance;mssqlserver" \
--protectable-item-type SQLInstance \
--server-name testSQLVM \
--workload-type MSSQL\
--output table
觸發隨選備份
若要觸發隨選備份,請使用 az backup protection backup-now 命令。
注意
此備份的保留期間取決於您執行的隨選備份類型。
- 「隨選完整」備份至少會保留「45 天」,最多保留「99 年」。
- 「隨選僅複製完整」備份可接受任何保留期間值。
- 「隨選差異」備份會按照原則中所設的排程差異來保留備份。
- 「隨選記錄」備份會按照原則中所設的排程記錄保留期來保留備份。
az backup protection backup-now --resource-group SQLResourceGroup \
--item-name sqldatabase;mssqlserver;master \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--backup-type Full
--retain-until 01-01-2040
--output table
輸出會顯示為:
Name ResourceGroup
------------------------------------ -------------
e0f15dae-7cac-4475-a833-f52c50e5b6c3 sqlResourceGroup
回應會提供您作業名稱。 您可以使用 az backup job show 命令,利用此作業名稱來追蹤作業狀態。