首页 > 数据库 >14.3 SQL Server备份介绍

14.3 SQL Server备份介绍

时间:2023-01-30 11:13:57浏览次数:57  
标签:事务 14.3 数据库 Server 完整 SQL 日志 备份

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为您提供了三种备份类型:完全备份、差异备份和事务日志备份。
  • 完整备份备份整个数据库和事务日志的活动部分。它不会清除事务日志。
  • 差异备份基于完整备份。差异备份备份自上次完全备份以来的更改,并在备份结束时备份事务日志的活动部分。
  • 事务日志备份包括以前日志备份中未备份的所有日志记录。

标签:事务,14.3,数据库,Server,完整,SQL,日志,备份
From: https://www.cnblogs.com/michaelshen/p/17074847.html

相关文章

  • 14.4 SQL Server完整备份
    SQLServer完整备份目录SQLServer完整备份简介使用T-SQL创建数据库的完整备份示例在一个文件中执行多个完整备份从完整备份还原数据库从第一次完整备份恢复从第二次完全......
  • 14.5 SQL Server差异备份
    SQLServer差异备份目录SQLServer差异备份简介创建差异备份示例恢复差异备份总结简介差异备份基于最近的完整备份。换句话说,只有在至少有一个完整备份后,才能创建差异备......
  • 14.6 SQL Server事务日志备份
    SQLServer事务日志备份目录SQLServer事务日志备份简介使用T-SQL创建事务日志备份示例从事务日志备份还原数据库总结简介当数据库的恢复模式为FULL(完整)或BULK_LOGGED(大......
  • 12.1 SQL Server视图
    SQLServer视图(Views)目录SQLServer视图(Views)简介视图的优点安全简单一致性创建视图示例创建一个简单视图重新定义视图使用聚合函数创建视图删除视图简介示例删除一个......
  • SQL Server 存储过程定时转存数据
    CREATEPROCEDURE[dbo].[sp_MES_JTMSLS]--创建存储过程asBEGINBEGINTRANTran_MoveData--开始事务DECLARE@tran_erro......
  • 9.2 SQL Server BEGIN END
    BEGINEND目录BEGINEND简介嵌套BEGIN...END简介BEGIN…END语句用于定义语句块。语句块由一组一起执行的SQL语句组成。语句块也称为批处理。打个比方说,如果语句是句子......
  • 9.4 SQL Server循环
    SQLServer循环目录SQLServer循环简介WHILE示例BREAK简介示例CONTINUE简介示例简介WHILE语句是一个控制流语句,它允许重复执行语句块,只要指定的条件为TRUE。WHILE语法......
  • 9.3 SQL Server IF ELSE
    SQLServerIFELSE目录SQLServerIFELSE简介IF语句示例IFELSE语句示例:嵌套IF…ELSE简介IF...ELSE语句是一种控制流语句,允许根据指定的条件执行或跳过语句块。IF......
  • 9.5 SQL Server游标
    SQLServer游标(CURSOR)目录SQLServer游标(CURSOR)简介什么是数据库游标SQLServer游标生命周期示例简介SQL基于集合进行操作,例如,SELECT语句返回一组称为结果集的行。但......
  • 9.6 SQL Server异常处理
    SQLServer异常处理目录SQLServer异常处理TRYCATCH简介CATCH块中的函数嵌套的TRYCATCH简单示例在事务中使用TRYCATCH的示例THROW简介示例A)以下示例使用THROW语句引......