你当前正在访问 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 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 的资源 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 命令来跟踪作业状态。