第十二章、备份与恢复数据库
版权来源233网校,若有侵权联系shaoyayu0419@qq.com删除
版权地址:www.233.com
内容提要:
1、理解备份与恢复的概念
2、了解SQL Server的备份与恢复机制
3、了解Oracle的备份与恢复机制
第一节 备份与恢复的概念
1.1、备份数据库
数据备份的原因:
防止数据丢失(存储介质故障、用户的操作错误、服务器故障、病毒侵害、自然灾害),一旦出现问题,能够根据备份进行恢复
是数据转移的一种方式。(将数据库从一台服务器复制到另一台服务器、设置数据库镜像、文件归档和灾难恢复)
2.2、恢复数据库
恢复数据库指数据库系统出现故障时,利用备份副本将数据库恢复到某个正确、一致的状态的过程。
两种类型:介质故障恢复
非介质故障恢复
第二节 SQL Server的备份与恢复机制
2.1、恢复模式
恢复模式是一个数据库属性,它用于控制数据库备份和还原操作的基本行为。
恢复模式决定备份类型 和还原方案。备份类型决定数据库备份的内容。
三种恢复模式:
- 简单恢复模式
- 完整恢复模式
- 大容量日志恢复模式
简单恢复模式
此模式简略地记录大多数事务,不备份事务日志。所记录的信息只是为了确保在系统崩溃或还原数据备份之后数据库的一致性。
完整恢复模式
此模式完整地记录了所有的事务,并保留所有的事务日志记录,直到将它们备份
大容量日志恢复模式
此模式简略地记录大多数大容量操作(例如索引创建和大容量加载),完整地记录其他事务。大容量日志恢复模式提高了大容量操作的性能,常用作完整恢复模式的补充。
2.2、备份内容及时间
备份内容
用户数据库
系统数据库
备份时间
系统数据库:修改之后进行备份
用户数据库:周期性备份
进行下列操作后,立刻进行备份:
- 创建数据库之后,或批量加载数据之后。
- 创建索引之后。
- 执行清理事务日志的操作之后。
- 执行大容量数据操作之后。
2.3、SQL Server的备份机制
2.3.1、备份设备
SQL Server将备份数据库的场所称为备份设备。
支持将数据库备份到磁带或磁盘上。
备份设备类型:
永久备份设备:在备份之前需要先建立。
临时备份设备:不需要预先建立,在备份时将数据库直接备份到物理文件上。
使用系统存储过程创建备份设备
其中,device_type表示设备类型,其值可为disk和tape。logical_name表示设备的逻辑名称。physical_name表示设备的实际名称。
sp_addumpdevice
[ @devtype = ] 'device_type' ,
[ @logicalname = ] 'logical_name' ,
[ @physicalname = ] 'physical_name‘
其中,device_type表示设备类型,其值可为disk和tape。logical_name表示设备的逻辑名称。physical_name表示设备的实际名称。
例:
创建一个名为 MYDISKDUMP 的磁盘备份设备,其物理名称为 D:Dump1.bak。
EXEC sp_addumpdevice 'disk', 'mydiskdump', 'D:dump1.bak'
2.3.2、备份类型
1)数据库备份
完整数据库备份
差异数据库备份
2)文件备份
文件备份
差异文件备份
3)事务日志备份
完整数据库备份(也称完全转储)
完整备份将备份整个数据库,包括事务日志部分(以便可以恢复整个备份)。完整备份代表备份完成时的数据库。
- 是恢复的基线
- 备份数据文件、数据库对象和数据的信息
- 备份备份过程中发生的活动
- 备份未提交的事务到日志
差异数据库备份(也称差异转储)
备份从上次完整备份之后数据的改变
备份差异备份过程中发生的活动
备份未提交的事务到日志
比完整备份节约时间
以前一次完整备份为基准点(成为差异基准)。
在还原差异备份前,应先还原最新的完整备份,再还原基于该完整备份的最新差异备份。
文件备份
可以分别备份和还原数据库中的文件。使用文件备份使用户可以仅还原已损坏的文件,而不必还原数据库的其余部分,从而提高恢复速度
差异文件备份
创建文件或文件组的完整备份后,可以基于该完整备份创建一系列的差异备份。
差异文件备份只捕获自上一次文件备份以来更改的数据。
事务日志备份
备份从上次日志备份之后的日志记录
备份完成后要截断日志
事务日志备份仅用于完整恢复模式或大容量日志恢复模式
三种类型的事务日志备份:
纯日志备份,大容量操作日志备份,结尾日志备份。
2.3.3、常用备份策略
- 完整备份
- 完整备份 + 日志备份
- 完整备份 + 差异备份 + 日志备份
完整备份
适合于数据库数据不是很大,而且数据更改不是很频繁的情况。
完整备份一般可以几天进行一次或几周进行一次。
当对数据库数据的修改次数不是很频繁,而且允许一定量的数据丢失时,可以选择只用完整备份策略。
完整备份包括了对数据和日志的备份。
完全备份示例
假设在周二晚上11:00系统出现故障,则这时可以将数据库恢复到周一晚0:00时的状态。
使用完全备份策略,还可以将一台服务器上的数据库复制到另一台服务器(在一台服务器上做备份,然后在另一台服务器上进行恢复),使两台服务器上的数据库完全相同。
完全备份 + 日志备份
如果不允许丢失太多的数据,而且又不希望经常地进行完全备份(因为完全备份进行的时间比较长),则可以 在完全备份中间加一些日志备份。
例如,可以每天0:00点进行一次完全备份,然后每隔几小时进行一次日志备份。
完全+日志备份示例
完全备份+差异备份+日志备份
完全备份加差异备份和日志备份的策略,即在完全备份中间加一些差异备份,在差异备份中间加一些日志备份。
比如每周周日0:00进行一次完全备份,然后每天0:00进行一次差异备份,然后再在两次差异备份之间增加一些日志备份。
这种策略的好处是备份和恢复的速度都比较快,而且当系统出现故障时,丢失的数据也比较少。
完全+差异+日志备份示例
2.3.4、实现备份
使用SQL Server管理平台
使用T-SQL语句
示例1
对“Students”理数据库进行一次完全备份,并备份到MyBK_1备份设备上(假设此备份设备已创建好)。
BACKUP DATABASE students
TO MyBK_1
示例2
对“pubs”数据库进行一次完全备份,备份到MyBK_1备份设备上,并覆盖掉该备份设备上已有的内容。
BACKUP DATABASE pubs
TO MyBK_1 WITH INIT
示例3
对“pubs”进行一次事务日志备份,并以追加的方式备份到MyBKLog1备份设备上。
BACKUP LOG pubs TO MyBKLog1
2.3.4、SQL Server的恢复机制
SQL Server支持在以下级别恢复(还原)数据:
数据库(数据库完整还原)
数据文件(文件还原)
还原的顺序
- 恢复最近的完全备份;
- 恢复最近的差异备份(如有);
恢复自差异备份之后的所有日志备份(按备份的先后顺序)。 - 恢复数据库。
实现还原
使用SQL Server管理平台
使用T-SQL语句
示例
假设已对pubs数据库进行了完全备份,并备份到MyBK_1备份设备上,假设此备份设备只含有对pubs数据库的完全备份。则恢复pubs数据库的语句为:
RESTORE DATABASE pubs
FROM MyBK_1
RESTORE DATABASE Students
FROM MyBK_2
WITH FILE=1,
RESTORE DATABASE Students
FROM MyBK_2
WITH FILE=2, NORECOVERY
RESTORE LOG Students
FROM MyBKLog1
第三节 Oracle的备份与恢复机制
1、Oracle数据库逻辑备份与恢复
Oracle数据库常见的故障类型:
内部恢复机制自动处理:
- SQL语句错误
进程失效
实例失效
网络失效
- 利用备份数据恢复:
用户错误
介质失效
逻辑备份:
指通过工具将数据库中的数据转换成专用或通用格式的文件,保存在文件系统中。
工具:
EXP/IMP
EXPDP/IMPDP
2、Oracle数据库物理备份与恢复
物理备份:
指对数据物理文件所实施的备份。
物理备份管理方式:
- 用户管理的备份
- Recover Manager(RMAN)备份
- 第三方备份软件
恢复数据库
两个过程:
- Restore: 从备份数据中找到完整备份文件,恢复完整文件的过程。
- Recover: 将日志和增量备份的改变应用到数据文件,使数据文件恢复到指定时间点上的过程。
例题讲解
1、( )只记录自上次完整数据库备份后发生更改的数据。
答案:差异备份
2、事务日志用于保存( )
A.程序运行过程
B.程序的执行结果
C.对数据的更新操作
D.数据操作
答案:C
3、现有SQL Server 2008数据库服务器,其中的一个数据库占用80GB空间,另有一台用于备份的计算机,该机器上有4个大小均为50GB的硬盘分区。若要将此数据库完全备份到该计算机上,则( )
A.不能实现,因为每个分区上的空间都不够80GB
B.可以先建立一个备份设备,这个设备分别在4个分区上各占用20GB空间,然后再用此设备备份数据库
C.可以先在每个分区上分别建立一个备份设备,指定每个设备的大小均为20GB,并建立一个包含这4个备份设备的备份媒体集,最后再用此备份媒体集备份数据库
D.可以先在每个分区上分别建立一个不用指定大小的备份设备,然后将数据库同时备份到这4个备份设备上
答案:C
4、在SQL Server 2008中,设某日上午10点对DB1数据库进行了一次完整备份,在上午11点时DB1数据库突然因硬件故障造成部分数据损坏,但该数据库的日志文件没有遭到破坏。为了尽可能减少数据丢失,下列操作中最可行的是( )
A.首先对DB1进行一次完整备份,然后再恢复数据库
B.首先对DB1进行一次差异备份,然后再恢复数据库
C.首先对DB1进行一次结尾日志备份,然后再恢复数据库
D.首先清空日志文件内容,然后再恢复数据库
答案:C
5、在SQL Server 2008中,master是一个非常重要的系统数据库,如果master损坏将会对系统造成严重后果,因此系统管理员应该对master进行备份。SQL Server 2008对数据库提供的备份有( )
Ⅰ.完全备份 Ⅱ.差异备份 Ⅲ.日志备份
A.仅Ⅰ B.仅Ⅰ和Ⅲ
C.仅Ⅰ和Ⅱ D.全部
答案:C
6、下列关于日志备份的说法中,错误的是( )
A.日志备份仅备份日志,不备份数据
B.日志备份的执行效率通常比差异备份和完整备份高
C.第一次对数据库进行的备份可以是日志备份
D.日志备份的时间间隔通常比差异备份短
答案:C
7、某网上商城因为业务发展,原有的系统不能很好的满足需要,因此采用了一套新的经营管理系统,此系统使用SQL Server 2008数据库管理系统。此系统上线运行前,需将商场原有的数据导入到新系统中。原有系统使用SQL Server 2000,数据结构与新系统不完全一致。因此需要把数据从SQL Server 2000导入到SQL
Server 2008中,为了保证数据一致性,数据导入过程中要求暂停业务且必须在3小时内完成。
(1)在原有数据导入新系统的过程中,实施人员发现原有数据量很大,导入数据需要四小时,业务无法接受。经分析某工程师认为,数据导入过程中的数据库I/O很高,但导入数据的程序本身对系统资源占用率很低。该工程师建议将数据导入过程中的数据恢复模式从"完整"模式改为"简单"模式以提高数据导入速度;而另一位工程师则认为此方法未必能提高数据导入速度,而且还可能导致数据丢失,不建议使用此方法。
请分析此方法是否能够提高数据导入速度并给出理由,
同时分析此操作的数据丢失风险。(5分)
(2)在成功导入历史数据后,此系统顺利上线运行。在上线运行的第一周,发现数据库服务器的CPU使用率很高,达到近90%,高峰期间达到100%,且系统内存占用率达到90%,但系统I/O很轻。业务人员反应系统操作速度很慢。为了提高系统运行速度。在不修改应用程序的前提下,两位工程师提出了不同的解决办法:
Ⅰ.为服务器增加2颗CPU,缓解CPU使用率很高的问题;
Ⅱ.为服务器增加一倍内存,缓解内存使用率很高的问题。
考虑成本,现阶段只能按照一种方案实施。请指出在现有情况下,哪种方案更合理并给出理由。(5分)
【解题思路】
(1)SQL Server 2008的数据恢复模式有三种:
①简单恢复模式,②完整恢复模式,③大容量日志恢复模式。
在数据导入过程中,所有的业务都是暂停的,因此可以采用简单恢复模式提高数据导入速度。且只在数据导入的过程中暂时的修改恢复模式,因此数据并不会丢失。
(2)提高数据库性能的方法一般是从外部环境、调整内存分配、调整磁盘I/O、调整竞争资源等几方面着手来改变数据库的参数。SQL Server 2008采用将数据缓冲在内存的方式,因此在数据库系统运行的过程中会占用一定的内存,又因为I/O并不存在问题,说明内存尚满足需求。CPU使用率很高,表明CPU的计算能力不足,应该增加CPU的数量。
【参考答案】
(1)此方法能够提高数据导入速度。
原因:此系统I/O很高,修改恢复模式后,系统最大限度减少日志开销,可提高导入速度。
由于仅在数据导入过程中修改恢复模式,所以并无数据丢失风险。
(2)第一种方案比较合理。原因:SQL Server 2008采用将数据缓冲在内存的方式,因此内存的使用率比较高是正常情况,且现阶段I/O并不存在问题,表明内存满足需求。此阶段CPU使用率很高,表明CPU计算资源不足,因此增加CPU数量对解决问题有效。