SQL Server 数据库的备份和还原
本主题介绍备份 SQL Server 数据库的优点、基本的备份和还原术语,还介绍 SQL Server 的备份和还原策略以及 SQL Server 备份和还原的安全注意事项。
SQL Server 备份和还原组件为保护存储在 SQL Server 数据库中的关键数据提供了基本安全保障。 为了最大限度地降低灾难性数据丢失的风险,您需要定期备份数据库以保留对数据所做的修改。 规划良好的备份和还原策略有助于防止数据库因各种故障而造成数据丢失。 通过还原一组备份,然后恢复数据库来测试您的策略,以便为有效地应对灾难做好准备。
注意 |
---|
从 SQL Server 2012 SP1 累积更新 2 开始,支持 SQL Server 备份到 Windows Azure Blob 存储服务。 有关详细信息,请参阅备份和还原增强功能和使用 Windows Azure Blob 存储服务进行 SQL Server 备份和还原。 |
有关使用 Windows Azure SQL Database、SQL Server Data Tools 和 SQL Server Management Studio 中存在的常见客户问题的解决方案,请参阅数据库生命周期管理。
本主题内容:
好处
组件和概念
备份和还原策略简介
相关任务
优点
备份 SQL Server 数据库、在备份上运行测试还原过程以及在另一个安全位置存储备份副本可防止可能的灾难性数据丢失。
重要提示 这是可靠地保护您的 SQL Server 数据的唯一方法。
使用有效的数据库备份,可从多种故障中恢复数据,例如:
介质故障。
用户错误(例如,误删除了某个表)。
硬件故障(例如,磁盘驱动器损坏或服务器报废)。
自然灾难。
此外,数据库备份对于进行日常管理(如将数据库从一台服务器复制到另一台服务器、设置 AlwaysOn 可用性组 或数据库镜像以及进行存档)非常有用。
[返回页首]
组件和概念
备份 [动词] (back up)
从 SQL Server 数据库或其事务日志中将数据或日志记录复制到备份设备(如磁盘),以创建数据备份或日志备份。备份 [名词] (backup)
可用于在出现故障后还原或恢复数据的数据副本。 数据库备份还可用于将数据库副本还原到新位置。备份设备 (backup device)
要写入 SQL Server 备份及能从中还原这些备份的磁盘或磁带设备。备份介质 (backup media)
已写入一个或多个备份的一个或多个磁带或磁盘文件。数据备份 (data backup)
完整数据库的数据备份(数据库备份)、部分数据库的数据备份(部分备份)或一组数据文件或文件组(文件备份)。数据库备份 (database backup)
数据库的备份。 完整数据库备份表示备份完成时的整个数据库。 差异数据库备份只包含自最近完整备份以来对数据库所做的更改。差异备份 (differential backup)
一种数据备份,基于完整数据库或部分数据库或一组数据文件或文件组(差异基准)的最新完整备份,并且仅包含自确定差异基准以来发生更改的数据。完整备份 (full backup)
一种数据备份,包含特定数据库或者一组特定的文件组或文件中的所有数据,以及可以恢复这些数据的足够的日志。日志备份 (log backup)
包括以前日志备份中未备份的所有日志记录的事务日志备份。 (完整恢复模式)恢复 (recover)
将数据库恢复到稳定且一致的状态。恢复 (recovery)
将数据库恢复到事务一致状态的数据库启动阶段或 Restore With Recovery 阶段。恢复模式 (recovery model)
用于控制数据库上的事务日志维护的数据库属性。 有三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式。 数据库的恢复模式确定其备份和还原要求。还原 (restore)
一种包括多个阶段的过程,用于将指定 SQL Server 备份中的所有数据和日志页复制到指定数据库,然后通过应用记录的更改使该数据在时间上向前移动,以前滚备份中记录的所有事务。
[返回页首]
备份和还原策略简介
备份和还原数据必须根据特定环境进行自定义,并且必须使用可用资源。 因此,可靠使用备份和还原以实现恢复需要有一个备份和还原策略。 设计良好的备份和还原策略在考虑到特定业务要求的同时,可以尽量提高数据的可用性并尽量减少数据的丢失。
重要提示 |
---|
请将数据库和备份放置在不同的设备上。 否则,如果包含数据库的设备失败,备份也将不可用。 此外,将数据和备份放置在不同的设备上还可以提高写入备份和使用数据库时的 I/O 性能。 |
备份和还原策略包含备份部分和还原部分。 策略的备份部分定义备份的类型和频率、备份所需硬件的特性和速度、备份的测试方法以及备份介质的存储位置和方法(包括安全注意事项)。 策略的还原部分定义负责执行还原的人员以及如何执行还原以满足数据库可用性和尽量减少数据丢失的目标。 建议您将备份和还原过程记录下来并在运行手册中保留记录文档的副本。
设计有效的备份和还原策略需要仔细计划、实现和测试。 测试是必需环节。 直到成功还原了还原策略中所有组合内的备份后,才会生成备份策略。 必须考虑各种因素。 其中包括:
您的组织对数据库的生产目标,尤其是对可用性和防止数据丢失的要求。
每个数据库的特性,包括:大小、使用模式、内容特性以及数据要求等。
对资源的约束,例如:硬件、人员、备份介质的存储空间以及所存储介质的物理安全性等。
注意 在 64 位和 32 位环境中,SQL Server 磁盘存储格式均相同。 因此,可以将 32 位环境中的备份还原到 64 位环境中,反之亦然。 在运行在某个环境中的服务器实例上,可以还原在运行在另一个环境中的服务器实例上创建的备份。
[返回页首]
恢复模式对备份和还原的影响
备份和还原操作发生在恢复模式的上下文中。 恢复模式是一种数据库属性,用于控制事务日志的管理方式。 此外,数据库的恢复模式还决定数据库支持的备份类型和还原方案。 通常,数据库使用简单恢复模式或完整恢复模式。 可以在执行大容量操作之前切换到大容量日志恢复模式,以补充完整恢复模式。 有关这些恢复模式以及它们是如何影响事务日志管理方式的说明,请参阅事务日志 (SQL Server)。
数据库的最佳恢复模式取决于您的业务要求。 若要免去事务日志管理工作并简化备份和还原,请使用简单恢复模式。 若要在管理开销一定的情况下使工作丢失的可能性降到最低,请使用完整恢复模式。 有关恢复模式对备份和还原存在哪些影响的信息,请参阅备份概述 (SQL Server)。
设计备份策略
当为特定数据库选择了满足业务要求的恢复模式后,需要计划并实现相应的备份策略。 最佳备份策略取决于各种因素,以下因素尤其重要:
一天中应用程序访问数据库的时间有多长?
如果存在一个可预测的非高峰时段,则建议您将完整数据库备份安排在此时段。
更改和更新可能发生的频率如何?
如果更改经常发生,请考虑下列事项:
在简单恢复模式下,请考虑将差异备份安排在完整数据库备份之间。 差异备份只能捕获自上次完整数据库备份之后的更改。
在完整恢复模式下,应安排经常的日志备份。 在完整备份之间安排差异备份可减少数据还原后需要还原的日志备份数,从而缩短还原时间。
可能只是更改数据库的小部分内容,还是需要更改数据库的大部分内容?
对于更改集中于部分文件或文件组的大型数据库,部分备份和/或文件备份非常有用。 有关详细信息,请参阅部分备份 (SQL Server)和完整文件备份 (SQL Server)。
完整数据库备份需要多少磁盘空间?
有关详细信息,请参阅本部分后面的估计完整数据库备份的大小。
估计完整数据库备份的大小
在实现备份与还原策略之前,应当估计完整数据库备份将使用的磁盘空间。 备份操作会将数据库中的数据复制到备份文件。 备份仅包含数据库中的实际数据,而不包含任何未使用的空间。 因此,备份通常小于数据库本身。 您可以使用 sp_spaceused 系统存储过程估计完整数据库备份的大小。 有关详细信息,请参阅 sp_spaceused (Transact-SQL)。
计划备份
执行备份操作对运行中的事务影响很小,因此可以在正常操作过程中执行备份操作。 您可以在对生产工作负荷的影响很小的情况下执行 SQL Server 备份。
注意 |
---|
有关备份过程中的并发限制的信息,请参阅备份概述 (SQL Server). |
确定所需的备份类型和必须执行每种备份类型的频率后,建议您将定期备份计划为数据库维护计划的一部分。 有关维护计划以及如何为数据库备份和日志备份创建维护计划的信息,请参阅使用维护计划向导。
测试备份
直到完成备份测试后,才会生成还原策略。 必须通过将数据库副本还原到测试系统,针对每个数据库的备份策略进行全面测试。 您必须对每种要使用的备份类型进行还原测试。
建议您为每个数据库维护一个操作手册。 此操作手册应记录备份的位置、备份设备名称(如果有),以及还原测试备份所需的时间。
相关任务
计划备份作业
使用备份设备和备份介质
创建备份
注意 |
---|
对于部分备份或仅复制备份,必须分别使用带有 PARTIAL 或 COPY_ONLY 选项的 Transact-SQL BACKUP 语句。 |
使用 SQL Server Management Studio
使用 Transact-SQL
[返回页首]
还原数据备份
使用 SQL Server Management Studio
使用 Transact-SQL
[返回页首]
还原事务日志(完整恢复模式)
使用 SQL Server Management Studio
使用 Transact-SQL
[返回页首]
其他还原任务
使用 Transact-SQL
[返回页首]