欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    SQLServer灾难恢复技术保护数据库.docx

    • 资源ID:5684487       资源大小:66.41KB        全文页数:26页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    SQLServer灾难恢复技术保护数据库.docx

    1、SQLServer灾难恢复技术保护数据库使用灾难恢复技术保护数据库为了防止数据丢失,可以为数据库实施恢复策略。依据可能发生的错误和数据保护的级别,用户需要很好地规划、实施和测试恢复策略。在数据仓库中,数据可以从其他系统中恢复,因此不需要备份每一个事务,定期对数据进行完整的备份就足够了。然而,对于一个存储商店交易信息的数据库来说,我们可能希望备份每一笔交易的信息。SQL Server提供了非常丰富的备份功能以实现我们需要的备份方式。在这一章中,我们将讨论在SQL Server中最常用的数据保护策略。3.1 使用完整数据库备份一种常用的数据库备份策略是依据事先定义好的时间(例如每晚一次)进行整个数

    2、据库的备份。这种备份策略可以将数据库还原到上一次备份发生时的最后状态。这种备份策略可以通过随后介绍的完整数据库备份来实现。完整数据库备份的备份内容包括还原数据库时需要的所有数据和数据库的元数据信息,其中包括全文目录。在还原完整数据库备份时,数据库将恢复所有数据库文件,这些文件包含备份结束时处于一致状态的所有数据。在执行数据库备份时,数据库即使处于联机状态,用户依然可以像平常一样发起事务,更改数据。“一致状态”是指在备份执行过程中,所有提交的事务将被接受,所有未完成的事务将被回滚。在SQL Server执行备份时可能存在事务正在修改数据的情形,而这种情形很可能导致数据不一致。因此,针对这种情形,

    3、SQL Server有一种特殊的处理过程以保证数据的一致性。这个过程包括向备份设备写数据页和事务日志记录。 提示 SQL Server数据库加入了全文目录以实现全文索引功能。全文索引可以让我们更快、更精确地搜索数据库中的数据。有关全文索引的更详细信息,请参考SQL Server Books Online中的主题“About Full-Text Indexes”。SQL Server进行数据备份的速度取决于输入/输出设备(输入/输出设备用于收集和存储数据)。为了获得最佳执行性能,SQL Server以顺序方式读取文件。如果用户的输入/输出设备足以同时处理数据备份和系统一般操作所产生的输入/输出请

    4、求,那么创建数据备份对数据库系统造成的影响并不大。不管怎样,最好在系统使用的非高峰时间进行完整数据库备份。下一节将讨论实现完整数据库备份策略的系统选项。3.1.1 简单恢复模式由于SQL Server需要事先知道我们计划对数据库进行哪一种数据备份,因此,我们需要依据备份类型的不同对数据库进行不同的配置。此配置通过设置恢复模式选项来完成。数据库所用的默认恢复模式取决于数据库创建时指定的数据库恢复模式。为了实现只包括完整数据库备份的备份策略,恢复模式应该被设置为“简单模式”。 设置恢复模式为简单模式1. 从”开始”菜单中选择“所有程序”|“Microsoft SQL Server 2005”|“S

    5、QL Server Management Studio”。2. 在“连接到服务器”对话框中单击“连接”按钮。3. 在“标准”工具栏中,单击“新建查询”按钮打开一个“新建查询”窗口。4. 可以用ALTER DATABASE语句来设置恢复模式。键入以下语句:USE master;GOALTER DATABASE AdventureWorksSET RECOVERY SIMPLE;GO 然后单击“执行”按钮。更多详情 本章主要介绍如何使用T-SQL语句进行备份和还原。在第4章“将数据库迁移到其他系统”将讨论如何使用SQL Server Management Studio用户界面(而不是T-SQL语句

    6、)来执行同样的过程。 检查恢复模式设置1. 可以使用DATABASEPROPERTYEX函数来查看数据库的恢复模式,该函数可以获取当前数据库的选项或特定数据库的属性。执行以下语句可以获取AdventureWorks数据库的恢复模式:SELECT DATABASEPROPERTYEX(AdventureWorks,Recovery)2. 检查执行结果,将显示恢复模式为SIMPLE。3. 关闭SQL Server Management Studio。3.1.2 备份设备在开始备份之前,需要知道数据备份保存在哪里。备份的存储位置称为备份设备。每一个备份设备可以存储许多不同类型的多个备份。备份设备有两

    7、种不同的类型: 磁带设备可以用于在磁带上备份数据。磁带设备必须挂接在本机。备份可以跨越多个磁带,并且SQL Server备份可以与Windows备份混合使用。 磁盘设备是在本地或远程的磁盘或者磁盘存储媒体上的文件。它们通过备份存储的文件路径来引用。远程位置必须通过UNC路径引用。 注意 在本书中,我们只讨论备份到磁盘设备的备份过程。将SQL Server数据库备份到磁带设备上的做法已经不再常见。SQL Server备份存储在磁带设备上的时候,备份一般通过提供附加功能的第三方产品进行,例如远程磁带存储产品。对于已经备份到磁盘设备上的数据备份来说,也可以将其再备份到磁带设备上以提高保险系数。备份设

    8、备由设备名标识。设备名可以是一个逻辑设备名或者一个物理设备名。一个磁盘设备的物理设备名是备份文件的路径,例如“BACKUPSERVERBackupsadv Adventure Works.bak”。这个路径可以在备份语句中直接使用。逻辑设备名是存储在SQL Server中指向备份设备物理名的名称。当一个连接设备名在备份语句中使用的时候,SQL Server将在系统目录中搜寻相应的物理位置并在搜到的位置执行备份。可以使用系统存储过程sp_addumpdevice在系统目录中加入一个逻辑设备。以下示例定义了一个名为Adv_FullDb_Dev的逻辑设备:EXEC sp_addumpdevice d

    9、isk, Adv_FullDb_Dev,T:BACKUPSAdvFullDbDev.bak; 提示 务必将上例中的文件路径改为本机器的有效路径。如果没有映射到T:的驱动器,则需要更改上例中的文件路径以和机器上的驱动器映射相匹配。同样,路径中的文件夹也要在您的机器上。逻辑设备名和物理设备名可以在备份和还原数据库时交替使用。当然,一般来说,最好是始终只用这两种命名约定中的一种,这样不会使代码变得复杂。应该事先想好自己更倾向于哪种命名约定。数据备份决不能存储到相同的物理存储单元,例如数据库自身的磁盘设备。即使磁盘通过实施一些级别的RAID功能而具有容错能力,控制器还是可能经常出错并损坏磁盘上的数据。

    10、与此同时,还应考虑将备份文件备份到磁带上并将磁带保存在远程设备上。 提示 RAID是“redundant array of independent disks”(冗余独立磁盘阵列)的缩写。这些阵列是用于提高可靠性和存储容量的具有多个驱动器的磁盘系统。3.1.3 执行完整数据库备份将恢复模式设置为SIMPLE并确定使用哪些设备存储备份之后,就可以开始执行备份了。完整数据库备份是通过BACKUP DATABASE语句来执行的,它非常易于使用。在这个语句的最简单的形式中,只需告诉系统要备份哪个数据库到哪个设备。将数据库AdventureWorks备份到先前定义的逻辑设备Adv_FullDb_Dev,

    11、可以使用以下语句:USE master;GOBACKUP DATABASE AdventureWorksTO Adv_FullDb_Dev;如果要执行完整数据库备份到一个物理设备,必须在BACKUP DATABASE语句中指定设备的类型和位置。可以使用以下语句将数据库备份到位置t:adv.bak:USE master;GOBACKUP DATABASE AdventureWorksTO DISK=t:adv.bak;如前所述,每一个备份设备都可以存储多个备份。可以通过BACKUP DATABASE语句的一个参数来指定是否希望SQL Server覆盖或者添加设备上已经存在的备份。用于覆盖和添加的

    12、两个选项分别为INIT 和NOINIT。如果指定INIT,备份设备会在备份前被删除,备份将覆盖原来存在该设备上的任何备份。如果指定NOINIT,这是默认值,SQL Server将备份添加到备份设备中,保留已有的所有备份。这些选项由BACKUP DATABASE语句末端的WITH语句块设置。如果希望执行与前一个例子一样的备份,但要告诉SQL Server首先删除设备,可以使用以下语句:USE master;GOBACKUP DATABASE AdventureWorksTO DISK=t:adv.bakWITH INIT;可以看出,执行完整数据库备份相当简单。在下一节中,将提到完整数据库备份是其

    13、他所有数据库备份类型都依赖的备份类型。由于其他数据库备份类型都需要一个重建的数据库才能工作,因此它们都依赖于完整数据库备份。这些包括差异备份在内的其他类型的数据库备份都通过存储上一次完整数据库发生后所产生的变化来实现备份。因此,完整数据库备份并不只在执行完整数据库备份的恢复策略中占有重要地位,对后面要讨论的备份策略同样重要。3.2 使用差异备份完整数据库备份的重要优势在于它重建了这个数据库的所有数据。但这个优势同时是它的劣势。设想一个每天晚上都要进行完整备份的数据库。如果我们希望恢复这个数据库,就只能使用前一天晚上的备份,这会导致一天工作成果的丢失。减少潜在时间损失的方法是更频繁地执行完整数据

    14、库备份,但这本身会成为一个问题。因为在执行完整数据库备份的时候,所有的数据和部分的事务日志将被写入备份设备,这使得执行一次备份非常耗时。同时需要许多存储空间保存这些备份,而且由于完整数据库备份会执行大量的I/O操作,因此会降低数据库的执行性能。如果在晚上执行一次完整数据库备份并且只备份在白天变化的数据是不是会更好?这种功能由差异备份提供。差异备份只存储在上一次完整备份之后发生改变的数据。当一些数据在上一次完整备份后被改变多次的时候,差异备份只存储更改数据的最新版本。由于差异备份包括自上次完整备份以后的所有变化,因此为了还原差异备份,首先需要还原上一次的完整数据库备份,然后只需应用最后一次差异备

    15、份,如图3.1所示。和完整数据库备份一样,差异备份包括部分的事务日志以恢复一致状态。图3.1 具有差异备份的备份策略执行差异备份执行差异备份与执行完整备份非常相似。惟一的不同是需要在备份的WITH选项中指明要执行差异备份。为数据库AdventureWorks执行差异备份到一个物理设备并在备份设备上覆盖其他已有的备份,可采用下面的BACKUP DATABASE语句:USE master;GOBACKUP DATABASE AdventureWorksTO DISK=t:adv_diff.bakWITH INIT,DIFFERENTIAL;如果要用逻辑设备进行差异备份,必须像进行完整数据库备份那样

    16、先创建它们:USE master;GOEXEC sp_addumpdevice disk, Adv_Diff_Dev,T:BACKUPSAdvDiffDev.bak;GOBACKUP DATABASE AdventureWorksTO Adv_Diff_DevWITH INIT,DIFFERENTIAL;重要提示 为了还原差异备份,同样需要最新的完整数据库备份。注意,不要覆盖或者删除完整数据库备份,以便在进行差异备份的时候能用到它。3.3 使用事务日志备份结合使用完整数据库备份和差异备份,可以为数据创建快照并恢复它们。但在某些情况下,我们还是希望有数据库中发生的所有事件(例如每一个语句的执行记

    17、录)的备份。有了这种功能,可以将数据库恢复到任何状态。事务日志备份提供了这种功能。就像它的名字所示,事务日志备份是事务日志的备份,它包括在数据库中发生的所有事务。事务日志备份的主要优点如下: 事务日志备份允许我们将数据库恢复到特定时间点 由于事务备份日志是日志实体的备份,因此甚至是数据文件已被损坏,也可以执行事务日志备份。通过这种备份,数据库可以恢复到错误发生前最后那个事务发生后的状态。因此,在一个错误事件中,不会丢失任何一个提交的事务。像差异备份一样,需要在备份策略中包括一个完整数据库备份以通过事务日志备份来恢复数据库。图3.2描绘了使用事务日志备份的备份策略。完整数据库备份可以在数据库使用

    18、的非高峰期间进行,事务日志备份则在预先规定好的白天某一时间进行。一个事务日志备份包括自从上次事务日志备份后发生的所有事务。因此,为了使用事务日志备份还原数据库,需要完整数据库备份和完整数据库备份之后所备份的所有事务日志备份。可以看出,保证所有的备份可用是很重要的。如果完整数据库备份或者其中任何一个事务日志备份丢失了,将不可能如愿以偿地还原数据库。图3.2 具有事务日志备份的备份策略在事务日志备份之间可以接受的时间周期取决于: 在数据库中发生的事务大小。在这种备份策略下,SQL Server必须存储所有的事务直到事务日志备份把它们存储下来。因此,事务日志文件必须足够大以存储所有在两次连续事务日志

    19、备份时间间隔内发生的所有事务。如果日志文件的大小增长得太快,可以通过减少两次事务日志备份之间的时间间隔或者增大日志文件的大小来解决。 对工作丢失的可接受程度。正如前面所讲的,即使是在数据文件丢失的情况下,也可能将数据库恢复到最后一个事务发生后的状态。但是,如果事务日志丢失或者损坏了,只能将数据库恢复到最后一次事务日志备份前的状态。减少在事务日志备份之间的时间间隔将减少发生这种情况时所涉及到的工作量。结合使用事务日志备份和差异备份另一种可能的备份策略是结合使用完整数据库备份、差异备份和事务日志备份。在还原所有事务日志备份会花很多时间的时候可以使用这种策略。还原事务日志备份意味着将所有事务再次重新

    20、运行,因此这种做法会花费相对多的数据恢复时间,尤其是在应用于大型数据库的时候。由于差异备份只备份变化的数据,因此比重新执行所有事务的方式还原得更快。如图3.3所示,在使用组合还原策略的时候,为了还原数据库,首先需要还原最后一次备份的完整数据库备份,然后还原最后一次的差异备份,最后还原在差异备份后进行的所有事务日志备份。3.3.1 完整恢复模式如前所述,用户需要事先告诉SQL Server自己计划实施哪种备份策略。如果只使用完整数据库备份和差异备份,数据库必须置于简单恢复模式。如果也想使用事务日志备份,恢复模式必须置于完整恢复模式(FULL)或者大容量日志恢复模式(BULK_LOGGED)。完整

    21、恢复模式会告诉SQL Server您希望执行事务日志备份。为此,SQL Server将所有事务保存在一个事务日志文件中直到一次事务日志备份发生。当事务日志备份发生时,SQL Server将在事务日志备份写入备份设备后删除事务日志。在简单恢复模式中,事务日志会在每一个检查点后被删除,这意味着提交的事务(已经写入数据文件)将在事务日志中被删除。因此,在简单恢复模式中,不能创建事务日志备份。重要提示 在数据库置于完整恢复模式的时候,执行事务日志备份是非常重要的。如果没有进行事务日志备份,事务日志文件将不断增加直至其最大大小限制。事务日志已满且不能再增加的时候,就不能再执行事务了。执行事务日志备份的代

    22、码可以在3.3.2节“执行事务日志备份”找到。还可以使用ALTER DATABASE将数据库的恢复模式设置为FULL。以下代码将AdventureWorks数据库的恢复模式设为FULL:USE master;GOALTER DATABASE AdventureWorksSET RECOVERY FULL;GO大容量日志恢复模式在完整恢复模式下,所有大容量操作(更改大量数据的单一操作)将被完整记录下来以便能还原事务日志备份。在有些数据库中,由于事务日志大小的限制和完整记录大容量操作时产生的性能问题,数据库不能在所有时间使用完整恢复模式。这正是大容量日志恢复模式存在的原因。大容量日志恢复模式可以允

    23、许事务日志既捕获日志又捕获大容量操作的结果。但它也存在缺点。在大容量日志恢复模式下,将数据库还原到特定的时间点是不可能的。而且,在数据文件损坏且在最后一次事务日志备份之后发生了大容量操作的情况下,不可能再执行事务日志备份。这恰好是事务日志备份的重要优点之一。因此,大容量日志恢复模式必须在执行大容量操作的时候打开,并且要让使用这种模式的时间尽量短。在其他时间,数据库使用完整备份模式。如果只需要使用完整日志操作,就不要使用大容量日志恢复模式。有关大容量日志恢复模式的更多信息,请参阅SQL Server Books Online中的相关主题“Backup Under the Bulk-Logged

    24、Recovery Model”。3.3.2 执行事务日志备份为了执行事务日志备份,数据库的恢复模式必须设置为完整恢复模式并且我们必须在数据库更改为完整恢复模式后至少执行一次完整数据库备份。事务日志备份通过BACKUP LOG语句执行。通常,必须在语句中指出数据库名和备份设备名。备份设备的类型与使用完整数据库备份和差异数据库备份时的设备类型相同。执行以下步骤将数据库AdventureWorks的事务日志备份到一个物理设备上。 备份事务日志文件1. 将恢复模式设置为FULL。2. 至少执行一次完整数据库备份。3. 使用以下语句将数据库AdventureWorks的事务日志备份到一个物理设备上:US

    25、E master;GOBACKUP LOG AdventureWorksTO DISK=t:adv_log.bak 同其他备份语句一样,备份的执行进程在BACKUP语句没有指定任何选项的时候会将备份添加到备份设备上。如果要覆盖设备,需要使用WITH INIT语句。USE master;GOBACKUP LOG AdventureWorksTO DISK=t:adv_log.bakWITH INIT3.4 恢复数据库在前一节中,执行了不同类型的数据库备份。然而对于数据库恢复过程,尚停留在理论阶段。下面将介绍如何在不同的恢复场景下恢复数据库。3.4.1 获取备份信息在开始还原数据库之前,自己要清楚

    26、要还原哪一个备份。SQL Server会存储备份历史记录,在数据库中进行的每一次备份都将记录在msdb数据库中。可以通过查询msdb数据库,找出所有的备份和还原记录。 创建简单备份信息1. 从“开始”菜单中选择“所有程序”|“Microsoft SQL Server 2005”|“SQL Server Management Studio”。2. 在“连接到服务器”对话框中,单击“连接”按钮。3. 在标准工具条中,单击“新建查询”按钮打开一个“新建查询”窗口。4. 键入并执行以下BACKUP语句对AdventureWorks数据库执行一次完整数据库备份和一次差异备份:ALTER DATABASE

    27、 AdventureWorksSET RECOVERY SIMPLE;-Perform Full Database BackupBACKUP DATABASE AdventureWorksTO DISK = T:BACKUPSADVFULL.BAKWITH INIT;-Perform a differential BackupBACKUP DATABASE AdventureWorksTO DISK = T:BACKUPSADVDIFF.BAKWITH INIT,Differential; 获取简单备份信息1. 要想知道数据库AdventureWorks发生了哪些备份,可以执行以下SELECT

    28、语句:USE msdbGOSELECT backup_start_date,type, physical_device_name,backup_set_idFROM backupset bs inner join backupmediafamily bmON bs.media_set_id = bm.media_set_idWHERE database_name =AdventureWorksORDER BY backup_start_date desc 下图所示的结果面板指出最近发生的备份的类型为“I”,一个差异备份。前面曾提到,要还原一个差异备份,必须首先还原一个最近发生的完整数据库备份。

    29、这个备份可以在第二行找到,其类型为“D”,指出这是一个完整数据库备份。2 每一个备份都有一个惟一标识称为“备份集标头”(backup set id),可以在结果窗口中看到该标识,如图3.4所示。 可从以上信息中找到备份所涉及的数据和日志文件以及它们所处的原始位置。以下查询将获得备份集标头为62的备份信息。在运行这个查询的时候,请确保将备份集标头值“62”改为前一步所找到的完整数据库备份的备份集标头值:SELECT filegroup_name,logical_name,physical_nameFROM msdb.backupfileWHERE backup_set_id = 62 -chan

    30、ge to your backup_set_id图3.4 SELECT语句的执行结果3 在有些情况下,msdb数据库没有我们需要的备份历史信息。在msdb数据库被破坏或在其他系统上进行备份的时候会发生这种情况。此时,只能直接通过备份设备来获取备份信息。可以键入并执行以下语句来获取T:BACKUPSADVFULL.BAK中存储的备份信息:RESTORE HEADERONLY FROM DISK=T:BACKUPSADVFULL.BAK4 可以执行RESTORE FILELISTONLY语句来获取受备份设备上所存备份所影响的数据文件和日志文件的有关信息:RESTORE FILELISTONLY F

    31、ROM DISK =T:BACKUPSADVFULL.BAK3.4.2 使用SQL Server Management Studio还原数据库在许多情况下,还原数据库的最简单方式是使用SQL Server Management Studio。SQL Server Management Studio使用msdb数据库中存储的备份历史来展示还原数据库的这种最佳方法。 在SQL Server Management Studio中执行数据库还原1 在SQL Server Management Studio的查询窗口中执行以下语句来模拟一个场景。在这个场景中,AdventureWorks数据库使用完整数据库备份和差异备份构成的简单恢复策略。要根据自己的实际情况更改备份设备的路径。ALTER DATABASE AdventureWorksSET RECOVERY SIMPLE;-Perform Full Database BackupBACKUP DATABASE AdventureWorksTO DISK = T:BACKUPSADVFULL.BAKWITH INIT;-Simulate a transactionUPDATE AdventureWorks.Person.


    注意事项

    本文(SQLServer灾难恢复技术保护数据库.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开