数据库备份与恢复.ppt
《数据库备份与恢复.ppt》由会员分享,可在线阅读,更多相关《数据库备份与恢复.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据库备份与恢复v数据库备份v数据库恢复备份的类型 全备份:即完整的备份整个数据库;全备份:即完整的备份整个数据库;增量备份:增量数据库备份只备份自上次数据库备份后发生更改增量备份:增量数据库备份只备份自上次数据库备份后发生更改的数据;的数据;文件和文件组备份:备份数据库文件或文件组,而不是备份数据文件和文件组备份:备份数据库文件或文件组,而不是备份数据库;库;事务日志备份:只备份事务日志。事务日志备份:只备份事务日志。动态备份和静态备份动态备份也称作在线备份,即在做备份时不中断数据库的运行,不中断数据库上的应用程序和事务处理。静态备份也称作离线或脱机备份,这意味着在做备份时没有任何数据库事务
2、在运行,这种备份方式应是首选的备份方式。制定备份的策略 备份不是实时的,备份应该什么时候做?用什么方式做?这根据数据库的不同规模、不同用途,可能有很多因素需要考虑和衡量。备份整个数据库 在SQLServer中系统管理员和数据库管理员可以进行备份,也可以指定某个用户担当db_backupoperator角色(数据库预定义角色)来负责数据库的备份工作。所有的备份工作可以在“企业管理器”中利用交互工具完成,也可以使用命令方式完成。备份整个数据库备份数据库的命令是BACKUPDATABASE,一般格式如下:BACKUPDATABASEdatabase_nameTODISK|TAPE=physical_
3、backup_device_name例如,如下命令将订货数据库备份到C:dumpdump1.bak:BACKUPDATABASE订货TODISK=C:dumpdumpfull.bak增量备份 l增量备份的命令也是BACKUPDATABASE,一般格式如下:BACKUPDATABASEdatabase_nameTODISK|TAPE=physical_backup_device_nameWITHDIFFERENTIALl例如,如下命令将对订货数据库做增量备份(备份到C:dumpdump1.bak):BACKUPDATABASE订货TODISK=C:dumpdump1.bakWITHDIFFERE
4、NTIAL事务日志备份 备份事务日志的命令是BACKUPLOG,一般格式是:BACKUPLOGdatabase_nameTODISK|TAPE=physical_backup_device_name例如,如下命令将备份订货数据库的日志(备份到C:dumpdumplog.bak):BACKUPLOG订货TODISK=C:dumpdumplog.bak截断日志 截断日志的命令是:BACKUPLOGdatabase_nameWITHTRUNCATE_ONLY例如,在备份了订货数据库或事务日志后,为了截断订货管理数据库的事务日志可以使用如下命令:BACKUPLOG订货WITHTRUNCATE_ONLY
5、文件和文件组备份 可以备份和恢复数据库中的个别文件,这样当遇到介质故障时可以只恢复已损坏的文件,而不用恢复数据库的其余部分,从而加快了恢复速度。对于超大型数据库,有时不可能完成完整数据库的备份,这样则可以使用文件备份。文件备份为数据库备份提供了一种灵活的手段。与数据库备份相比,文件备份的主要缺点是增加了管理的复杂性。必须注意维护完整的文件备份集和所覆盖的日志备份。文件和文件组备份备份文件或文件组的一般命令格式是:BACKUPDATABASEdatabase_nameFILE=logic_file_list|FILEGROUP=filegroup_list TODISK|TAPE=physica
6、l_backup_device_nameWITHDIFFERENTIAL文件和文件组备份例如,如下命令完成对订货数据库warehouse文件的备份:BACKUPDATABASE订货FILE=warehouseTODISK=C:dumpfile_1.bak如下命令则完成对订货数据库文件组仓库的备份:BACKUPDATABASE订货FILEGROUP=仓库TODISK=C:dumpfile_g.bak系统数据库的备份 数据库备份不仅仅是要备份用户数据库,系统数据库也需要备份,例如SQLServer中的master、model和msdb等系统数据库。特别是master数据库,它负责整个数据库的管理,
7、所有用户创建的数据库以及用户登录信息都存储在该数据库中。所以,该数据库一旦损坏,整个系统的使用都将受到影响。恢复或还原 恢复整个数据库恢复数据库的部分内容恢复特定的文件或文件组恢复事务可以将数据库恢复到做备份的即时点、发生故障的即时点或特定的事务即时点。恢复或还原根据数据库全备份进行恢复根据增量备份进行恢复根据事务日志进行恢复根据文件或文件组备份进行恢复恢复系统数据库根据数据库全备份进行恢复RESTOREDATABASEdatabase_nameFROMDISK|TAPE=physical_backup_device_nameWITH,NORECOVERY|RECOVERY,REPLACE根据
8、增量备份进行恢复 在简单恢复模型和完全恢复模型中都可以选择增量备份,如果存在增量备份,则一般需要进行相应的恢复操作。增量恢复数据库的命令也是RESTOREDATABASE,但是在根据增量备份继续恢复之前应该:已经使用RESTOREDATABASE命令完成了全备份的恢复,同时指定了NORECOVERY子句。根据事务日志进行恢复 利用日志可以将数据库恢复到最新的一致状态或任意的事务点。首先恢复事务日志备份之前的数据库备份或增量数据库备份。如果有多个日志备份,则按先后顺序进行恢复。根据事务日志进行恢复RESTORELOGdatabase_nameFROMDISK|TAPE=physical_back
9、up_device_nameWITH,NORECOVERY|RECOVERY,STOPAT=date_time|,STOPATMARK=mark_nameAFTERdatetime|,STOPBEFOREMARK=mark_nameAFTERdatetime根据文件或文件组备份进行恢复 如果数据库的某个文件损坏了,并且按文件或文件组做了备份,则可以考虑根据文件或文件组备份进行恢复。当使用文件或文件组备份进行恢复时,最后一个文件或文件组恢复操作完成后,必须将事务日志应用于数据库文件,以便使之与数据库的其余部分保持一致。如果被恢复的文件自上次备份后没有做过任何修改操作,则不必应用事务日志,REST
10、ORE语句会报告这一情况。根据文件或文件组备份进行恢复RESTOREDATABASEdatabase_nameFILE=logical_file_name|FILEGROUP=logical_filegroup_nameFROMDISK|TAPE=physical_backup_device_name恢复系统数据库 备份系统数据库与备份用户数据库的方式相同,除master数据库之外其他系统数据库的恢复也与恢复用户数据库类似。master数据库是所有数据库的主数据库,也是管理所有数据库的数据库。恢复其他数据库都是在SQLServer能够正常运行的基础上进行的,而master数据库的损坏可能导致S
11、QLserver根本不能运行,所以恢复master数据库是一件特殊的任务。恢复master数据库如果master数据库只是轻微损坏或信息丢失,master数据库的内容至少部分可用,从而能够启动SQLServer实例,则可以直接根据master数据库的完整备份恢复master数据库。如果由于master数据库严重损坏而无法启动SQLServer实例,则不能立即恢复master数据库。因为SQLServer实例需要处于运行状态才能恢复任何数据库。为此,需要首先使用重建master数据库实用工具Rebuildm.exe(该程序位于ProgramFilesMicrosoftSQLServer80Too
12、lsBinn目录中)重建master数据库,然后才可以用普通方法利用备份恢复master数据库。数据库恢复尽管数据库系统中采取了各种保护措施来防止数据库的安全性和完整性尽管数据库系统中采取了各种保护措施来防止数据库的安全性和完整性被破坏,保证并发事务的正确执行,但是计算机系统中硬件的故障、软被破坏,保证并发事务的正确执行,但是计算机系统中硬件的故障、软件的错误、操作员的失误以及恶意的破坏仍是不可避免的,这些故障轻件的错误、操作员的失误以及恶意的破坏仍是不可避免的,这些故障轻则造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏数则造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏
13、数据库,使数据库中全部或部分数据丢失,因此数据库管理系统(恢复子据库,使数据库中全部或部分数据丢失,因此数据库管理系统(恢复子系统)必须具有把数据库从错误状态恢复到某一已知的正确状态(亦称系统)必须具有把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)的功能,这就是数据库的恢复。为一致状态或完整状态)的功能,这就是数据库的恢复。子系统是数据库管理系统的一个重要组成部分,占整个子系统是数据库管理系统的一个重要组成部分,占整个系统代码的百分之十以上。系统代码的百分之十以上。事务一、事务一、事务(Transaction)所谓事务是用户定义的一个数据库操作序列,这些操作要么全所谓事
14、务是用户定义的一个数据库操作序列,这些操作要么全 做,要么全不做,是一个不可分割的工作单位。做,要么全不做,是一个不可分割的工作单位。事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元。事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元。一个程序中可以包含多个事务。一个程序中可以包含多个事务。事务的开始与结束可以由用户显式控制。事务的开始与结束可以由用户显式控制。事务是恢复和并发控制的基本单位。事务是恢复和并发控制的基本单位。例如银行转帐事务1.SQL中事务的定义事务以Begintransaction开始,以Commitwork或Rollbackwork结束Commitwork表示
15、提交,事务正常结束Rollbackwork表示事务非正常结束,撤消事务已做的操作,回滚到事务开始时状态示例银行转帐:事务T从A帐户过户50¥到B帐户T:read(A);A:=A50;write(A);read(B);B:=B+50;write(B);read(X):从数据库传送数据项X到事务的工作区中write(X):从事务的工作区中将数据项X写回数据库事务v事务的操作事务组织结构的一般形式如下:1定义一个事务的开始BEGIN TRANSACTION2.提交一个事务COMMIT TRANSACTION3.回滚事务ROLLBACK TRANSACTIONBEGIN TRANSACTION代表一个
16、事务的开始点,每个事务继续执行直到用COMMIT TRANSACTION提交,从而正确地完成对数据库作永久的改动,或者遇上错误用ROLLBACK TRANSACTION语句撤销所有改动。在事务中除以下语句外其他Transact-SQL语句均可使用:ALTER DATABASEBACKUP LOGCREATE DATABASEDISK INITDROP DATABASELOAD DATABASEDUMP TRANSACTIONLOAD DATABASERECONFIGURERESTORE DATABASERESTORE LOGUPDATE STATISTICS事务(1)标记一个显式事务的起始点的
17、语法结构:BEGIN TRANSACTION transaction_name(给事务分配的名称)(2)标志一个成功的隐性事务或用户定义事务的结束COMMIT TRANSACTION transaction_name(1)(2)作为一对要么都出现,要么都不出现。不过使用commit transaction时要注意,因为数据已经永久修改,在执行完commit transaction语句后不能回滚事务。不过,在嵌套事务中使用COMMIT TRANSACTION时,内部事务的提交并不释放资源,也没有执行永久修改。只有在提交了外部事务时,数据修改才具有永久性,而且资源才会被释放。事务v事务特性(ACI
18、D)原子性原子性(Atomicity)事务中包含的所有操作要么全做,要么全不做原子性由恢复机制恢复机制实现一致性一致性(Consistency)事务的隔离执行必须保证数据库的一致性事务开始前,数据库处于一致性的状态;事务结束后,数据库必须仍处于一致性状态数据库的一致性状态由用户用户来负责,由并发控制机制并发控制机制实现如银行转帐,转帐前后两个帐户金额之和应保持不变(意大利香肠)隔离性隔离性(Isolation)系统必须保证事务不受其它并发执行事务的影响对任何一对事务T1,T2,在T1看来,T2要么在T1开始之前已经结束,要么在T1完成之后再开始执行隔离性通过并发控制机制并发控制机制实现事务持久
19、性持久性(Durability)一个事务一旦提交之后,它对数据库的影响必须是永久的系统发生故障不能改变事务的持久性持久性通过恢复机制恢复机制实现v事务状态活动状态活动状态失败状态失败状态部分部分提交状态提交状态提交状态提交状态中止状态中止状态初始状态初始状态事务无法继事务无法继续正常执行续正常执行事务回滚,数据库恢事务回滚,数据库恢复到事务开始前状态复到事务开始前状态最后一条语最后一条语句被执行后句被执行后成功完成,永成功完成,永久写入数据库久写入数据库事务(3)回滚事务将显式事务或隐性事务回滚到事务的起点或事务内的某个保存点的语法结构为:ROLLBACK TRANSACTION transa
20、ction_name(给BEGIN TRANSATION上的事务指派的名称)A.不带transaction_name的ROLLBACK TRANSACTION回滚到事务的起点。嵌 套 事 务 时,该 语 句 将 所 有 内 层 事 务 回 滚 到 最 远 的 BEGIN TRANSACTION语句,transaction_name也只能是来自最远的BEGIN TRANSACTION语句的名称。但是在执行COMMIT TRANSACTION语句后不能回滚事务。B.如果在触发器中发出ROLLBACK TRANSACTION命令,将回滚对当前事务中所做的所有数据修改,包括触发器所做的修改。C.如果在
21、事务执行过程中出现任何错误,SQLServer实例将回滚事务。D.出现某些错误时会自动回滚事务。E如果在事务活动时由于任何原因(如客户端应用程序终止;客户端计算机关闭或重新启动;客户端网络连接中断等)中断了客户端和SQLServer实例之间的通信,SQLServer实例将在收到网络或操作系统发出的中断通知时自动回滚事务。在所有这些错误情况下,将回滚任何未完成的事务以保护数据库的完整性。事务(4)示例例【1】定义一事务向StuCou表插入3条记录,并提交完成。(1)在查询分析器中运行如下命令:USE XkGOBEGIN TRANSACTIONINSERT StuCou(StuNo,CouNo,W
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 备份 恢复
限制150内