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

意外DBA的SQL Server备份和还原

在线QQ客服:1922638

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

并非每个负责确保数据库备份并易于还原的工作的人都将自己视为数据库管理员。如果您是这些“意外DBA”之一,那么Grant Fritchey会为您提供一些直接的好建议,以确保当必须从备份还原数据库时一切顺利

这个给你。通过命运的一些怪癖,您现在对公司的数据库负责。人们称您为DBA。您要么自愿参加工作,要么就把工作强加于您。无论哪种方式,都希望您知道该怎么做,让我们面对现实,弄清楚从哪里开始很难。让我提个建议。您应该检查的第一件事是备份的状态。是的,可能有上百万个尖叫的问题,每个问题都很重要,但是如果您的数据库发生故障(确实如此),并且您没有备份……那么,让我们说这不是您想要与管理层进行的对话。

因此,现在您准备开始使用备份,但是您不确定从哪里开始。好消息是,这是一条破旧的道路。数据库备份不是一个谜。同样,让我提出一些建议。

从业务开始

使数据库恢复联机和可操作性首先是业务决策,而不是技术决策。设置备份和恢复的技术方面相对容易,而且文件记录非常详尽,因此您的最初工作需要与企业一起进行,并了解您在该处要做什么。这有两个目的。首先,您要了解需要做的事情,以及要面对的基础设施,计划和工作量。其次,您可以记录对您的期望,以便日后如果企业对您的技术决策提出疑问,您可以回到与他们进行的讨论中。这是有关任何给定数据库的一些建议问题:

  • 这个数据库对公司有多重要?
  • 我们可以在这个数据库中损失多少时间和数据?
  • 关于保留我需要满足的数据备份是否有任何法规要求?
  • 数据备份是否有加密要求?

正是这些问题的答案,才开始使您踏上为所管理的所有数据库设置备份和恢复计划的道路。企业将能够快速,轻松地回答其中一些问题。有些他们不会。您可能需要给它们加标签以获得所需的答案,但是您确实需要获取这些答案。另外,您可能无法使用某些答案。例如,最常见的回答是“我们会丢失多少数据?” 是“无”。虽然这可能是正确的,但尝试建立数据丢失机会为零的系统非常昂贵,并且涉及的内容远不止简单的备份和恢复。通常,您可以使企业同意,一天,一个小时或5分钟是合理的预期损失。

在所有这些信息中,您应该创建一组文档,以简单的语言描述您的备份过程。您可能具有适用于所有系统和数据库的常规过程,或者可能已为单个数据库或应用程序定制了过程。无论哪种方式,都记下来。

一旦了解了满足业务需要的任务,便可以开始将技术应用于问题。请记住,随着数据的扩展,增长和更改,业务也将如此。请计划至少每年一次定期与他们联系,以根据需要重新评估和更新您的计划。

完整备份

所有备份计划均以完整备份开始。完全备份是数据库的低级副本,不仅是表和数据,而且是索引,它们的统计信息,所有触发器和存储过程以及数据库中存储的所有内容。您无法随意选择要包括在备份中的对象,因此备份将始终覆盖所有内容,并且在还原备份时,将还原所有内容。完整备份有很多选项,但要记住以下几点:

  • 为了恢复到某个时间点,完整备份是基础。
  • 添加CHECKSUM可以部分验证备份的发生。
    注意:这将对较大的备份操作产生明显的性能影响。
  • 仅应在一致性检查(DBCC CHECKDB)之后备份数据库。
    注意:如果使用备份本身进行一致性检查,将是一个例外。
  • 当数据库处于FULL或BULK LOGGED恢复模式时,完全备份不会截断日志。

完整备份的运行频率非常取决于业务需求。为了减少恢复备份的难度和时间,建议每周至少执行一次完整备份,但仅与其他备份过程一起使用。对于最大约500GB的中小型数据库,每日完整备份可能是一个更好的计划。

可以将备份配置为将多个完整备份堆叠到一个文件中,也可以将备份配置为将每个备份都存储在一个文件中。我建议使用单个文件,最好按日期和数据库名称命名。可以轻松查看哪些备份可用,哪些备份丢失(如果有)。如果文件由于某种原因而损坏,则会丢失一个备份,而不是所有备份。

只需记住,尽管还有各种其他类型的备份操作,但大多数备份的基础是完整备份。对于大多数备份计划,您将需要在大多数系统上考虑到这一点。

日志备份

有些企业可以只进行一次完整备份,而在出现问题和上次完全备份之间可能会丢失数据,这是很好的选择。大多数企业都依赖于更多最新数据。因此,您需要计划将数据库恢复到某个时间点的能力。这可以通过使用完全恢复模式和一组日志备份来实现。首先必须将数据库设置为“完全”或“批量记录”恢复。这些恢复模式使日志保持完整,直到执行日志备份操作为止。关于备份日志,有许多不同的选项,但应注意以下几点:

  • 为了清除已提交的事务,必须执行日志备份操作。
  • 日志备份可以使用CHECKSUM操作来部分验证备份的发生。
    注意:这将对较大的日志备份操作产生明显的影响。

日志备份的频率必须由企业确定。日志备份取决于恢复过程中是否具有完整备份。您必须运行常规日志备份,以便截断日志中的已提交事务。最低建议是每小时一次。大多数企业每隔15分钟就在附近运营一次。我什至管理过一个每五分钟运行一次日志备份的系统。不足以产生适得其反的效果,因为恢复数据所需的时间太长了。

日志备份与完整备份一样,可以配置为全部转到单个文件或多个单个文件。同样,出于与以前相同的原因,我建议使用多个单独的文件。

流程自动化

自动化备份过程的最佳方法是学习T-SQL命令并亲自进行设置SQL Agent作业的工作。这样做可以为您提供高度的控制和灵活性。但是,这需要大量时间来开发一套好的知识,尤其是对于偶然的DBA。相反,您可以利用称为维护计划的内置自动化流程。

维护计划中有一个向导可引导您完成整个设置。它甚至会为您安排事情。以下是有关使用维护计划的一些注意事项:

  • 在向导的打开屏幕上,选择“每个任务的单独计划”。
  • 不要实施收缩数据库步骤。
    注意:这是一个漫长而复杂的讨论。有关更多信息,请阅读本文。
  • 将备份与其他操作分开,以最大程度地减少资源影响。
  • 启用“验证备份完整性”。
    注意:这是CHECKSUM选项,因此可能会影响性能。

向导创建维护计划后,您可以花费大量时间和精力直接通过SSMS中的GUI界面与他们合作。您对这些机制的控制比以往任何时候都多。但是,要实现极细粒度的控制,您将需要直接使用T-SQL并与SQL Agent一起计划事件。

SQL Agent不仅可以安排运行所需的任何命令,而且还会在出现错误时重试这些命令。还可以对其进行编程,以便在发生故障时向您发送电子邮件。您可以使用自己创建的计划项目,甚至可以通过“维护计划”向导修改为您自动创建的计划项目。

完全还原

设置数据库备份的最重要部分不是备份操作。设置数据库备份的最重要部分是能够还原那些备份。这意味着两件事。首先,确认备份文件有效,并且可以还原。其次,您知道如何还原这些文件。恢复数据库非常像在战斗。如果您练习拳击或某种武术,您会知道自己练习与其他人一起缓慢地空中飞行,并与其他人以尽可能接近全速的速度进行练习,而不会造成严重伤害。这就是在必须承受压力之前学习如何运动的全部方法。还原数据库是完全一样的。在无压力的情况下,您可能需要很多时间进行恢复,但是您会记得整个管理团队站在您的立方体中等待您拯救公司时的情况。现在还不是时候搜索有关如何运行还原的博客文章。

以下是有关还原数据库的一些注意事项:

  • 练习,练习,练习。
  • 使用VERIFY ONLY命令仅部分验证备份。
    注意:这只会部分验证文件。唯一真正的验证是还原操作。
  • RESTORE FILELISTONLY将使您可以查看已备份数据库的文件定义。
  • RESTORE HEADERONLY将为您提供有关备份的信息,而不是文件。
  • MOVE允许您通过将数据库文件移动到其他位置或其他文件来创建数据库的副本。

请记住,完全还原不是选择性的。您将获得备份中的所有内容。如果缺少特定的行,表或过程,那是因为它不在备份中。

时间点还原

因为自上次完整备份以来数据可能已更改,所以您将数据库配置为支持日志备份。当需要还原日志时,您可以还原到特定的时间点。时间点恢复需要更多的实践,因为涉及更多的步骤。这里有一些要记住的要点:

  • 练习,练习,练习。
  • 您必须首先还原完整备份,但是必须将其保留为“正在恢复”状态。
  • 在达到最终日志备份之前,必须将还原的日志的每个部分都保持在“恢复”状态。
  • 您必须按照记录的顺序还原日志。您不能跳过时间段。

压缩

近年来最重要的功能之一就是压缩备份的能力。压缩有助于节省磁盘空间,但更重要的是,它牺牲了一些内存和CPU周期才能真正达到更快的备份执行速度。这是因为较少的数据写入磁盘,而磁盘是系统中最慢的部分。因此,除非您的系统承受极大的CPU或内存负载,否则在所有备份操作中都应使用压缩功能。

唯一的问题是备份压缩仅适用于某些版本的SQL Server。压缩是在SQL Server 2008 Enterprise中引入的。发布Service Pack#2时,它们使压缩可用于SQL Server 2008 Standard。SQL Server 2008 R2具有相同的限制,仅在Enterprise和Standard上压缩。开发版(实际上是企业版)也具有可用的压缩功能。没有其他版本的SQL Server可以创建压缩备份或还原压缩备份。

其他备份注意事项

本简介仅涵盖标准备份和还原操作的基础。您可以将大量其他主题添加到组合中。这只是更重要方面的一小部分:

差异备份

完全备份可能要花费大量时间,而日志备份仅涉及尚未备份的事务。差异备份在两者之间提供了中间立场。差异备份检索自上次完全备份以来已更改的所有已提交数据,并在备份中创建它们,以表示当前时刻与上次完全备份之间的差异。然后可以在还原操作中使用差异备份,以使数据库达到差异化的时刻,例如应用日志备份,或与日志备份结合使用。与日志备份一样,完整备份必须处于恢复状态才能应用差异备份。对于较大的系统,这些备份类型可以为灾难恢复计划增加更多的灵活性。

文件和文件组备份

虽然不可能备份数据库的各个部分,例如仅备份一个表,但是有一种方法可以解决此问题。通过完整或差异备份,可以独立于其他文件或文件组进行备份。这些备份将备份给定文件或文件组上的所有内容。然后,您可以仅将文件或文件组还原到数据库。如果该文件组上仅存储一个表,则可以仅还原该表。周围有很多限制,但是对于大型系统,这又为计划备份计划提供了更多的灵活性和功能。

快照

快照备份并不是灾难恢复的一部分,因为它们是对数据库(例如部署)进行专门操作期间的安全机制。本质上,快照可以非常快速地创建数据库的即时副本。然后,您可以同样快地将快照还原到数据库。由于快照仅包含对数据库所做的更改,因此传统上在灾难恢复方案中不使用这些文件。除非基础数据库已经就位,否则无法还原快照,这与灾难恢复方案相反。

仅复制

由于完全备份是构建时间点恢复的基础,因此无论何时进行完全备份,都会为所有日志备份和差异备份引入新的起点。有时,您可能只想备份数据库而不影响该链。使用“仅复制”命令可以执行此操作。

分条

您没有被迫将备份写入单个磁盘驱动器上的单个文件中。您可以将它们设置为跨多个驱动器上的多个文件进行条带化。这是大型系统就位的完整备份的一种方式,也是某种程度(但不是彻底)更快的备份的机制。

加密

大多数企业要求您使用密码保护您的系统。他们也可能需要您加密备份。要使用SQL Server做到这一点,您必须加密数据库,但是备份也将被加密。

结论

备份是DBA职责中非常重要的一部分,但是备份最重要的部分实际上是还原。您需要知道自己有适当的备份,并且可以还原它们。您还必须与企业合作,以制定良好的备份计划。备份到位后,请确保验证备份以确保备份正常工作,因为备份全在您的肩上了。您是DBA。

清单

  • 定期运行的完整备份。
  • 完全备份到单个文件。
  • 将CHECKSUM与完整备份一起使用。
  • DBCC作为完整备份处理的一部分运行。
  • 当数据库处于FULL或BULK LOGGED恢复状态时,请运行日志备份。
  • 将备份记录到单个文件。
  • 将CHECKSUM与日志备份一起使用。
  • 日志备份的最低频率为每小时一班。
  • 自动执行备份过程。
  • 经常练习还原操作。
  • 通过还原数据库来验证备份。
  • 使用VERIFYONLY来部分验证备份。
  • 如果可用,请使用备份压缩。
  • 记录备份和还原过程。

相关推荐

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