Share via


使用 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 VM 或 Azure VM 上執行的 SQL 或 HANA 資料庫等工作負載) 的備份資料。 執行受保護資源的備份作業時,它會在復原服務保存庫內建立復原點。 然後您可以使用其中一個復原點,將資料還原到指定的時間點。

使用 az backup vault create 命令,建立復原服務保存庫。 使用與您想要保護的 VM 相同的資源群組和位置。 了解如何透過此 VM 快速入門,使用 Azure CLI 建立 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 命令,利用此作業名稱來追蹤作業狀態。

下一步