14.3 SQL Server备份介绍

SQL Server备份

什么是备份

备份是完整备份时该数据库的镜像。

备份数据库时,将其复制到磁盘等备份设备。稍后,可以使用备份文件将数据库恢复到其原始状态。

重要的是,有一个良好的备份策略来满足业务需求。备份策略的规划从恢复策略开始。

这些是指导恢复策略的重要问题:

  • 可以容忍的最大数据丢失量是多少?
  • 在发生灾难时恢复数据库的可接受时间是多少?

第一个问题将确定需要的备份类型,第二个问题涉及高可用性解决方案的使用。

为什么要备份

通常,在灾难发生前备份数据库以恢复其状态,例如:

  • 硬件故障
  • 数据库损坏
  • 用户错误操作

此外,还可以使用备份将数据库从一台服务器复制到另一台服务器。例如,在生产服务器上备份一个数据库,然后在测试服务器上恢复它用于测试。

备份的存储位置

理想情况下,应该将备份存储在与SQL Server不同的单独设备上。

因此,不应该将备份存储在SQL server的同一服务器上。原因是如果服务器崩溃,将丢失数据及其备份。

哪些数据库需要备份

您应该备份用户数据库和系统数据库(tempdb系统数据库除外)

备份类型

SQL Server允许在数据库级别创建备份;它不支持表级备份。SQL Server数据库具有以下备份类型:

  • 完整备份
  • 差异(增量)备份
  • 事务日志备份

假设我们在数据库中有一个表,其中有四条记录:

完整备份

完整备份包含整个数据库的副本,包括备份期间写入的已用数据页和日志文件。 完整备份不会截断事务日志。

要恢复数据库,始终需要完整备份。换句话说,如果没有完整备份,则无法恢复差异备份或事务日志备份。

完整备份可能会导致大量磁盘I/O。因此,应该在工作负载较低的时候执行备份。

下图说明了完整备份:

在这张图中,我们有两个完整备份:

  • 第一个完整备份包含id为1的记录

  • 第二个完整备份包含id为1、2和3的记录。

执行完全备份,请使用BACKUP DATABASE语句,语法如下:

BACKUP DATABASE database_name
TO DISK = path_to_backup_file;

此语法中,在TO DISK子句中指定备份文件路径,在BACKUP DATABASE后指定数据库名称。

差异备份

差异备份仅包含自上次完全备份以来已修改的数据。除此之外,差异备份与完整备份相同。

下图说明了差异备份:

在这张图中,我们有两个完整备份和三个差异备份:

  • 第一次差异备份包含id为2的记录,该记录在第一次完全备份之后插入。
  • 第二次差异备份包含id为2和3的记录,这些记录在第一次完全备份之后插入。
  • 第三次差异备份包含id为4的记录,该记录在第二次完全备份之后插入。

差异备份语法如下:

BACKUP DATABASE database_name 
TO DISK = path_to_backup_file 
WITH DIFFERENTIAL;

事务日志备份

事务日志备份包含对数据库所做的所有更改。使用完整大容量日志恢复模式时需要事务日志备份,因为它们需要截断日志。

注意,随后的两个事务日志备份不包含冗余数据。此外,事务日志备份对性能没有影响,因此,可以在工作负载高时执行它。

要执行事务日志备份,数据库的恢复模型需要是FULL(完整)或BULK_LOGGED(大容量日志)。

下图说明了事务日志备份:

图片包含两个完整备份和三个事务日志备份:

  • 第一个事务日志备份包含id为2的记录
  • 第二个事务日志备份包含id为3的记录
  • 第三个事务日志备份包含id为4的记录。

注意,完全备份不会清除事务日志。因此,事务日志备份将复制以前任何其他事务日志备份都没有备份的所有记录。

执行事务日志备份,使用backup log语句,如下:

BACKUP LOG database_name 
TO DISK = path_to_backup_file;

总结

  • SQL Server为您提供了三种备份类型:完全备份、差异备份和事务日志备份。
  • 完整备份备份整个数据库和事务日志的活动部分。它不会清除事务日志。
  • 差异备份基于完整备份。差异备份备份自上次完全备份以来的更改,并在备份结束时备份事务日志的活动部分。
  • 事务日志备份包括以前日志备份中未备份的所有日志记录。
posted @ 2023-01-30 10:58  平元兄  阅读(168)  评论(0编辑  收藏  举报