你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 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 的资源 ID。

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 的新数据库部分。

使用 az backup container list 命令验证 SQL 实例是否已成功注册到保管库。 响应显示为:

Name                                                    Friendly Name    Resource Group        Type           Registration Status
------------------------------------------------------  --------------   --------------------  ---------      ----------------------
VMAppContainer;Compute;SQLResourceGroup;testSQLVM   	testSQLVM        SQLResourceGroup  		AzureWorkload  Registered

备注

以上输出中的“名称”列是指容器名。 此容器名将在后续部分中用于启用备份并触发它们。 例如,VMAppContainer;Compute;SQLResourceGroup;testSQLVM。

在 SQL 数据库上启用备份

az backup protectable-item list 命令列出了在上一步中注册的 SQL 实例上发现的所有数据库。

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 命令来跟踪作业状态。

后续步骤