快速,持续,稳定,傻瓜式
支持Mysql,Sqlserver数据同步

SQL Server 2005备份

在线QQ客服:1922638

专业的SQL Server、MySQL数据库同步软件

如果今天的业务是数据,那么整个企业就在SQL Server DBA的掌控之下。在惊慌之前,请查看Grant的SQL 2005备份和恢复机制的详细剖析。

在克雷格·穆林(Craig Mullin)的书《数据库管理》的开头一章中,他说:“从许多方面来说,当今的业务就是数据”。在大多数组织中,负责保护数据的人是数据库管理员……您。

那就对了; 整个业务都掌握在您能胜任的手中,并且在永远不会崩溃的服务器上运行,所有那些从未使用过应用程序而会犯错误的最终用户,都是由那些首次编写无误代码的开发人员构建的,有了老板的帮助,在拥有“ sa ”特权的新合作社的强大协助下。

好。别哭了。您可以采取一些措施来保护SQL Server数据,其中最重要的一项就是运行常规数据库备份。

后备

Microsoft在SQL Server联机丛书中将备份定义为:

系统故障后用于还原和恢复数据的数据副本

可以通过多种方式创建SQL备份,并且可以合并所有或部分数据以及事务日志的某些部分。尽管本文着重于2005语法,但大多数概念都适用于2000。这是一个巨大的话题。充其量,我会从头开始,为您提供足够的信息,以免您再次哭泣。阅读此内容后,您应该能够为您的系统设置一组合理的备份。

恢复模型

为了开始进行备份,业务需求定义了数据库恢复模型。本质上,恢复 模型定义了您将要使用的事务日志数据。

有三种恢复模式:FUL L,简单批量记录。这些很容易定义:

  • 简单 – 在简单恢复模式下,不备份事务日志,因此您只能恢复到最新的完整或差异备份。
  • 完全 –在完全恢复模式下,您将备份数据库和事务日志,以便可以将数据库恢复到任何时间点。
  • 批量记录 –在批量记录模式下,大多数事务都存储在事务日志中,但是某些批量操作(例如批量加载或索引创建)未记录。

两种最常用的模式是SimpleFull。当然,不一定要假设您始终需要使用完全恢复来保护数据。这是一个商业决定。业务部门会告诉您是否需要恢复到某个时间点,或者您是否仅需要最后一次完整备份。它将定义您的数据是否可以通过其他方式(例如手动输入)进行恢复,或者您是否必须尽可能多地保护数据。如果您有能力丢失自上次完全备份或差异备份以来存储的数据,并且/或者只是不需要恢复到某个时间点,则可以使用简单恢复。在简单模式下,您必须还原所有恢复主数据库时,辅助读取/写入文件组。您主要在不是企业或报表系统绝对重要组成部分的辅助数据库上使用“简单”,并且具有只读访问权限,因此无论如何都无需担心事务日志。如果数据的每一点都是至关重要的,则需要使用“完全”,您需要恢复到某个时间点,或者通常在大型数据库(VLDB)的情况下,需要独立于其他文件和文件来还原单个文件和文件组。组。

使用简单恢复和完全恢复模型,您现在都可以运行仅复制备份,该复制使您可以将数据库复制到备份文件,但不影响日志,差异备份计划或影响恢复到某个时间点。在本文中,我将尝试尽可能深入地研究这些主题,而不是文件和文件组。

使用简单恢复

聊够了。让我们开始运行备份。假设我们正在中小型数据库上进行简单恢复。我将对所有示例脚本使用AdventureWorks。要将其设置为简单恢复:

最简单的备份策略是定期运行以下SQL Server备份命令,该命令将对数据库执行完整备份:

您要求的所有输入是什么?我们没有GUI工具来为我们处理工作吗?是的,大多数简单的备份都可以使用SQL Server Management Studio执行。但是,如果您想学习和了解Management Studio为您所做的工作,或者想要对备份的内容,方式和位置进行细粒度的控制,则必须拆开键盘并收起鼠标。

上面的命令将向磁盘提供基本备份。我知道大多数DBA都会备份到文件,然后将文件刮到磁带或其他介质上。这是因为磁盘上的文件简单且可快速恢复,而媒体有时会有些麻烦。例如,我们通常在文件系统上进行两到三天的备份以立即恢复。仅在需要为较早的备份运行还原时,才使用磁带系统。

该命令做了什么?它制作了数据库中所有已提交数据的副本。它还复制了未提交的日志条目。这些在恢复期间用于提交或回滚在备份过程中对数据进行的更改。

仅复制备份

通常,备份数据库会影响其他备份和还原过程。例如,在运行上一条命令后,任何差异备份(仅复制自上次备份以来更改的数据的备份)都将以此为数据更改的起点,而不是您昨晚运行的备份。如前所述,SQL 2005为备份引入了一个新概念,即COPY_ONLY备份,它使我们能够避免中断周期:

我们已经发现Management Studio无法为您提供帮助的更精细的时刻之一。如果要仅复制备份,则必须使用命令行。

差异备份

让我们假设一下,我们仍处于简单恢复中,但是我们正在处理一个更大的数据库,比如说大小超过100 GB。完全备份实际上可能会稍微减慢该过程。相反,在与企业协商后,我们决定每周进行一次完整备份,并进行每日差异备份。差异备份仅备份自上次完整备份以来已更改的数据页。以下是执行差异备份的SQL备份命令:

现在,如果我们必须还原该数据库,我们首先要转到上一个完整备份,还原它,然后按顺序还原差异备份(稍后再介绍)。

还有许多其他备份选项,在此不再赘述。在线阅读书籍,以了解有关BLOCKSIZEEXPIREDATERETAINDAYSPASSWORDNAMESTATS等的详细信息。

您还可以运行一条语句来检查数据库备份的完整性。它不会检查备份中数据的完整性,但会验证备份的格式正确且可访问。

完全恢复和日志备份

我们主要是在处于简单恢复模式下的数据库上工作(该数据库以前称为Checkpoint上的Truncate Log)。在这种模式下,我们不备份事务日志以供以后恢复。此机制下的每个备份都是数据库备份。根本不可能进行日志备份。

但是,您仅在上次良好备份(完整备份或差异备份)后才保护数据。让我们改变我们的假设。现在,我们正在处理大型的关键任务应用程序和数据库。我们希望能够恢复到最新的数据库。这是非常重要的一点。从理论上讲,由于日志条目是存储和备份的,因此我们可以保护所有故障。但是,某些故障可能会导致日志损坏,从而无法恢复到某个时间点。因此,我们必须确定两次日志备份之间的合理最短时间。在这种情况下,我们可以承受不超过15分钟的丢失数据价值。

因此,让我们开始将数据库置于完全恢复模式:

然后,在预定的时间间隔(在这种情况下,每15分钟),我们将为事务日志运行SQL备份命令:

该脚本将从事务日志中备份已提交的事务。它在文件中有显示开始和结束时间的标记。成功完成后,它将截断日志,从事务日志中清除已写入备份文件的已提交事务。如有必要,您可以使用WITH NO_TRUNCATE语句从事务日志中捕获数据,而不管数据库的状态如何(假定数据库处于联机状态且未处于EMERGENCY状态)。这仅用于紧急情况。

请注意,在这种情况下,我们不使用INIT语句,但是您可以选择使用它。进行日志备份时,您可以选择:

  1. 将所有备份运行到一个文件中,这些文件将在其中堆叠,还原时您需要做的一切(稍后介绍)将循环遍历它们。
  2. 唯一地命名备份,可能使用字符串中的日期和时间。

安全说,在后一种情况下,请使用INIT,因为您将对备份到何处进行最大程度的控制,并且您将能够准确知道备份的内容,备份时间以及备份名称。在另一个地方,通过命令行操作备份比GUI可以为您提供更多控制。由于不同的原因,我们在系统中使用了这两种方法。您可以决定哪种技术最适合您的技术和业务需求。

数据库备份可用的大多数选项包括在日志备份中,包括COPY_ONLY。这将使您可以捕获一组事务数据,而不会影响日志或下一个计划的日志备份。这对于将生产数据带到另一个系统进行故障排除等非常方便。

如果您将数据库设置为“ 完全恢复”,则需要运行日志备份。有时,人们会忘记,事务日志会增长到填满磁盘驱动器的程度。在这种情况下,您可以运行:

NO_LOG附加到日志备份中,但未指定日志的位置,将导致日志的非活动部分被删除,并且这样做无需日志条目本身,从而破坏了整个磁盘驱动器。绝对不建议这样做,因为它会破坏日志链,即从中将数据库恢复到某个时间点的一系列日志备份。Microsoft建议使用此语句后立即运行完整备份。此外,他们警告说,将来的版本中可能不赞成使用此语句。

恢复数据库

与SQL Server备份同等重要且至关重要,如果没有还原数据库的能力,它们将无用。

恢复完整的数据库备份

恢复完整的数据库备份就像创建数据库一样简单:

真的就这么简单–除非我们将所有内容都备份到文件中,就好像它是备份设备一样。在这种情况下,您需要指定要访问的“设备”中的哪个文件。如果您不知道哪个文件,则需要生成一个列表:

这将为您提供与上面在Management Studio中显示的列表相同的列表。因此,现在,如果我们要还原组中的第二个文件COPY_ONLY备份,则可以发出以下命令:

不幸的是,如果您一直遵循,您可能会发现您只是产生了此错误:

这意味着您的数据库处于完全恢复模式,但是您尚未备份“日志尾部”,这意味着自上次运行备份以来输入的事务。如果将以前的语法更改为:您可以覆盖此要求。

这是我们第一次堆叠WITH子句(WITH FILE = 2WITH REPLACE表示为WITH FILE = 2,REPLACE),但这并不是最后一个。在线阅读书籍。大多数WITH子句语句可以与其他语句结合使用。

如果我们想还原到与原始数据库不同的数据库会发生什么?例如,我们要从单独的备份中复制数据库。也许我们想将其下移到生产支持服务器上,在该服务器上对其进行一些工作,与数据库的生产副本分开。如果我们采用简单的方法,那么请尝试以下操作:

在这种情况下,您应该看到与文件未被覆盖有关的一系列错误。您确实可以从备份中创建新数据库,但是如果要在具有现有数据库的服务器上进行操作,则需要使用逻辑名来更改物理文件的位置。为了知道给定数据库的文件的逻辑名称,请在尝试移动文件之前运行以下命令:

然后可以使用它来标识适当的逻辑名称,以便生成此脚本:

恢复差异备份

最后一种方法是应用差异备份。这需要两个步骤。首先,我们将还原数据库,但要稍作修改,然后再应用差异备份:

基于我们已经介绍的内容,其中大部分可能是不言自明的。唯一的麻烦是包含了NORECOVERY关键字。很简单,在还原过程中,事务可能已在备份过程中开始。其中有些完成,有些没有。还原结束时,已完成的事务将前滚到数据库中,而未完成的事务将被回滚。设置NORECOVERY可使事务保持打开状态。这样可以从下一个备份中按顺序提取下一组事务。

在本文中,我们主要处理简单的备份和还原,但是在2005年进行的更高级的还原允许在数据库联机时还原辅助文件组。在操作期间,其主文件组必须处于联机状态。这对于非常大型的数据库系统将更为有用。

将SQL Server数据库还原到某个时间点

还原日志并不比我们刚刚完成的差异数据库还原困难得多。还原到某个时间还需要更多的精力。假设您要将日志备份到单个文件或设备:

否则,您只需要获取所需的文件名即可。首先运行数据库还原,请注意使其处于非还原状态。在此之后进行一系列日志还原到某个时间点。

现在,我们有了一个数据库,该数据库可以完成10月23日14:30:29的确切最近一次提交的事务。请记住,在诸如此类的多步骤还原过程中,您必须使数据库处于恢复状态。这意味着将NORECOVERY附加到每个语句,直到完成还原过程为止。如果由于某种原因在所有语句中都添加了NORECOVERY,或者只是在中间停了下来,想使数据库重新联机,则可以使用以下语句来完成该过程:

数据库快照

SQL Server 2005引入了快照或数据库的静态静态视图的概念。快照主要是为了提供用于报告目的的数据库的只读版本而创建的。但是,它们的功能与备份类似。一个主要区别是所有未提交的事务都将回滚。备份不提供前滚,捕获日志等的选项,也没有使用太多的SQL Server资源。而是,磁盘技术用于创建数据的副本。因此,它们比创建和还原备份要快得多。

注意
有关SQL 2005快照的更多详细信息,请参考http://www.simple-talk.com/sql/database-administration/sql-server-2005-snapshots/。

除了报告外,快照的一种很好的用途是在从系统中删除所有活动用户(及其交易)后,在维护之前创建一个快照。尽管快照不支持实时备份的可变性,但快照的速度和恢复的简便性是从不良部署中快速恢复的绝佳工具。快照存储在服务器上,因此必须确保有足够的存储空间。

语法不同,因为您不备份数据库。您正在创建一个新的:

现在,它将可以进行只读访问。由于我们主要关注将其用作备份机制,因此让我们包括将数据库还原为数据库快照的方法。

首先,确定您要使用的快照。如果要还原的数据库上有多个数据库,则需要删除所有数据库,但要使用的数据库除外:

然后,您可以通过运行RESTORE语句(混合的隐喻,不好)来还原数据库:

而已。在我的系统上,运行Adventureworks的数据库快照需要136毫秒。完整备份耗时5670毫秒。快照还原花费了905ms,数据库还原花费了13382ms。将其整合到生产部署过程中可能会带来重大收益

同样,值得注意的是,使用快照有一些注意事项。您必须有足够的磁盘空间来存储第二个数据库副本。您需要谨慎处理快照,因为大多数语法与数据库本身使用的语法相似。最后,尽管有快照附加到数据库,但是您无法从该数据库的数据库备份运行还原。

最佳实践

执行数据库备份的方式不应该是技术决定。它应该由企业决定。事务速率低的小型系统和/或定期加载的报告系统仅需要完整的数据库备份。中型系统和大型系统变得取决于所管理的数据类型,以确定所需的备份类型。

对于中型系统,每日备份和一天中的日志备份可能会及时满足大多数数据需求。

对于大型数据库,最好的方法是混合和匹配备份,以确保在最短的时间内实现最大的可恢复性。例如,每周运行一次完整备份。在一周中的一天两次,请运行差异备份。白天每10分钟运行一次日志备份。这为您提供了大量的恢复机制。

对于非常大的数据库,您将需要进入正在运行的文件组和文件备份,因为可能无法对整个数据库进行完全备份甚至差异备份。有许多其他功能可以帮助您解决此问题,但是在这里我将不做介绍。

您应该花一些时间来开发一些用于运行备份和还原的脚本。命名约定使您知道哪个数据库,哪个服务器,哪个日期,哪种特定的备份和格式将非常有助于您的理智。应该定义备份,日志(完整或增量)的公共位置。应对每个负责人进行备份,恢复和故障排除方面的培训。这样做的方法很多,但是您可以在Pop备份和Pop还原中找到一些建议。

真正的测试是运行您的备份机制,然后运行还原。然后尝试另一种还原,另一种还原。确保不仅在定义如何备份系统方面进行了尽职调查,而且还确保了可以恢复这些备份的额外步骤。如果您还没有练习过并记录了练习,然后对文档进行了测试,那么实际上,您还没有做好应对灾难的准备。

摘要

企业内部的备份应该像在芝加哥早,经常进行投票一样。设置基本备份非常简单。添加日志备份和差异也很容易。探索选项,以了解如何添加文件和文件组备份与还原以提高备份和还原的速度,这两者都将增加系统可用性和正常运行时间。保持通用的命名标准。使用快照时要小心,但一定要使用它们。将文件存储在服务器之间的标准位置。练习恢复。最后,为使备份真正发挥作用,请下载Red Gate的SQL Backup™的免费试用版。它提供了高性能的压缩和网络弹性,可以使跨不稳定网络的备份写入或复制过程具有容错性。

相关推荐

咨询软件
 
QQ在线咨询
售前咨询热线
QQ1922638