第13章数据备份与还原.docx
- 文档编号:24904980
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:35
- 大小:276.51KB
第13章数据备份与还原.docx
《第13章数据备份与还原.docx》由会员分享,可在线阅读,更多相关《第13章数据备份与还原.docx(35页珍藏版)》请在冰豆网上搜索。
第13章数据备份与还原
第13章数据备份与还原
对于计算机用户来说,对一些重要文件、资料定期进行备份是一种良好的习惯。
同样的,对于数据库管理员和用户,对数据库备份与还原(或恢复)依然是一项重要且不可缺少的工作。
因为在一个复杂的大型数据库中,造成数据丢失的原因有很多。
用户可能对数据库进行误操作或者恶意操作、物理磁盘的数据冲突、外界突发事件的影响等等,这些都有可能造成数据损失甚至是系统崩溃。
在这时候,就需要根据以前的数据库备份采取符合需求的还原和重建工作。
本章主要介绍常用备份策略、备份数据库中各种对象以及SQLServer数据库的还原等。
13.1备份和还原构架
SQLServer2000的备份和还原组件可以创建数据库的复本,并将此复本存储在某个位置,以便一旦运行SQLServer实例的服务器出现故障时使用。
如果运行SQLServer实例的服务器出现故障,或者如果数据库遭到某种程度的损坏,可以用备份复本重新创建或还原数据库。
SQLServer备份比其他数据库文件备份(如操作系统文件备份、第三方软件备份等)方法更可靠是因为它们从来不备份部分事务,因而SQLServer备份保存了数据的完整性。
SQLServer备份也是动态的,就是说在SQLServer运行时也能备份。
为了维护数据完整性,一个DBMS需要能够把数据库还原成某一时间所看到的那样。
如图13.1所示,说明了SQLServer备份如何在用户进行备份期间修改数据库时维护数据完整性的,图13.1(a)中,将部分数据库中的数据备份到数据库备份文件中,图13.1(b)中,修改部分数据,并将修改事务保存在事务日志中,图13.1(c)中,将另一部分数据库中的数据备份到数据库备份文件中,图13.1(d)中,将事务日志备份到事务日志备份文件中,图13.1(e)中,还原数据库,图13.1(e)中,用备份的事务日志备份还原数据库,这样数据库还原成最初的状态。
SQLServer2000提供以下完善的备份和还原功能:
∙提供了有关如何备份和还原数据库的选项这些选项有:
完整数据库备份(是数据库的完整复本)、事务日志备份(仅复制事务日志)、差异备份(仅复制自上一次完整数据库备份之后修改过的数据库页)和文件或文件组还原(仅允许还原数据库中位于故障磁盘上的那部分)。
这些选项允许根据数据库中数据的重要程度调整备份和还原进程。
可以不备份能够很容易从其他来源重新创建的非关键数据库。
有些数据库可能只需要简单的备份,即只将数据库恢复到故障发生前一天晚上的状态,而关键数据库则需进行完善的备份,即应将数据库还原到故障发生前的状态。
图13.1数据库备份和还原过程
∙由BACKUP和RESTORE语句控制用户可以直接从应用程序、Transact-SQL脚本、存储过程和触发器执行BACKUP和RESTORE语句。
但是更常见的是使用SQLServer企业管理器定义备份调度,从而使SQLServer代理程序得以按照调度自动运行备份。
数据库维护计划向导可用于定义和调度每个数据库的全套备份。
这可使备份进程完全自动化,无需或只需很少的操作员操作。
∙维护msdb数据库中的一系列备份历史记录表备份历史记录表记录每个数据库的备份。
如果不得不还原数据库,则SQLServer企业管理器的“还原数据库”对话框将为用户显示数据库的所有可用备份列表。
“还原数据库”对话框还用一种逻辑显示使用历史记录中的哪个备份集,可以在最短时间内还原数据库。
当显示该对话框时,还原数据库所需的备份都将被选中。
如果用户知道其中的一个备份不可用(例如盒式磁带已损坏或丢失),则可以取消选择该备份,SQLServer企业管理器将考虑新的还原方法。
当用户同意使用新的方法进行还原时,SQLServer企业管理器将还原数据库,并在需要时提示插入磁带。
∙备份可以在数据库正在使用时执行这样从而可以为必须不间断运行的系统进行备份。
SQLServer2000的备份处理和内部数据结构已进行结构化,使备份在最大限度地提高数据传输率的同时,对事务吞吐量的影响保持最小。
∙使备份和还原操作获得更快的数据传输率这样使SQLServer2000能够支持超大型数据库(VLDB)。
SQLServer2000数据库中的数据结构以及备份和还原算法支持备份和还原操作的高数据传输率。
SQLServer备份和还原操作还可以并行方式在多个备份文件或磁带驱动器上运行,从而进一步提高备份和还原的数据传输率。
∙在必要时,RESTORE语句将自动重新创建数据库如果在执行RESTORE语句时数据库不存在,那么这一功能可省去单独执行CREATEDATABASE或CREATEDATABASEFORLOAD语句的必要。
∙在中断时从接近中断点的位置开始进行当中断的备份和还原操作重新开始时,将从接近中断点的位置开始继续备份和还原操作。
应同时规划备份和还原过程。
管理员必须首先确定数据库中的关键数据,必须确定这些数据是否可以将数据库还原到故障发生前的状态,或者是否可以将数据库还原到尽可能接近故障发生的那一刻。
管理员还必须确定数据库在多长时间内不可用,是否必须尽快使数据库重新联机,或者是否不需要立即还原。
确定还原要求后,管理员就可以规划备份过程来维护满足还原要求的备份集。
管理员可以选择在运行时对系统的影响最小,同时又能满足还原要求的备份过程。
管理员还根据资源要求选择数据库的恢复模型(或还原模型)。
恢复模型将针对完全还原数据的重要程度来平衡记录开销。
13.2备份数据库
数据库备份就是创建备份完成时数据库内存在的数据的副本。
数据库备份是一件相当麻烦的工作,需要认真进行规划。
因为不同的备份策略直接影响到数据库的还原工作。
例如,如果在备份数据库的时候采取的策略是只备份数据库而不备份事务日志,那么在出现意外情况后对数据库进行还原,就只能还原到上一次备份之前的程度,备份之后的信息全部丢失。
所以要针对不同的情况全面考虑以采取最符合实际的备份策略。
事务日志是自上次备份事务日志后对数据库执行的所有事务的一系列记录。
可以使用事务日志备份将数据库还原到特定的即时点(如输入多余数据前的那一点)或还原到故障点。
一般情况下,事务日志备份比数据库备份使用的资源少。
因此可以比数据库备份更经常地创建事务日志备份。
经常备份将减少丢失数据的危险。
事务日志备份有时比数据库备份大。
例如,数据库的事务率很高,从而导致事务日志迅速增大。
在这种情况下,应更经常地创建事务日志备份。
13.2.1备份类型和常用备份策略
SQLServer提供了四种数据库备份的设备类型,分别是:
磁盘设备、磁带设备、命名管道设备和个人备份驱动设备。
SQLServer还支持分区化备份。
一个分区化备份可以对应多个备份设备,当备份被分区化时,所备份的数据以相同大小的块写入相应的备份设备。
但是分区只被一种单独的设备类型所支持。
也就是说,可以将备份数据写入两个单独的磁带设备,但是不能将一半备份数据写入一个磁带设备,将另一半数据写入一个磁盘设备。
注意:
磁带设备不支持远程设备备份,因此在采用磁带设备进行备份时,最好不要将磁带备份设备定义为存放数据库的磁盘,否则如果出现磁盘故障,将失去数据库和备份信息。
根据不同的情况,在SQLServer中,用户可以采取以下四种备份策略:
1.只备份数据库
这种备份策略的优点是,在数据重要性不高或是不常进行数据更新的系统中,使用只备份数据库的策略可以减少工作量,并且一步到位,可以一下还原到上次备份之前的状况。
但是,如果只备份数据库而不对事务日志进行备份,那么当数据库出现问题的时候,只能将数据库还原到上一次备份操作结束时的状态。
上次备份操作前的数据库信息修改情况则会全部丢失。
2.事务日志备份
与只备份数据库策略相反,事务日志备份策略同时包括对数据库的备份和对事务日志的备份。
通过与以上备份策略的对比,就能够体会到事务日志备份的优点。
采用事务日志备份可以在故障发生的时候将数据库还原到故障发生前一刻的状况,这样就有效地实现了数据库还原。
当然这种备份策略有它自己的适用情况。
比如数据异常重要,数据库需要经常更新,要求精确还原在故障发生前数据库的状态。
由于在数据库中,事务日志备份所占用的资源一般少于数据库备份所需要的资源,因此可以频繁对事务日志进行备份,从而减少可能丢失的数据量。
提示:
采用事务日志备份,在故障发生时,尚未提交的事务会丢失,所有在故障发生时已经完成的事务将被还原。
可以采用下列一般性步骤来进行事务日志的备份:
(1)备份在故障发生前的当前事务日志。
(2)还原最近的数据库完全备份。
(3)按顺序还原数据库完全备份后建立的所有事务日志。
3.数据库差异备份
与以上备份策略不同,数据库差异备份只备份自上次备份以来,数据库所作的新的改变。
因此数据库差异备份在各种花销上都远远小于上述的各种全面备份策略。
用户可以相对频繁地执行数据库差异备份来减少丢失数据的风险。
用户可以结合使用数据库备份、事务日志备份、数据库差异备份以达到大大提高数据库系统的安全性、将丢失数据的风险降到最小的目的。
提示:
用户应在两个差异备份的时间间隔内执行事务日志的备份,把数据的损失风险降到最低。
4.对指定文件组和文件的备份
事实上,这种备份策略是相当普遍的,也是很常用的。
一般可将数据库文件组和文件存储在不同的备份设备上,比如将文件存储在多个物理磁盘驱动器上或者是磁带上。
这样当数据库系统出现故障的时候可以部分地挽回数据损失。
13.2.2备份数据库中各种对象
本节介绍如何使用企业管理器执行数据库的备份。
主要的内容有:
创建数据库备份设备、备份数据库、备份事务日志、数据库差异备份。
用户可以利用企业管理器方便地执行上述操作。
1.创建数据库备份设备
利用企业管理器完成创建数据库备份设备,这是备份数据库必不可少的一步。
创建磁盘备份设备的具体的操作步骤如下:
(1)展开相应的服务器组以及服务器。
(2)展开“管理”文件夹,右击“备份”,出现如图13.1所示的备份菜单,然后单击“新建备份设备”命令,将出现如图13.2所示的对话框。
(3)在“名称”文本框中,输入所创建的磁盘备份设备名,如“Backup1”。
选中“文件名”,再单击右边的“…”按钮,将显示出如图13.3所示的“备份的设备位置”对话框。
在对话框中选择磁盘备份设备使用的本地计算机和文件,或者在“文件名”文本框中输入备份文件名,如“Backup1”(SQLServer在BACKUP文件夹中创建一个Backup1.bak的备份文件)。
单击“确定”按钮完成设置。
(4)当返回到企业管理器时,在“备份”文件夹中出现刚创建的备份设备,如图13.4所示。
图13.1备份菜单
图13.2备份的设备属性
图13.3“备份的设备位置”对话框
图13.4用户创建的备份设备
也可以通过企业管理器来删除一个逻辑备份设备,具体步骤如下:
(1)展开相应的服务器组和服务器节点。
(2)展开“管理”文件夹,单击“备份”。
(3)在右边的图形框中右击准备删除的备份设置。
(4)在弹出的快捷菜单中选择“删除”命令,出现如图13.5所示的对话框提示用户确认删除。
在确认之后,完成操作。
图13.5删除备份设备提示框
2.备份数据库
可以使用企业管理器、向导和Transact-SQL命令进行数据库备份。
(1)使用企业管理器备份数据库
使用企业管理器备份数据库的操作步骤如下:
1)展开服务器组,然后展开服务器。
2)展开“数据库”文件夹,右击数据库school,指向“所有任务”子菜单,如图13.6所示,然后单击“备份数据库”命令,出现如图13.7所示的“SQLServer备份”对话框的“常规”选项卡。
图13.6备份数据库菜单命令
图13.7“SQLServer备份”对话框的“常规”选项卡
3)在“名称”框内,输入备份集名称。
在“描述”框中输入对备份集的描述。
(可选)
4)在“备份”选项下单击“数据库-完全”。
5)在“目的”选项下,单击“磁带”或“磁盘”,然后指定备份目的地。
如果没出现备份目的地,则单击“添加”按钮以添加现有的目的地或创建新目的地。
在这里单击“添加”按钮,出现如图13.8所示的“选择备份目的”对话框,选中“备份设备”,在对应的下拉列表中选择“Backup1”。
图13.8“选择备份目的”对话框
6)在“重写”选项下,执行下列操作之一:
∙单击“追加到媒体”,将备份追加到备份设备上任何现有的备份中。
∙单击“重写现有媒体”,将重写备份设备中任何现有的备份。
7)选择“调度”复选框调度备份操作在以后执行或定期执行(可选)。
8)单击“选项”选项卡,出现如图13.9所示的“SQLServer备份”对话框的“选项”选项卡,并执行下列一项或多项操作(可选):
∙选择“完成后验证备份”复选框,在备份时对备份进行验证。
∙选择“备份后弹出磁带”复选框,在备份操作完成后弹出磁带。
该选项只适用于磁带设备。
∙选择“检查媒体集名称和备份集到期时间”,检查备份媒体以防意外重写。
在“媒体集名称”框中,输入将用于备份操作的媒体的名称。
如果仅指定备份集到期时间,则将其保留为空。
9)如果是第一次使用备份媒体,或者要更改现有的媒体标签,则在“媒体集标签”框下选择“初始化并标识媒体”复选框,然后输入媒体集名称和媒体集描述。
只有在重写媒体时才能对其进行初始化和标识设置。
图13.9“SQLServer备份”对话框的“选项”选项卡
10)完成所有的配置后,单击“确定”按钮完成操作。
(2)使用数据库备份向导备份数据库
使用数据库备份向导来完成备份数据库。
具体步骤如下:
1)展开服务器组,然后展开服务器。
2)在“工具”菜单上单击“向导”命令。
3)在“选择向导”对话框中,展开“管理”。
4)双击“备份向导”。
5)完成向导中的步骤。
(3)使用Transact-SQL命令备份数据库
备份数据库的BACKUPDATABASE命令的格式如下:
BACKUPDATABASE{database_name|@database_name_var}
TObackup_device[,…n]
[WITH
[BLOCKSIZE={blocksize|@blocksize_variable}]
[[,]DESCRIPTION={'text'|@text_variable}]
[[,]DIFFERENTIAL]
[[,]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_name|@database_name_var}指定了一个数据库,从该数据库中对事务日志、部分数据库或完整的数据库进行备份。
如果作为变量(@database_name_var)提供,则可将该名称指定为字符串常量(@database_name_var=数据库名称)或字符串数据类型(ntext或text数据类型除外)的变量。
∙backup_device指定备份操作时要使用的逻辑或物理备份设备。
可以是下列一种或多种形式:
·{逻辑备份设备名称}|{@逻辑备份设备名称变量}是由sp_addumpdevice创建的备份设备的逻辑名称,数据库将备份到该设备中,其名称必须遵守标识符规则。
如果将其作为变量(@l逻辑备份设备名称变量)提供,则可将该备份设备名称指定为字符串常量(@逻辑备份设备名称变量=逻辑备份设备名称)或字符串数据类型(ntext或text数据类型除外)的变量。
·{DISK|TAPE}='物理备份设备名称'|@物理备份设备名称变量允许在指定的磁盘或磁带设备上创建备份。
在执行BACKUP语句之前不必存在指定的物理设备。
如果存在物理设备且BACKUP语句中没有指定INIT选项,则备份将追加到该设备。
当指定TODISK或TOTAPE时,要输入完整路径和文件名。
例如,DISK='C:
\ProgramFiles\MicrosoftSQLServer\MSSQL\BACKUP\
Mybackup.dat'或TAPE='\\.\TAPE0'。
∙BLOCKSIZE={blocksize|@blocksize_variable}用字节数来指定物理块的大小。
在WindowsNT系统上,默认设置是设备的默认块大小。
一般情况下,当SQLServer选择适合于设备的块大小时不需要此参数。
在基于Windows2000的计算机上,默认设置是65,536(64KB,是SQLServer支持的最大大小)。
∙DESCRIPTION={'text'|@text_variable}指定描述备份集的自由格式文本。
该字符串最长可以有255个字符。
∙DIFFERENTIAL指定数据库备份或文件备份应该与上一次完整备份后改变的数据库或文件部分保持一致。
差异备份一般会比完整备份占用更少的空间。
对于上一次完整备份时备份的全部单个日志,使用该选项可以不必再进行备份。
∙EXPIREDATE={date|@date_var}指定备份集到期和允许被重写的日期。
如果将该日期作为变量(@date_var)提供,则可以将该日期指定为字符串常量(@date_var=date)、字符串数据类型变量(ntext或text数据类型除外)、smalldatetime或者datetime变量,并且该日期必须符合已配置的系统datetime格式。
∙RETAINDAYS={days|@days_var}指定必须经过多少天才可以重写该备份媒体集。
假如用变量(@days_var)指定,该变量必须为整型。
∙PASSWORD={password|@password_variable}为备份集设置密码。
PASSWORD是一个字符串。
如果为备份集定义了密码,必须提供这个密码才能对该备份集执行任何还原操作。
∙FORMAT指定应将媒体头写入用于此备份操作的所有卷。
任何现有的媒体头都被重写。
FORMAT选项使整个媒体内容无效,并且忽略任何现有的内容。
通过指定FORMAT,备份操作也就暗示了SKIP和INIT;这些都不必显式说明。
∙NOFORMAT指定媒体头不应写入所有用于该备份操作的卷中,并且不要重写该备份设备除非指定了INIT。
∙INIT指定应重写所有备份集,但是保留媒体头。
如果指定了INIT,将重写那个设备上的所有现有的备份集数据。
∙NOINIT表示备份集将追加到指定的磁盘或磁带设备上,以保留现有的备份集。
NOINIT是默认设置。
∙MEDIADESCRIPTION={text|@text_variable}指明媒体集的自由格式文本描述,最多为255个字符。
∙MEDIAPASSWORD={mediapassword|@mediapassword_variable}为媒体集设置密码。
MEDIAPASSWORD是一个字符串。
∙NAME={backup_set_name|@backup_set_var}指定备份集的名称。
名称最长可达128个字符。
假如没有指定NAME,它将为空。
∙NOSKIP指示BACKUP语句在可以重写媒体上的所有备份集之前先检查它们的过期日期。
∙SKIP禁用备份集过期和名称检查,这些检查一般由BACKUP语句执行以防重写备份集。
∙NOREWIND指定SQLServer在备份操作完成后使磁带保持打开。
NOREWIND意即NOUNLOAD。
SQLServer将保留磁带驱动器的所有权,直到BACKUP或RESTORE命令使用REWIND为止。
∙REWIND指定SQLServer将释放磁带和倒带。
如果NOREWIND和REWIND均未指定,则默认设置为REWIND。
∙NOUNLOAD指定不在备份后从磁带驱动器中自动卸载磁带。
设置始终为NOUNLOAD,直到指定UNLOAD为止。
该选项只用于磁带设备。
∙UNLOAD指定在备份完成后自动倒带并卸载磁带。
启动新用户会话时其默认设置为UNLOAD。
该设置一直保持到用户指定了NOUNLOAD时为止。
该选项只用于磁带设备。
∙RESTART指定SQLServer重新启动一个被中断的备份操作。
因为RESTART选项在备份操作被中断处重新启动该操作,所以它节省了时间。
若要重新启动一个特定的备份操作,需重复整个BACKUP语句并且加入RESTART选项。
不一定非要使用RESTART选项,但是它可以节省时间。
∙STATS[=percentage]每当另一个“percentage”结束时显示一条消息,它被用于测量进度。
如果省略“percentage”,SQLServer将每完成10个百分点显示一条消息。
说明 对于备份到磁盘的情况,如果输入一个相对路径名,备份文件将存储到默认的备份目录中。
该目录在安装时被设置并且存储在KEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer目录下的BackupDirectory注册表键值中。
Windows98不支持备份到磁盘。
例如,以下命令将test数据库备份到Backup1备份设备上:
BACKUPDATABASEtestTOBackup1
执行结果如下:
已处理144页,这些页属于数据库'test'的文件'test'(位于文件2上)。
已处理1页,这些页属于数据库'test'的文件'test_log'(位于文件2上)。
BACKUPDATABASE操作成功地处理了145页,花费了0.289秒(4.088MB/秒)。
3.事务日志备份
可以使用企业管理器、向导和Transact-SQL命令进行事务日志备份。
(1)使用企业管理器备份事务日志
使用企业管理器备份事务日志的操作步骤如下:
1)展开相应的服务器组和服务器节点。
2)展开“数据库”文件夹,右击所选择的数据库,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第13章 数据备份与还原 13 数据 备份 还原
![提示](https://static.bdocx.com/images/bang_tan.gif)