备份与恢复数据库

Posted 修罗神天道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了备份与恢复数据库相关的知识,希望对你有一定的参考价值。

12.1备份与恢复的概念 

备份数据库就是将数据库中的数据以及保证数据库系统正常运行的有关信息保存起来,以备系统出现问题时恢复数据库时使用。 
12.1.1备份数据库 
备份是制作数据库的副本,包括数据库结构、对象和数据。 
备份数据库的主要目的是为了防止数据丢失。造成数据丢失的原因主要包括如下几种情况:  
备份数据库的另一个作用是进行数据转移,可以先对一台服务器上的数据库进行备份,然后在另一台服务器上进行恢复.从而使这两台服务器上具有相同的数据库。 
12.1.2恢复数据库 
恢复数据库是指数据库系统在出现故障时利用先前建立的冗余数据(备份副本)把数据库恢复到某个
正确、一致的状态的过程。根据故障对数据库系统的影响和故障的可修复程度,数据库系统的故障恢复可归为下列两种类型: 

 12.2 SQL Server的备份与恢复机制 

12.2.1恢复模式 
SQL Server 2008 支持种恢复模式、简单恢复模式完整恢复模式和大容量日志恢复模式。恢复模式的作用旨在控制对事务日志的维护,通常数据库使用完整恢复模式或简单恢复模式。 
1.简单恢复模式 
优点:不备份事务日志,可最大限度地减少事务日志的管理开销。 
缺点:若数据库损坏,将面临极大的数据丢失风险,且只能恢复到最新备份的状态。 
⚫  在简单恢复模式下,备份间隔应尽可能短,可以方式数据大量丢失。 
⚫  对于用户数据库,简单恢复模式只用于测试和开发数据库,或用于主要包含只读数据的数据库(如数据仓库)。 
⚫  简单恢复模式不适合生产系统,因为会面临丢失数据的风险。 
2.完整恢复模式 
⚫  完整恢复模式完整的记录所有的事务,并将事务日志记录保留到对其备份完毕为止。 
⚫  如果能够在出现故障后备份日志尾部,则可以使用完整恢复模式将数据库恢复到故障点。 
⚫  完整恢复模式还支持还原单个数据页。 
3.大容量日志恢复模式 
⚫  大容量日志恢复模式只对大容量操作进行最小记录(有限定的),使事务日志不会被大容量加载操作填充。该模式保护大容量操作不受媒体故障的危害,提供最佳性能并占用最小日志空间。 
⚫  大容量日志恢复模式一般只作为完整恢复模式的附加模式,也将事务日志记录保留到对其备份完毕为止。该模式不支持时点恢复,必须在增大日志备份与增加工作丢失风险之间进行权衡。 
下图是大容量日志恢复模式下日志备份的构造方式。
4.查看和更改恢复模式 
⚫  在 SQL Server2008 中,更改恢复模式可在 SSMS 工具中用图形化的方法实现 
⚫  可以使用 ALTER DATABASE 语句更改和设置数据库的恢复模式。 
基本格式如下: 

ALTER DATABASE database_name SET 
RECOVERY  FULL | BULK_LOGGED | SIMPLE  

其中,“FULL”为完整恢复模式,“BULK_LOGGED”为大容量日志恢复模式,“SIMPLE”为简单恢复模式。 
【例 1】将 test 数据库的恢复模式设置为大容量日志恢复模式。 
ALTER DATABASE test SET 
RECOVERY BULK_LOGGED 
12.2.2备份内容及时间 
1.备份内容 
在备份数据库时,要备份用户数据,还要备份系统数据,以保证在系统出现故障时,能够完全的恢复数据库。 
2.备份时间 
⚫  备份系统数据:除了 tempdb 数据库,其他的系统数据库在进行了修改之后应立即备份(因为系统数据库不经常变化)。 
⚫  备份用户数据:用户数据库不能采用立即备份的方式(因用户数据库中的数据是随系统的运行变化的),应采用周期性分备份方法,备份时间根据数据库更改频率有关。 
⚫  特殊的用户数据库备份:  
12.2.3 SQL Server的备份机制 
1.备份设备 
备份设备即备份数据库的文件,这些文件可建立在磁带上,也可建立在磁盘上。备份设备在操作系统一级实际上就是物理存在的磁带或磁盘上的文件。SQL Server 支持下面两种备份方式。 
⚫  永久备份设备:先建立备份设备,然后再将数据库备份到备份设备上。 
⚫  临时备份设备:直接将数据库备份到物理文件上。 
创建备份设备可以通过 SQL Server Management Studio 工具图形化地实现,也可以使用 T-SQL 语句实现。 
创建备份设备的 T-SQL 语句是 sp_addumpdevice 系统存储过程,其语法格式如下: 

sp-addumpdevice [ @devtype=] 'device_type' 
'[ @ logicalname=] 'logical_name' 
'[ @ physicalname=] 'physical_name' 

其中各参数含义如下: 
⚫  [@devtype=] 'device_type':备份设备的类型。device_type 可以是下列值之一:Disk:备份
设备为磁盘上的文件。Type:备份设备为 Windows 支持的任何磁带设备。 
⚫  [@logicalname=]'logical_name':在 BACKUP(备份)和(RESTORE)恢复语句中使用的备份设备的逻辑名称。Logical_name 无默认值,不能为 NULL。                                        
⚫  [@physicalname=]'physical_name':备份设备的物理文件名。文件物理名必须遵从操作系统文件名规则或网络设备的通用命名约定,并且必须包含完整路径。physical_name 不能为 NULL。 
⚫  该存储过程返回:0(成功)或 1(失败)。 
【例 2】建立一个名为 bk 的磁盘备份设备,其物理存储位置及文件名为 D:\\dump\\bk.bak。 
EXEC sp-addumpdevice 'disk','bk2', ‘D:\\dump\\bk.bak’ 
注意:在远程网络位置上创建备份设备时,注意要确保启动数据库引擎时所用的名称对远程计算机有相应的写权限。 
2.备份类型 
数据库的恢复模式决定了可以使用的备份类型,而数据库的备份类型决定了备份的内容。SQL Server备份类型有如下几种。 
 
(1)SQL Server 支持完整数据库备份和差异数据库备份两种类型。 
①完整数据库备份(完全转储) 
⚫  完整数据库备份是所有备份方法中最基本最重要的备份,是备份的基础。它备份了数据库中的全部信息,是恢复的基线。 
⚫  在进行完整备份时,不仅备份数据库的数据文件、日志文件、而且还备份文件的存储位置信息以及数据库中的全部对象。 
⚫  当数据库比较大时,完整数据库备份需要消耗比较长的时间和资源。 
②差异性数据库备份(差异转储) 
⚫  差异数据库备份从最近的完整备份之后数据库的全部变化内容,它以前一次完整备份为基准点,备份完整备份之后变化了的数据文件,日志文件及数据库中其他被修改的内容。 
⚫  差异数据库备份通常比完整数据库备份占用的空间小,且执行速度快,但会增加备份的复杂度。 
⚫  差异备份的大小取决于自建立差异基准后更改的数据量。差异基准越旧,新的差异备份就越大。 
⚫  差异备份的工作原理如下: 
 
⚫  使用差异数据库备份遵循的原则 
✓  在每次完整数据库备份后,定期安排差异数据库备份。例如:可以每天执行一次差异数据库
备份,对于活动性较高的系统,此频率可以提高。 
✓  在确保差异备份不会太大的情况下,定期安排新的完整数据库备份。例如:可以每周备份一
次完整数据库。 
(2)文件备份。 
针对数据库中的文件进行备份。使用文件备份方式用户可以只还原损坏的文件,而不用还原数据库的其余部分.从而加快了恢复速度。SQL Server 支持文件备份和差异文件备份两种方式。 
①文件备份:一个或多个文件或文件组中所有数据的完整备份。 
注意:在简单恢复模式下文件备份基本上仅限于只读辅助文件组。用户可以创建读/写文件组的文件备份,但必须先将文件组设置为只读,并执行对只读文件进行一次差异文件备份,然后才能还原读/写文件备份。 
②差异文件备份:包含自每个文件的最新完整备份之后发生了更改的数据区。                                (3)事务日志备份。 
⚫  事务日志备份仅用于完整恢复模式和大容量日志恢复模式。简单恢复模式不支持事务日志备份。 
⚫  事务日志备份并不备份数据库本身,它只备份日志记录,而且只备份从上次备份之后到当前备份时间发生变化的日志内容。 
⚫  使用事务日志备份,可以将数据库恢复到故障点或特定的某个时间点。 
⚫  一般情况下,事务日志备份比完整备份和差异备份使用的资源少,可以更频繁地使用事务日志备
份,以减少数据丢失的风险,而且还有助于事务日志的截断。 
在 SQL Server 2008 中,有三种类型的事务日志备份,分别是:纯日志备份、大容量操作日志备份和结尾日志备份,这几种备份类型的区别如下表所示。  
注意:只有当启动事务日志备份序列时,完整备份或差异备份才必须与事务日志备份同步。每个事务日志备份的序列都必须在执行完整备份或差异备份之后启动。 
(4)日志链 
描述:连续的日志备份序列称为“日志链”,从数据库的完整备份开始。若要将数据库还原到故障点,必须保证日志链是完整的——事务日志备份的连续序列必须能够延续到故障点。 
日志序列的开始位置取决于还原的数据库备份类型:数据库备份或文件备份。日志序列的开始位置: 
⚫  对于数据备份,日志备份序列必须从数据库备份的结尾处开始延续。 
⚫  对于一组文件备份,日志备份序列必须从整组文件备份的开头开始延续。 
注意:在完整恢复模式或大容量日志恢复模式下,SQL Server 2008 要求用户备份日志结尾以捕获尚未备份的日志记录。 
3.常用备份策略 
建立备份目的:是为了恢复已损坏的数据库。但是备份和还原数据必须根据特定环境进行定义,并且必须使用可用资源。因此,在设计良好的备份策略时,除了要考虑特定业务要求外,还应尽量提高数据的可用性并尽量减少数据的丢失。 
一般应将数据库和备份放置在不同的设备上,否则如果包含数据库的设备失败,则备份也将不可用。 
备份策略的制定包括定义备份的类型和频率,备份所需硬件的特性和速度、备份的测试方法及备份媒体的存储位置和方法。在制定备份和恢复策略时必须考虑各种因素,包括以下内容: 
⚫  使用数据库的企业对数据库的目标,尤其是对可用性和防止数据丢失的要求。 
⚫  每个数据库的特性,包括大小、使用方式、内容特性以及故障恢复要求等。 
⚫  对资源的约束,例如硬件、人员、备份媒体的存储空间以及所存储媒体的物理安全性等。 
3 种备份策略及特点  
4.实现备份 
在 SQL Server 2008 中,可以在 SSMS 工具中用图形化的方法实现备份,也可以使用 T-SQL 语句实现备份,这里只介绍用 T-SQL 语句实现备份的方法。 
备份数据库使用的是 BACKUP 语句,该语句分为备份数据库和备份日志两种语法格式。备份数据库语句的基本语法格式为: 

12.2.4 SQL Server的恢复机制 
SQL Server 支持在以下级别恢复(还原)数据: 
⚫  数据库(数据库完整还原):还原和恢复整个数据库,并且数据库在还原和恢复操作期间处于脱机
状态。 
⚫  数据文件(文件还原):还原和恢复一个数据文件或一组文件。在文件还原过程中,包含相应文件的文件组在还原过程中自动变为脱机状态。 
1.还原的顺序 
在还原数据库之前,如果数据库的日志文件没有损坏,则为尽可能减少数据的丢失,可在恢复之前对数据库进行一次尾部日志备份这样可将数据的损失减少到最小。恢复数据库要有一定的顺序,具体如下:  
2.实现还原 
还原数据库可以在 SSMS 工具中用图形化的方法实现,也可以使用 T- SQL 语句实现。我们这里只介绍用 T-SQL 语句进行还原的方法。 
还原数据库和事务日志的 T-SQL 语句分别是 RESTORE DATABASE 和 RESTORE LOG。

12.3 Oracle 的备份与恢复机制

Oracle 数据库将数据库系统常见的故障归纳为:SOL 语句错误、进程失效、实例失效、网络失效、用户错误、介质失效。前四种类型的故障由 Oracle 内部恢复机制自动进行处理和解决,无需数据库管理员干预,即处理过程对数据库管理员而言是透明的;对于用户的误操作或由存储介质(磁盘)故障导致数据库文件损坏,必须由数据库管理员干预,利用故障前的备份数据进行相应的故障恢复。 
Oracle 数据库的备份方式主要分为逻辑备份利物理备份。 
12.3.1Oracle 数据库逻辑备份与恢复 
逻辑备份是指通过工具将数据库中的数据转换成专用或通用格式的文件,保存在文件系统中。具体内容如下。 


导出用户所拥有的所有用户模式对象。
Oracle传统的导入、导EXP/IMP工具 出工具,在大分部 表模式 导出用户指定的表。
Oracle版本上使用Oracle备份工具
EXPDP/IMPDP 能在Oracle 10g及其后
整个数据库 导出数据库中所有对象。
工具 版本使用                                        
12.3.2 Oracle数据库物理备份与恢复 
1.物理备份 
物理备份是对数据库物理文件所实施的备份,包括数据库的数据文件、控制文件、重做日志文件、归档日志文件、初始化参数文件、密码文件等。物理备份管理方式主要包括: 
⚫  用户管理的备份:使用操作系统的复制命令,并结合 SQL* Plus 命令来完成备份和管理工作。 
⚫  Recover Manager(简称 RMAN)备份:利用 Oracle 的 RMAN 工具实现备份及管理过程。 
⚫  第三方备份软件:应用第三方备份管理软件(例如 Symantec NetBackup、EMC NetWorker)实现备份。 
RMAN 是 Oracle 提供的一个备份与恢复的工具,可以用来备份和还原数据库文件、归档日志和控制文件。它也可以用来执行完全或不完全的数据库恢复。RMAN 可以由命令行接口或者 OEM 来控制。 
RMAN 主要包括以下组件: 
⚫  Target Database(目标数据库):指需要用 RMAN 进行备份与恢复的数据库,RMAN 可以备份数据文件、控制文件、归档日志、参数文件。 
⚫  Server Session(服务器会话):RMAN 建立一个与目标数据库的会话,启动数据库服务器上的
Oracle 服务器进程,由目标数据库上的服务器进程进行备份、还原、恢复的实际操作。 
⚫  服务器进程:RMAN 启动的服务进程是一个 Oracle 后台进程,用于与 RMAN 工具与数据率之间的通信,也用于 RMAN 工具与磁盘/磁带等 I/O 设备之间的通信,服务进程负责备份与恢复的所有工作。 
⚫  Channel( 通道):一个通道是 RMAN 和目标数据库之间的连接。 
⚫  Recovery catalog(恢复目录):用来保存备份与恢复信息的一个数据库,不建议创建在目标数据库上,RMAN 利用恢复目录记载的信息去判断如何执行需要的备份恢复操作。 
⚫  MML(媒体管理库):Media Management Layer (MML)是第三方工具或软件,用于管理对磁带的读写与文件的跟踪管理。 
RMAN 工具的使用:  
2.恢复数据库 
数据库恢复操作一般包括两个过程:restore 和 recover。Restore 是从备份数据中找到完整备份文
件(全备),恢复完整文件的过程。Recover 是将日志和增量备份的改变应用到数据文件,使得数据文件恢复到指定时间点上的过程。 

以上是关于备份与恢复数据库的主要内容,如果未能解决你的问题,请参考以下文章

数据备份与恢复系统备份与恢复

「oracle备份恢复」oracle数据库备份恢复之逻辑备份与恢复

ES数据备份与恢复

如何Oracle 数据库备份与恢复

数据库的备份与恢复

备份与恢复