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 入门。
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅 使用 Azure CLI 向 Azure 进行身份验证。
出现提示时,请在首次使用时安装 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 的资源 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 命令来跟踪作业状态。
后续步骤
相关内容
- 通过 REST API 使用 Azure 备份在 Azure VM 中备份 SQL Server 数据库。
- 使用 REST API 在 Azure VM 中还原 SQL Server 数据库。
- 使用 Azure 门户、 Azure CLI、 REST API 管理 Azure VM 中的 SQL Server 数据库。