710 likes | 831 Views
第 13 讲 备份与恢复. 13.1 备份与恢复的基本概念 13.2 备份与恢复的类型和策略 13.3 备份数据库 13.4 恢复数据库 13.5 维护数据库. 虽然 SQL Server 2000 提供了内置的安全性和数据保护,这种安全管理主要是为防止非法登录者或非授权用户对 SQL Server 2000 数据库或数据造成破坏,但在有些情况下这种安全管理机制显得力不从心。
E N D
第13讲 备份与恢复 • 13.1 备份与恢复的基本概念 • 13.2 备份与恢复的类型和策略 • 13.3 备份数据库 • 13.4 恢复数据库 • 13.5 维护数据库
虽然SQL Server 2000提供了内置的安全性和数据保护,这种安全管理主要是为防止非法登录者或非授权用户对SQL Server 2000 数据库或数据造成破坏,但在有些情况下这种安全管理机制显得力不从心。 • 例如合法用户不小心对数据库数据做了不正确的操作,或者保存数据库文件的磁盘遭到损坏,或者运行SQL Server 2000 的服务器因某种不可预见的事情而导致崩溃,所以我们需要提出另外的方案,即数据库的备份和恢复来解决这种问题。
13.1 备份与恢复的基本概念 • 备份和恢复组件是 SQL Server 2000 的重要组成部分。 • 备份就是指对SQL Server 数据库或事务日志进行拷贝,数据库备份记录了在进行备份这一操作时数据库中所有数据的状态,如果数据库因意外而损坏这些备份文件将在数据库恢复时被用来恢复数据库。
由于SQL Server 2000 支持在线备份,所以通常情况下,可一边进行备份,一边进行其他操作,但是在备份过程中,不允许执行以下操作: • (1)创建或删除数据库文件。 • (2)创建索引。 • (3)执行非日志操作。 • (4)自动或手工缩小数据库或数据库文件大小。
恢复就是把遭受破坏或丢失数据或出现错误的数据库恢复到原来的正常状态,这一状态是由备份决定的,但是为了维护数据库的一致性,在备份中,未完成的事务并不进行恢复。恢复就是把遭受破坏或丢失数据或出现错误的数据库恢复到原来的正常状态,这一状态是由备份决定的,但是为了维护数据库的一致性,在备份中,未完成的事务并不进行恢复。 • 进行备份和恢复的工作主要是由数据库管理员来完成的,实际上数据库管理员日常比较重要、比较频繁的工作就是对数据库进行备份和恢复。
13.2 备份与恢复的类型和策略 13.2.1 数据库备份的类型 在SQL Server 2000中有4种备份类型,分别为: • 数据库备份(Database Backups) • 事务日志备份(Transaction Log Backup) • 差异备份(Differential Database Backups) • 文件和文件组备份(File and File Group Backup)
1.数据库备份(Database Backups) 是指对数据库的完整备份,包括所有的数据以及数据库对象。
2.事务日志备份(Transaction Log Backup) 指对数据库发生的事务进行备份,包括从上次进行事务日志备份、差异备份和数据库完全备份之后,所有已经完成的事务。
3.差异备份 (Differential Database Backups) 指将最近一次数据库备份以来发生的数据变化备份起来,因此差异备份实际上是一种增量数据库备份。
4.文件和文件组备份 (File and File Group Backup) 指对数据库文件或文件夹进行备份,但其不像完整的数据库备份那样,同时也进行事务日志备份。使用该备份方法可提高数据库恢复的速度,因为其仅对遭到破坏的文件或文件组进行恢复。
13.2.2 数据库备份的策略 选用怎样的备份方案将对备份和恢复产生直接影响,而且也决定了数据库在遭到破坏前后的一致性水平,所以在做出该决策时必须认识到以下问题:
(1)如果只进行数据库备份,那么将无法恢复自最近一次数据库备份以来,数据库中所发生的所有事务。这种方案的优点是简单,而且在进行数据库恢复时操作也很方便。(1)如果只进行数据库备份,那么将无法恢复自最近一次数据库备份以来,数据库中所发生的所有事务。这种方案的优点是简单,而且在进行数据库恢复时操作也很方便。
(2)如果在进行数据库备份时也进行事务日志备份,那么可以将数据库恢复到失败点,那些在失败前未提交的事务将无法恢复,但如果在数据库失败后立即对当前处于活动状态的事务进行备份,则未提交的事务也可以恢复。(2)如果在进行数据库备份时也进行事务日志备份,那么可以将数据库恢复到失败点,那些在失败前未提交的事务将无法恢复,但如果在数据库失败后立即对当前处于活动状态的事务进行备份,则未提交的事务也可以恢复。
SQL Server 2000 提供了以下方法来减少备份或恢复操作的执行时间: • (1)使用多个备份设备来同时进行备份处理,同理可以从多个备份设备上同时进行数据库恢复操作处理。
(2)综合使用完整数据库备份、差异备份或事务日志备份来减少每次的需要备份的数据数量。(2)综合使用完整数据库备份、差异备份或事务日志备份来减少每次的需要备份的数据数量。 • (3)使用文件或文件组备份以及事务日志备份,这样可以只备份或恢复那些包含相关数据的文件,而不是整个数据库。
13.2.3 数据库恢复的策略 在SQL Server 2000 中有3种数据库恢复模式,分别是 • 简单恢复(Simple Recovery) • 完全恢复(Full Recovery) • 批日志恢复(Bulk-logged Recovery)
1.简单恢复 所谓简单恢复就是指在进行数据库恢复时,仅使用了数据库备份或差异备份,而不涉及事务日志备份。
2.完全恢复 是指通过使用数据库备份和事务日志备份,将数据库恢复到发生失败的时刻,因此几乎不造成任何数据丢失,这成为对付因存储介质损坏而数据丢失的最佳方法。
3.批日志恢复 批日志恢复在性能上要优于简单恢复和完全恢复模式,它能尽最大努力减少批操作所需要的存储空间,这些批操作主要是SELECT INTO 、批装载操作(如bcp 操作或批插入操作)和创建索引针对大文本或图像的操作(如WRITETEXT,UPDATETEXT)。
13.3 备份数据库 • 在进行备份以前,首先必须创建备份设备,备份设备是用来存储数据库事务日志或文件和文件组备份的存储介质,备份设备可以是硬盘、磁带或管道。 • SQL Server 2000 只支持将数据库备份到本地磁带机而不是网络上的远程磁带机。当使用磁盘时SQL Server 2000 允许将本地主机硬盘和远程主机上的硬盘作为备份设备,备份设备在硬盘中是以文件的方式存储的。
13.3.1 创建和删除备份设备 (1)使用企业管理器管理备份设备
(2)使用系统存储过程创建和删除备份设备 在SQL Server 中,可以使用sp_addumpdevice语句创建备份设备,其语法形式如下: • sp_addumpdevice {‘device_type’} • [,’logical_name’][,’physical_name’][,{{controller_type|’device_status’}}]
举例: use master exec sp_addumpdevice ‘disk’, ‘backup_company’, ‘c:\mssql7\backup\bk_company.bak’
使用sp_dropdevice语句来删除备份设备。其语法如下:使用sp_dropdevice语句来删除备份设备。其语法如下: • sp_dropdevice [‘logical_name’][,’delfile’] 举例:删除上面创建的备份设备 • sp_dropdevice ‘backup_company’, ‘c:\mssql7\backup\bk_company.bak’
13.3.3 使用企业管理器进行备份 • (1)启动企业管理器,登录到指定的数据库服务器,打开数据库文件夹,用右键单击所要进行备份的数据库图标,在弹出的快捷菜单中选择所有任务,再选择备份数据库 。 • (2)出现SQL Server备份对话框,对话框中有两个页框,即常规和选项页框。 • (3)在常规页框中,选择备份数据库的名称、操作的名称、描述信息、备份的类型、备份的介质、备份的执行时间。 • (4)通过单击添加按钮选择备份设备 。 • (5)选择调度复选框,来改变备份的时间安排。 • ( 6 )在选项页框中进行附加设置 。
13.3.4 使用T-SQL 命令备份数据库 T-SQL 语句提供了BACKUP 命令进行备份操作,其语法格式如下: • BACKUP DATABASE { database_name | @database_name_var } • TO < backup_device > [...n ] • [ WITH • [ BLOCKSIZE = { blocksize | @blocksize_variable } ] • [ [ ,] DESCRIPTION = { 'text' | @text_variable } ]
[ [ ,] EXPIREDATE = { date | @date_var } | RETAINDAYS = { days | @days_var } ] • [ [ ,] PASSWORD = { password | @password_variable } ] • [ [ ,] FORMAT | NOFORMAT ] • [ [ ,] { INIT | NOINIT } ] • [ [ ,] MEDIADESCRIPTION = { 'text' | @text_variable } ]
[ [ ,] MEDIANAME = { media_name | @media_name_variable } ] • [ [ ,] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ] • [ [ ,] NAME = { backup_set_name | @backup_set_name_var } ]
[ [ ,] { NOSKIP | SKIP } ] • [ [ ,] { NOREWIND | REWIND } ] • [ [ ,] { NOUNLOAD | UNLOAD } ] • [ [ ,] RESTART ] • [ [ ,] STATS [ = percentage ] ] • ]
主要参数选项的含义说明如下 DATABASE:表示进行数据库备份而不是事务日志备份。 database_name | @database_name_var:表示要进行备份的数据库名称或变量。
BLOCKSIZE:备份介质内每一数据区块以byte 为单位表示的大小,如果使用磁盘介质备份将自动决定数据区的大小,如果使用管道且不指明数据区的大小,则默认其为4KB。如果使用磁带只有在使用FORMAT 选项时BLOCKSIZE 才有效。未指定其大小时系统会自动选择合适的数据区大小。
DESCRIPTION:描述备份设置的文本,最多有255 个字符。 EXPIREDATE:表示保留备份文件的有效期限。若超过该保留期备份介质上的数据可被覆盖。 RETAINDAYS:表示备份文件在备份介质中可以保留的天数,如果超过该天数,则介质上的数据可被覆盖。只有在使用INIT选项时,该选项才有效,如果使用SKIP,则此选项无效。
FORMAT | NOFORMAT:FORMAT表示将原备份介质头复写,从而将原介质上的所有数据覆盖。 INIT| NOINIT:INIT表示备份介质上的所有数据都将被覆盖,介质头将被保留,但是如果在备份介质上的数据结果集仍没有超过使用的有效期,或在BACKUP 命令中给出的备份结果集名称与备份介质上的不匹配,则备份介质不会被覆盖。NOINIT 表示将备份结果集添加到当前备份介质中去。
NOUNLOAD | UNLOAD:表示在备份完成以后磁带机是否自动倒带,且退出磁带机。该选项仅用于磁带设备。 RESTART:表示SQL Server重新开始被中断的备份操作,使用该选项可以节省时间。因为备份将从中断点接着进行,而不是从头开始。该选项仅适用于磁带介质且需要多卷磁带。 STATS:表示在备份完某一百分比数据之后所要显示的信息。
13.4 恢复数据库 数据库恢复是指将数据库备份加载到系统中的过程。 系统在恢复数据库的过程中,自动执行安全性检查、重建数据库结构以及完整数据库内容。
恢复数据库有两种方法: (1)使用企业管理器恢复数据库。 (2)使用T-SQL命令进行数据库恢复。
13.4.1 使用企业管理器恢复数据库 • 准备工作: • 打开数据库的 “限制访问” 属性 使用企业管理器恢复数据库 (1)打开企业管理器,单击要登录的数据库服务器,然后从主菜单中选择工具,在菜单中选择还原数据库命令。 (2)在还原为数据库旁的下拉列表中选择要恢复的数据库,在还原组中通过单击单选按钮来选择相应的数据库备份类型。 (3)选中选项页框,进行其它选项的设置 。
13.4.2 使用T-SQL恢复数据库 T-SQL 语句提供了 RESTORE 命令进行恢复操作,其语法格式如下: • RESTORE DATABASE {database_name | @database_name_var} • [FROM <backup_device> [, ...n]] • [WITH • [DBO_ONLY]
[[,] FILE = file_number] • [[,] MEDIANAME = {media_name | @media_name_variable}] • [[,] MOVE 'logical_file_name' TO 'operating_system_file_name'][ ...n] • [[,] {NORECOVERY | RECOVERY | STANDBY = undo_file_name}]
[[,] {NOUNLOAD | UNLOAD}] • [[,] REPLACE] • [[,] RESTART] • [[,] STATS [= percentage]] • ]
其主要参数意义如下 DBO_ONLY:表示将新恢复的数据库的访问权限只授予数据库所有者。 FILE:表示恢复具有多个备份子集的备份介质中的那个备份子集。