还原及回复数据库

<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
还原回复数据库
还原方法
执行数据库还原
规划严重损坏的回复
本章总结
在 第 32 章 中,我们学到了系统备份的重要性,以及如何执行备份。本章将继续上一章所提的数据库保护与建立的说明。我们将学习如何还原数据库、如何回复系统,还有数据库回复的运作方式。正如您所见,备份执行的类型会影响到回复的进行。除了学习关于还原回复数据库,也会介绍 记录文件传送 (log shipping)。记录文件传送是 Microsoft SQL Server 2000 中的新功能,让您用原始的服务器交易纪录在另一个服务器上建立备用副本。
________________________________________
说明
有些 DBA 提到还原回复数据库的过程都称作 recovering the database。然而,这些程序是大不相同的。 第 32 章 说明了从备份还原数据库与 SQL Server 回复过程的差异。在任何情况下,将数据库带回系统失败前的状态,就是备份、还原和回复操作执行的主要目标。
________________________________________
还原方法
 
如前所提,执行备份的类型影响了还原操作的性质。在这个章节中我们将学习如何从完整备份、差异式备份、以及交易纪录备份执行还原
从完整备份还原
 
从完整备份还原是相当简单直接的过程:只要用 SQL Server Enterprise Manager或 Transact-SQL (TSQL)命令还原备份文件。本章稍后会有这两种方法的使用说明。如果在完整备份后,打算从差异式备份还原,只要确定有最近的交易纪录备份,如本章后面 < 从交易纪录备份还原 > 章节所言,并在执行还原时指定 NORECOVERY 选项就行了。
________________________________________
说明
还原操作有个重要的特性,就是 RECOVERY 的选项。它命令 SQL Server 在还原完成后用联机交易纪录来回复数据库。如果想利用差异式备份文件或者交易纪录文件,记得要确定已经指定 NORECOVERY 选项。
________________________________________
从差异式备份还原
 
要从差异式备份还原,必须先从完整备份还原,然后还原上次完整备份后的所有差异式备份文件。记住,差异式备份是用来备份在最近一次完整备份或差异式备份后更改过的信息。确定您使用的是 NORECOVERY 选项,除非您正在还原最后一个备份文件,而还原最后一个备份文件可以用 RECOVERY 选项。如果在差异式备份之外还从交易记录文件执行还原,就必须同时备份目前的记录文件并应用所有更改过的记录文件,这将在下一节中提到。
从交易记录文件备份还原
 
执行回复操作将使数据库的状态返回到失效前的那一点,先还原数据文件,然后还原从开始备份以来对数据库的更改内容。您可以储存所有失效以来的交易记录文件备份来还原这些变更。
为了确保在还原这些记录文件的过程中没有遗失任何最新交易,必须先保存目前的记录文件。如果忘了保存目前的记录文件,会因为还原操作覆写交易记录而遗失记录在记录文件中的大部分最新的更改。
要使用交易记录文件将数据库还原到失效前的状态,请依下列步骤进行(这些是建立在 第 32 章 中所学到的技术基础上):
1. 使用 NO_TRUNCATE 选项备份目前使用中的交易记录文件。
2. 还原最近的完整备份。
3. 还原所有的差异式备份,将数据库还原到最后的备份状态。
4. 还原所有从最后的差异式备份以来的交易记录文件备份,以重置所有自最后备份以来所发生的交易。
5. 还原在步骤 1 中建立的交易记录文件备份,让数据库回到失效前的状态。
在 BULK_LOGGED 回复模式中还原数据库
 
如果正在 BULK_LOGGED 回复模式中执行数据库,需要还原时就必须再做一次记录操作。这些操作包括 SELECT...INTO、BULK COPY、BCP 和一些 CREATE INDEX 操作,还有已在上一章谈过的文字操作。如果觉得这里所谈的内容过于麻烦,可以不要在 BULK_LOGGED 回复模式中执行数据库。
执行数据库还原
 
使用 Enterprise Manager 或 T-SQL 命令可执行还原操作--这两种方式得到的结果相同。与备份操作不同,SQL Server 没有提供还原操作精灵。
使用 Enterprise Manager 执行还原
 
要使用 Enterprise Manage r执行还原操作,请按照下列步骤操作:
1. 在 Enterprise Manager 中,在要还原的数据库名称上按鼠标右钮,在快捷菜单上选取 所有工作 ,然后选择 还原数据库 ,进入 还原数据库 对话框,如图33-1所示。
 
 
图33-1 「还原数据库」对话框中的「一般」页签
2. 在 一般 页签的顶端是 还原成数据库 下拉式清单,这个清单可指定这个备份将被还原的数据库型态。图33-1显示选择了 Example 数据库。
这里并不要求直接用同样的名称来还原数据库-实际上,应该要使用另一个数据库名称。例如,假定某个使用者意外地删除了一个数据表,想要还原完整的数据库,那么就会将所有人的数据还原成较早的数据。但是,其实可以将数据还原到重新命名的数据库中,取出被删除的数据表,然后将这个数据表插入到仍在工作的数据库中。
3. 接着指定还原操作的类型: 数据库 、 档案群组或档案 或者 来源装置 。 数据库 选项可指定还原数据库。 档案群组或档案 选项可指定还原的档案群组或档案。 来源装置 选项可指定还原的装置,装置的内容将决定还原的类型。图33-1显示选择了数据库选项。
4.  参数 区域可以让您设定是否要显示其它数据库的备份(从另一个数据库的备份进行还原),应该要先还原哪个备份(如果设定了多个可用的备份),还有是否应该执行 还原时间点 。 还原时间点 能够还原数据到特定时间的状态。例如,如果在12:01时意外的删除了数据表,可以用 还原时间点 还原12:00时的数据库,刚好在删除发生之前。因为有全部可用的备份清单,可以选择需要使用的备份。如果没有强制还原最新的备份,那么数据库的所有备份都可供选择。
还原数据库 对话框中可选择一组备份,然后选择 属性 按钮检视内容。 备份集属性 窗口如图33-2所示。

 
 
图33-2 备份集属性窗口
5. 选择 确定 ,返回 还原数据库 对话框的 一般 页签,并选择 档案群组或档案 显示一个不同的画面,如图33-3所示。图33-3显示 Example 数据库中所有的档案和档案群组备份。要检视这些档案和档案群组备份的属性,请选取档案或档案群组然后选择 属性 。
 
 
图33-3 选取档案群组或档案选项后,还原数据库对话框的一般页签
6. 现在选择 来源装置 ,如图33-4所示。当选取一个还原的特殊备份装置时,会需要用到这个选项。必须以手动选取这组备份,然后指定 SQL Server 是否应该执行完全还原、差异还原、交易记录还原或档案和档案群组还原。也可以让 SQL Server 读取备份信息,并将这些信息与其它备份历史信息一起储存在 msdb 数据库。如果要执行数据库还原,这些关于备份的信息就可派上用场了。
7. 选取 还原数据库 对话框的 选项 页签,如图33-5所示。在这个页签顶端会看到3个复选框。 备份还原后,逐一退出已插入的磁带 复选框可确保磁带不会留在磁带机中被覆写。选择 还原备份前,先提示我 选项提供改变执行备份的机会。而选择 强制对现有的数据库进行还原 复选框让您用还原的数据库覆写现存的数据库。在这个页签,可以在一个新的数据文件名之下还原数据库,这对于保留原始数据库是很有用的。
 
 
图33-4 选取来源装置选项之后,还原数据库对话框的一般页签

 
 
图33-5 还原数据库对话框的选项页签
页签中其它的选项可指定在回复完成后数据库应该保持的状态,如下:
o  保持数据库运作,不还原额外的新增交易记录 这个选项不允许有进一步的差异还原或交易记录还原的回复。实质上是在还原中设定了 RECOVERY 标记。如果选了这个选项,就不能还原交易记录文件备份。
 
o  使数据库不运作,但还可以还原额外新增的交易记录 这个选项在还原中设定了 NORECOVERY 标记。设定了这个标记,就能应用进一步的差异式备份还原和交易记录文件备份还原。在还原进行过程中,数据库处于无法操作状态,这表示在完成整个还原之前,使用者无法存取这个数据库。
 
o  保持数据库为只读的状态,并可以还原额外新增的交易记录 这个选项也在还原中设定 NORECOVERY 标记,可以执行差异式备份还原和交易记录还原。和前面一个选项不同的是在执行还原操作时,使用者可以只读的存取这个数据库。
 
8. 在完成设定选项后,选择 确定 来开启还原操作。透过一个消息框可以了解还原操作的过程,如图33-6所示。当还原操作完成时,会看到一个状态方块,通知还原成功或失败。
 
 
图33-6 「还原进度」消息框
________________________________________
说明
SQL Server 备份装置支持多个不同备份操作的输出。反之亦然:单一备份可以分散到多个装置当中。多个备份装置群组的内容形成一个备份称为备份集(backup set)。因此一个备份装置(磁带、磁盘档案等)可以支持多个不同数据库备份集或多个同一数据库的备份集。
________________________________________
使用 T-SQL 执行还原
 
RESTORE T-SQL 命令和 BACKUP 命令类似( 第 32 章 中曾经讨论过)。如同BACKUP 命令,第一次使用时可能相当困难,但是一些 DBA 还是喜欢将他们的管理程序放置到 SQL 命令文件中,以便于重复执行这些功能。和 BACKUP 命令一样,RESTORE 命令提供了比 Enterprise Manager 更多的附加选项。
在本节中,我们将讨论 RESTORE 命令的语法以及这个命令提供的多种选项。RESTORE 命令有两种形式显示如下:
•   RESTORE DATABASE 还原完整的数据库、档案或档案群组。
 
•   RESTORE LOG 还原交易记录文件。
 
如您所见,所用的命令要依照执行还原操作的类型而定。因为这些命令共享大部分的选项,所以我们稍候将在一个清单中讨论这两种还原类型(数据库和记录文件)的所有选项。
RESTORE 陈述式
 
执行完整数据库还原时 RESTORE 陈述式的语法如下:
RESTORE DATABASE database_name
[   FROM backup_device  ]
[   WITH options  ]
这个陈述式只要求数据库的文件名称和备份所在的位置。
执行档案和档案群组还原时陈述式的语法如下:
RESTORE DATABASE database_name
[  FILE = file_name  ]
[  FILEGROUP = filegroup_name  ]
[   FROM backup_device  ]
[   WITH options  ]
这个陈述式只要求数据库名称、文件名称或档案群组名称和备份所在的位置。
执行交易记录还原时陈述式的语法如下:
RESTORE LOG database_name
[   FROM backup_device  ]
[   WITH options  ]
就如同其它的命令,database_name 是还原将要执行的数据库名称。backup_device 参数可以是逻辑备份装置名称或实体装置的名称。如果要指定一个实体装置,必须限定它的装置类型-也就是说,装置名称前面必须加上 DISK=、TAPE= 或 PIPE=。可以指定一个或多个装置,中间以逗号隔开。
________________________________________
说明
如果没有提供 FORM 子句,还原将无法进行,而且仍然会执行回复(除非执行NORECOVERY 选项)。这项技术可以用来将数据库设定为回复模式,而不还原其它附加数据。例如,可以执行多个差异还原操作,然后执行 RESTORE 陈述式,不需要 FORM 子句来将数据库设定为回复模式,就能够启动回复过程。
________________________________________
选项
 
表33-1列出了 RESTORE 命令可用的选项。如您所见,在执行还原操作时,这些选项提供了很大的弹性空间(如果列出的选项只对交易记录还原有用,将会标示其限制性)。
表33-1 RESTORE 命令选项
选项  说明
RESTRICTED_USER 设定新还原数据库的安全性,只有 db_owner、dbcreater 和 sysadmin 角色成员才能存取该数据库。
FILE = file_number 如果在储存媒体中有多个备份集,可用来识别所使用的备份集。例如设定该数值为2,则使用磁带上的第二个备份集。
PASSWORD = password 指定储存备份的密码。
MEDIANAME =media_name 指定媒体的名称。
MEDIAPASSWORD = password 指定储存媒体的密码。
MOVE 'logical_file_name'
TO 'OS_file_name' 更改还原档案的位置,例如:MOVE 'Northwind' TO 'D:/data/Northwind.mdf'。如果旧的磁盘无法使用,而需要还原到新的磁盘上时,可以使用这个选项。
NORECOVERY |RECOVERY |
STANDBY = undo_file NORECOVERY 指定在还原后,交易将无法退回或重新进行。如果将还原其它的备份(差异式备份或交易记录文件备份),则需要用到这个选项。REVOVERY 为预设选项,它指定执行回复操作,并退回每个没有提交的变更。STANDBY 指定在还原需要还原情况下,建立还原(undo)档案。
KEEP_REPLICATION 指定当数据库还原时复制设定要保存下来。
NOUNLOAD | UNLOAD NOUNLOAD 指定在还原完成后不卸载储存媒体(例如,覆写备份磁带并弹出)。UNLOAD 为预设选项,指定在还原完成后卸载储存媒体。
REPLACE 指出即使数据文件已经存在,SQL Server 仍将还原这些档案。现存的档案将被删除和覆写。如果没有指定 REPLACE,那么 SQL Server 将会核对 database_name 是否已经存在。如果已经存在,那么将终止还原操作。这个安全特性帮助避免无意地将还原覆写正在工作的数据库。
RESTART 指定 SQL Server 在还原操作被中断后重新启动还原操作。
STATS [ = percentage ] 在还原操作完成了指定的百分率后显示讯息。如果需要监控操作的过程,这个选项将会很有用。
PARTIAL 指定执行部份还原
STOPAT = date_time
(log restore only) 指定数据库回复到 data_time 指定时刻的数据状态(只对记录文件还原有效)。
STOPATMARK = 'mark' 指定还原操作进行到标记处。
STOPBEFOREMARK = 'mark' 指定还原操作进行到标记之前。
________________________________________
说明
命名交易(Named transactions)是 SQL Server 2000 中的新功能。它们是使用命令 BEGIN TRANSACTION ... WITH MARK 的 mark_name 选项建立的,特点是可以使用 RESTORE 命令中的 STOPATMARK 和 STOPBEFOREMARK 功能。
________________________________________
________________________________________
真实世界 使用RESTORE
这里有几个使用 RESTORE T-SQL 命令的例子。
这个陈述式还原 Example 数据库的数据文件:
RESTORE DATABASE Example
FROM Backup_Dev_1, Backup_Dev_2
WITH
NORECOVERY,
STATS = 5
GO
这个陈述式还原 Example 数据库的交易记录文件:
RESTORE LOG Example
FROM Backup_Dev_3, Backup_Dev_4
WITH
NORECOVERY,
STATS = 5,
UNLOAD
GO
还原的结果一样,输出将显示操作完成的百分率。将通知还原了多少页面、还原花了多少时间,以及还原执行的速度(MB/sec)。
现在可用以下的命令回复数据库
RESTORE LOG Example
WITH RECOVERY
GO
您将再次看到关于还原操作的统计。
________________________________________
规划严重损坏的回复
 
只有简单地丛集化服务器( 第 12 章 所讨论的)或使用 RAID( 第 5 章 所讨论的)来改善系统正常的工作时间是不够的。您必须在严重损坏发生前做好回复的计划。熟悉如何在必要时执行有效的数据库的备份和还原是十分重要的,但是还是必须准备好在必要时从一无所有开始重建系统。准备工作包括档案管理和计划编制。此外还要使用新的 SQL Server 2000 中还原的功能来提供足够的回复能力。这个功能让交易记录文件可以从主要系统移至备份系统中运作。
作为一个 DBA,应该规划一个最大工作时间的计划。这个计划应该包括下列组件:
•  记录当前组态档案
 
•  建立容错环境
 
•  准备实时回复
 
•  记录数据库回复计划档案
 
大部分的步骤都涉及到计划编制和档案管理。通常回复计划并没有记录,并且只有计划的开发者才能执行这个计划,一旦这个特定成员未能出现,就会出现严重损坏。
________________________________________
说明
确认记录的严重损坏回复计划档案,并指派候补人员在严重损坏发生时,您无法在场时的执行计划。
________________________________________
记录当前组态档案
 
如果建立当前组态的步骤没有很好的记录成档案,那么可能在系统需要重新建构或者在系统中增加新的硬件时会出现问题。记录当前组态档案能够更快速的重建、重新安装和重新设定系统。确定已经包括了下列信息:
•   硬件配置 包括硬件的类型和数量、RAID组态和其它选项。
 
•   安装的软件产品 包括安装在服务器上所有软件的完整信息。
 
建立容错环境
 
就像 第 5 章 看到的,容错 RAID 磁盘区的使用可以大大的降低系统失效的可能性。磁盘是机械组件,跟对象一样会有磨损。使用容错磁盘区,就能在重新安装操作系统、SQL Server 和重建来自备份的数据库时减少许多麻烦,重建过程是一个耗时又耗力的过程(耗费主要在劳动和系统故障期间损失的收入方面)。
如果容错磁盘损毁了,请尽可能快的将它更换。总会有磁盘可能损毁,而一些容错的形式可以在只损毁一个磁盘的情况下继续工作。可准备磁盘随时备用。
准备实时回复
 
准备好在必要时回复数据库。备份应该储藏在其它地方,防止如火灾或洪水的灾难,但您还是应该在手边保存有最近的备份,因为您可能无法很快速的从其它地方取到备份。备份阶段区域(backup staging area)是一种最受欢迎的方式,用这种方式可以在工作站保存最新的备份,还可以提高备份和还原的效能。备份阶段区域在网络上某处磁盘中储存最新的数据库和交易记录文件备份。在需要还原时,不需要使用磁带或从远离工作站的储藏处取得备份─还原可以立即进行。如果需要立即执行还原,这种技术就很有用了,但是由于必须占用硬件资源来储存备份,因此它的硬件需求很高。必须考虑预算和需求来决定是否需要。
记录数据库回复计划档案
 
因为在数据库必须回复的情况发生时,您也许不在现场,所以应该谨慎记录数据库回复计划,并和其它成员共享这些信息,这样在必要时他们就可以回复系统。如果自最后一次数据库还原之后过了很长的时间,数据库回复计划档案也会是一个有效的备忘手册。在任何事件中,保有数据库回复计划的手写拷贝都能使还原过程执行的更加平稳。
记录文件传送
 
SQL Server 2000 中的记录文件传送功能让您将最新交易记录文件应用在备用系统中,以建立备用系统并随时更新。备用系统保持参数回复模式,持续地让交易记录文件应用其上。即使系统在回复模式仍可以进行只读查询,因此可以让您使用备用系统来卸除报告任务。
在主要服务器的失效事件中,备用服务器可以简单而快速地到新的服务器上。这个功能已经有很多人在 SQL Server 7 中使用过,在 Microsoft 中也可支持,还加进一些好用的功能。这些功能包括透过 数据库维护计划精灵 和 SQL Server 代理程序启动与维护备用系统的能力。
本章总结
 
关于数据库备份、还原和回复操作的讨论到此结束。在这两章中,您已经学到了如何有效的进行系统的备份和还原,以及 SQL Server 回复是如何运作的,您也看到了如何使用 Enterprise Manager 和 T-SQL 命令执行这些操作。本章着重在讨论回复操作和准备严重损坏回复计划。记住,系统的安全性是 DBA 的主要职责之一。 <script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
阅读更多
个人分类: 数据库
上一篇备份SQL Server
下一篇使用者与安全性管理
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭