备份 SQL Server 虚拟机
Azure 备份提供备份托管 SQL Server 的虚拟机(VM)的功能。 这些备份不仅包含 SQL Server 数据库,还包含 VM 中的所有其他内容,因此可以根据需要进行完整还原。 尽管此方法可能不适用于每个方案,但它提供了针对勒索软件攻击等问题的可靠防护措施。
VM 级备份是 SQL Server 感知型备份,也称为应用程序感知型备份,可确保创建应用程序一致性备份。 这意味着还原 VM 级备份不会中断 SQL Server 功能。 使用此选项时,SQL Server 日志指示 I/O 已暂时冻结,然后在完成后恢复。
将 SQL Server 备份与快照相结合可能会导致问题。 如果快照延迟导致备份失败,请 [HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\BCDRAGENT] 对密钥设置以下值:
"USEVSSCOPYBACKUP"="TRUE"
将本地磁盘或网络共享用于备份文件
与内部部署 SQL Server 实例一样,数据库可以备份到连接到虚拟机的磁盘或网络共享(包括 SQL Server 有权访问的 Azure Files 文件共享)。 如果要备份到与 VM 本地相连的磁盘,请确保它们不会写入在关闭或重启时会被擦除的临时存储空间。 你可能还希望确保将备份复制到第二个位置,以免创建单一故障点。
将数据库备份到 URL 并从其中还原
另一个选项是配置 VM 中安装的 SQL Server 实例的备份到 URL。 与在本地进行的备份不同,从 IaaS VM 的 URL 进行备份和还原实际上是本地选项。
备份到 URL 需要 Azure 存储帐户,并使用 Azure Blob 存储服务。 存储帐户中有容器,Blob 存储在容器中。 与本地磁盘上的路径不同,备份文件的路径看起来类似于https://ACCOUNTNAME.blob.core.windows.net/ContainerName/MyDatabase.bak。 可以在容器下包含更多文件夹名称,以便更轻松地识别备份(例如 FULL、DIFF、LOG)。
要备份到 URL 或从其中还原,必须在 SQL Server 实例和 Azure 之间建立身份验证。 请记住,在 Azure VM 内部,SQL Server 不知道它是在 Azure 上运行的。 SQL Server 凭据可以由 Azure 存储帐户名称和访问密钥身份验证或共享访问签名组成。 如果使用前者,备份会作为页 blob 进行存储;如果使用后者,则作为块 blob 进行存储。 从 SQL Server 2016 开始,只有块 Blob 可用,因此应使用共享访问签名。 从成本的角度来看,块 Blob 也更便宜,并且共享访问签名令牌提供更好的安全控制。
从 URL 还原就像从磁盘或网络共享还原一样简单。 在 SQL Server Management Studio UI 中,从向导中的备份媒体类型中选择 URL。 如果使用 Transact-SQL,而不是使用 FROM DISK,则需将 FROM URL 与相应的位置和备份文件名一起使用。 下面是一些示例语句:
下面的语句备份事务日志。
BACKUP LOG contoso
TO URL = 'https://myacc.blob.core.windows.net/mycontainer/contoso202003271200.trn'
以下语句将还原完整数据库备份,而无需恢复它,以便应用差异备份或事务日志备份。
RESTORE DATABASE contoso
FROM URL = 'https://myacc.blob.core.windows.net/mycontainer/contoso20200327.bak'
WITH NORECOVERY
使用 SQL Server 资源提供程序自动备份
安装了 SQL Server 的任何 IaaS VM 都可以使用 SQL Server 资源提供程序。 其选项之一是能够配置自动备份,以便 Azure 负责备份 SQL Server 数据库。 它需要使用存储帐户。
这样实现备份的一个好处是可以管理备份的保留时间。 另一个好处是,由于能够将数据库和事务日志备份全部放在一个易于配置的位置,因此可以确保 RPO。 下图显示了在 Azure 门户中配置自动备份的示例。
自动备份选项目前仅适用于基于 Windows Server 的 SQL Server 安装。
重要
您选择一种在 IaaS 上的 SQL Server 部署中备份数据库的方法。 例如,如果使用自动备份(尤其是事务日志备份),则不要在 VM 内的实例级别配置这些备份。 如果操作不协调,可能会造成日志链问题,从而影响数据库还原,因为每个日志备份都会清除日志,您必须拥有一整条未中断的日志备份链才能执行日志还原。 例如,如果事务日志备份发生在来宾内部以及 Azure 级别,则可能需要将备份拼凑在一起才能进行还原。
虽然备份可以自动化,但还原不能。 您需要在 SQL Server 中配置并使用从 URL 还原的功能。