当前位置: 首页 > 科技观察

SQLServer备份与恢复-恢复模型探索

时间:2023-03-12 16:05:51 科技观察

1。概述为了创建正确的备份,首先是为每个数据库设置正确的恢复模式。恢复模型基本上告诉SQLServer在事务日志文件中保留哪些数据以及保留多长时间。根据您选择的恢复模式,这还将决定您可以执行哪些类型的备份以及可以执行哪些类型的数据库还原。2.三种恢复模式三种恢复模式可以选择:FullSimpleBulk-Logged每个数据库只能有一种恢复模式,但是每个数据库可以使用不同的恢复模式,所以可以根据处理和备份的需要,选择合适的每个数据库的恢复模型。唯一的例外是TempDB数据库,它必须使用“简单”恢复模型。另外,数据库恢复模式可以随时更改,但这会影响你的备份链,所以最好在更改恢复模式后做一次完整备份。可以使用T-SQL或SQLServerManagementStudio更改恢复模型。以下是有关如何执行此操作的示例。使用T-SQL更改“完全”恢复AdventureWorks数据库。ALTERDATABASEAdventureWorksSETRECOVERYFULLGO使用SSMS更改AdventureWorks数据库的恢复模型。3.完整恢复模型完整恢复模型告诉SQLServer将所有事务数据保存在事务日志中,直到发生事务日志备份或事务日志被截断。它的工作方式是,针对SQLServer发出的所有事务首先进入事务日志,然后将数据写入适当的数据文件。这允许SQLServer回滚过程的每个步骤,以防发生错误或事务因任何原因被取消。所以当数据库设置为“full”恢复模式时,由于所有的事务都被保存了,你可以做时间点恢复,也就是说你可以恢复到事务发生之前的某个时间点,就好像你不小心删除了所有的事务一样表中的数据。完整恢复模式是最完整的恢复模式,只要所有备份文件可用且可读,您就可以将所有数据恢复到任意时间点。使用此模型,所有操作都被完整记录,这意味着您可以将数据库恢复到任何时间点。此外,如果数据库设置为完全恢复模式,您还需要发布事务日志备份,否则您的数据库事务日志将永远增长。以下是您可能选择此恢复模式的一些原因:数据很重要,您希望最大限度地减少数据丢失。您需要能够进行时间点恢复。您正在使用数据库镜像您正在使用AlwaysOn可用性组当您的数据处于“完整”恢复模式时您可以运行的备份类型:完全备份差异备份文件和/或文件组备份部分备份仅复制备份事务日志备份使用T-SQL设置SQLServer完整恢复模型ALTERDATABASEdbNameSETRECOVERYrecoveryOptionGO示例:将AdventureWorks数据库更改为“完整”恢复模型ALTERDATABASEAdventureWorksSETRECOVERYFULLGO使用ManagementStudio设置SQLServer完整恢复模型右键单击数据库名称并选择Properties转到Options页面,在recoverymode下选择“Full”,点击“OK”保存4.Simplerecoverymodel它为您提供了一个简单的备份,可以在发生故障或您使用时替换整个数据库需要将数据库恢复到另一台服务器。使用此恢复模式,您可以执行完整备份(整个副本)或差异备份(自上次完整备份以来的任何更改)。使用此恢复模型,您可以接受自上次备份完成以来的任何故障,因为您只能将数据恢复到备份发生时的时间点。“简单”恢复模型是SQLServer最基本的恢复模型。每个事务仍然写入事务日志,但是一旦事务完成并且数据已写入数据文件,事务日志文件中使用的空间就可以被新事务重用。由于这个空间被重复使用,时间点恢复是不可能的,所以最近的还原点将是完整备份或已经完成的最新差异备份。此外,由于事务日志中的空间可以重复使用,因此事务日志不会像“完整”恢复模型中提到的那样永远增长。以下是您可能选择此恢复模式的一些原因:您的数据不重要,可以轻松重新创建数据库仅用于测试或开发数据是静态的,不会更改自上次备份以来丢失任何或所有事务不是问题数据是分叉的,可以很容易地重新创建当数据处于“简单”恢复模式时可以运行的备份类型:完全备份差异备份文件和/或文件组备份部分备份仅复制备份使用T-SQL设置SQLServer简单恢复模型ALTERDATABASEdbNameSETRECOVERYrecoveryOptionGO示例:将AdventureWorks数据库更改为“简单”恢复模型ALTERDATABASEAdventureWorksSETRECOVERYSIMPLEGO使用ManagementStudio设置SQLServer简单恢复模型右键单击??数据库名称并选择属性转到Options页面在recoverymode下,选择“simple”,点击“OK”保存5.Bulklogrecoverymodel在这个模型中,一些批量操作(比如BULKINSERT、CREATEINDEX、SELECTINTO等)都没有完全记录在事务日志中,所以不会在事务日志中占用太多空间。使用“bulklogged”恢复模型的优势在于,如果您正在进行大量批量操作,您的事务日志不会变得那么大,并且它仍然允许您进行时间点恢复,只要您上次的事务日志备份不包括批处理操作。如果没有运行批量操作,此恢复模型与完整恢复模型的工作方式相同。需要注意的一点是,如果您使用这种恢复模式,您还需要发布事务日志备份,否则您的数据库事务日志将不断增长。以下是您可能选择此恢复模型的一些原因:数据很重要,您希望将数据丢失降至最低,但您不想记录在与正常处理不同的时间完成的大批量操作。您仍然希望能够恢复到某个时间点当数据处于“批量记录”恢复模式时,您可以运行的备份类型:完全备份差异备份文件和/或文件组备份部分备份仅复制备份交易日志备份使用T-SQL设置SQLServer批量记录恢复模型ALTERDATABASEdbNameSETRECOVERYrecoveryOptionGO示例:将AdventureWorks数据库更改为“批量记录”恢复模型ALTERDATABASEAdventureWorksSETRECOVERYBULK_LOGGEDGO使用ManagementStudio设置SQLServer批量记录恢复模型Right-单击数据库名称并选择属性,然后转到选项页面。恢复模式下,选择“批量录制”,点击“确定”保存。6、大容量日志恢复模型