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

探究SQLServer备份的备份类型

时间:2023-03-17 15:46:30 科技观察

一、背景描述我们知道,数据数据库的恢复模型决定了可以进行哪些类型的备份。在本节中,我们将讨论每个备份选项以及如何使用SSMS和T-SQL执行这些备份。在本文中,我们讨论以下内容:完全备份差异备份文件备份文件组备份部分备份仅复制备份镜像备份事务日志备份II。SQLServerBackupType1.SQLServerFullBackup称为数据库备份。这些备份会创建数据库的完整备份以及部分事务日志,以便可以恢复数据库。这是最简单的数据库恢复形式,因为所有内容都包含在一个备份中。创建完整备份可以使用T-SQL或使用SSMS完成完整备份。以下示例向您展示如何创建完整备份。可以使用T-SQL或使用SSMS完成完整备份。以下示例向您展示如何创建完整备份。创建完整的SQLServer数据库备份到磁盘文件T-SQL这将创建AdventureWorks数据库的完整备份并将备份写入文件“C:\AdventureWorks.BAK”。.BAK扩展名通常用于将备份标识为完整数据库备份。BACKUPDATABASEAdventureWorksTODISK='C:\AdventureWorks.BAK'GOSQLServerManagementStudio右键单击??数据库名称。选择任务>备份。选择“完整”作为备份类型。选择“磁盘”作为目标。单击“添加...”添加备份文件并键入“C:\AdventureWorks.BAK”并单击“确定”。再次单击“确定”以创建备份。2.SQLServer事务日志备份如果您的数据库设置为“完整”或“批量记录”恢复模式,那么您将能够执行“事务日志”备份。通过事务日志备份和完全备份,可以进行时间点恢复,这样如果有人不小心删除了数据库中的所有数据,可以将数据库恢复到删除发生之前的时间点。唯一需要注意的是,如果您的数据库设置为“大容量日志”恢复模式并且您进行大容量操作,您将需要恢复整个事务日志,因此您不能使用事务日志进行时间点恢复包括批量记录操作的备份。事务日志备份允许您备份事务日志。当事务日志被备份时,事务日志中的空间可以被其他进程重新使用。如果不进行事务日志备份并且数据库不使用简单恢复模式,事务日志将继续增长。事务日志备份可以使用T-SQL或使用SSMS完成。以下示例向您展示了如何创建事务日志备份。将SQLServer事务日志备份创建到磁盘文件T-SQL这将创建AdventureWorks数据库的事务日志备份并将备份写入文件“C:\AdventureWorks.TRN”。.TRN扩展名通常用于将备份标识为事务日志备份。BACKUPLOGAdventureWorksTODISK='C:\AdventureWorks.TRN'GOSQLServerManagementStudio右键单击??数据库名称。选择任务>备份。选择事务日志作为备份类型。选择“磁盘”作为目标。单击“添加...”添加备份文件并键入“C:\AdventureWorks.TRN”并单击“确定”。再次单击“确定”以创建备份。3.差异备份“差异”备份是自上次“完整”备份创建以来发生变化的任何范围的备份。差异备份通过备份自上次完整备份以来发生变化的所有范围来工作。一个区由八个8KB页组成,因此一个区是64KB的数据。每次更改任何数据时,都会打开一个标志,让SQLServer知道如果创建“差异”备份,它应该包括来自该范围的数据。在进行“完整”备份时,这些标志将被关闭。因此,如果您先进行完整备份,然后再进行差异备份,则差异备份将仅包含已更改的盘区。如果您稍等片刻再做一次差异备份,这个新的差异备份将包含自上次完整备份以来发生变化的所有范围。每次创建新的差异备份时,它将包括自上次完整备份以来更改的每个范围。当你去恢复你的数据库时,要恢复到最新的时间你只需要恢复完整备份和最近的差异备份。可以忽略所有其他差异备份。如果您的数据库处于简单恢复模式,您仍然可以使用完整备份和差异备份。这不允许您进行时间点恢复,但如果您只有完整备份,它将允许您将数据恢复到当前更改的时间点。如果您的数据库处于完整或大容量日志恢复模式,您还可以使用差异备份来消除需要恢复的事务日志的数量。由于差异将备份自上次完整备份以来的所有范围,因此在恢复时您可以恢复完整备份、最近的差异备份,然后恢复在最近的差异备份之后创建的任何事务日志备份。这减少了需要恢复的文件数量。创建到磁盘文件的SQLServer差异备份。T-SQLBACKUPDATABASEAdventureWorksTODISK='C:\AdventureWorks.DIF'WITHDIFFERENTIALGOSQLServerManagementStudio右键单击??数据库名称。选择任务>备份。选择“差异”作为备份类型。选择“磁盘”作为目标。单击“添加...”添加备份文件并键入“C:\AdventureWorks.DIF”并单击“确定”。再次单击“确定”以创建备份。4.SQLServer文件备份备份数据库的另一种选择是使用“文件”备份。这使您可以独立备份每个文件,而不必备份整个数据库。这仅在您为数据库创建了多个数据文件时才有意义。使用这种类型的备份的一个原因是,如果您有一个非常大的文件并且需要单独备份它们。在大多数情况下,您可能只有一个数据文件,因此此选项无关紧要。如上所述,您可以单独备份每个数据文件。如果您有一个包含非常大数据文件的非常大的数据库,则此选项可能是相关的。文件备份可以使用T-SQL或使用SSMS完成。创建TestBackup数据库的SQLServer文件备份对于这个例子,我创建了一个名为TestBackup的新数据库,其中包含两个数据文件和一个日志文件。这两个数据文件称为“TestBackup”和“TestBackup2”。下面的代码显示了如何单独备份每个文件。T-SQLBACKUPDATABASETestBackupFILE='TestBackup'TODISK='C:\TestBackup_TestBackup.FIL'GOBACKUPDATABASETestBackupFILE='TestBackup2'TODISK='C:\TestBackup_TestBackup2.FIL'GOSQLServerManagementStudio右键单击??数据库名称.选择任务>备份。选择“完整”或“差异”作为备份类型。选择文件和文件组。选择适当的文件并单击确定。选择“磁盘”作为目标。单击“添加...”添加备份文件并键入“C:\TestBackup_TestBackup.FIL”,然后单击“确定”。再次单击“确定”以创建备份并为其他文件重复。5.SQLServer文件组备份除了“文件”备份外,还可以进行“文件组”备份,即备份特定文件组中的所有文件。默认情况下,每个数据库都有一个与创建的数据文件之一关联的主文件组。您可以选择创建其他文件组并将新数据文件放入任何文件组中。在大多数情况下,您可能只有PRIMARY文件组,所以这是题外话。如上所述,您可以单独备份每个文件组。使用文件组备份而不是文件备份的一个优点是您可以创建只读文件组,这意味着数据不会更改。因此,您可以只备份读写文件组,而不是一直备份整个数据库。文件组备份可以使用T-SQL或使用SSMS完成。创建TestBackup数据库的SQLServer文件组备份对于这个例子,我创建了一个名为TestBackup的新数据库,其中包含三个数据文件和一个日志文件。两个数据文件是PRIMARY文件组,一个文件在ReadOnly文件组中。下面的代码显示了如何进行文件组备份。T-SQLBACKUPDATABASETestBackupFILEGROUP='ReadOnly'TODISK='C:\TestBackup_ReadOnly.FLG'GOSQLServerManagementStudio右键单击??数据库名称。选择任务>备份。选择“完整”或“差异”作为备份类型。选择文件和文件组。选择适当的文件组并单击确定。选择“磁盘”作为目标。单击“添加...”添加备份文件并键入“C:\TestBackup_ReadOnly.FLG”,然后单击“确定”。再次单击“确定”以创建备份并为其他文件组重复。6.SQLServer部分备份“部分”备份是SQLServer2005引入的新选项。它允许您备份PRIMARY文件组、所有读写文件组以及任何可选指定的文件。如果您的数据库中有只读文件组并且不想一直备份整个数据库,这是一个不错的选择。部分备份可以发布为完整备份或差异备份。这不能用于事务日志备份。如果文件组从只读变为读写,它会被包含在下一次部分备份中,但是如果你把文件组从读写变为只读,你应该创建一个文件组备份,因为这个文件组不会包含在下一个部分备份中正在进行的部分备份。部分备份只能使用T-SQL完成。以下示例向您展示了如何创建部分备份。创建TestBackup数据库的SQLServer部分备份对于此示例,我创建了一个名为TestBackup的新数据库,其中包含三个数据文件和一个日志文件。两个数据文件是PRIMARY文件组,一个文件在ReadOnly文件组中。下面的代码显示了如何进行部分备份。T-SQL创建SQLServer完整部分备份BACKUPDATABASETestBackupREAD_WRITE_FILEGROUPSTODISK='C:\TestBackup_Partial.BAK'GO创建SQLServer差异部分备份BACKUPDATABASETestBackupREAD_WRITE_FILEGROUPSTODISK='C:\TestBackup_Partial.DIF'WITHDIFFERENTIALGOIII.小结讨论了SQLSERVER备份的种类,对于理解和掌握SQLSERVER的备份技术有非常重要的意义。