暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据库技术-备份与恢复数据库

五青社 2021-08-09
642


正文共:7358字 5图

预计阅读时间:19分钟

欢迎您阅读此系列文章,文章参考自《全国计算机等级考试三级教程.数据库技术》。内容为书籍主要知识点以及常考点,阅读此系列文章可以帮助您快速、轻松考取相应证书!祝您阅读愉快,获取知识点文档地址:https://gitee.com/yjs0612/ncre 点击文章下方阅读原文即可跳转。

前言

在前面我们学习了故障管理的相关内容,在日常数据库管理工作中,除了需要学会掌握和应用这些常用的故障管理和恢复技术,还要知道如何对数据库数据进行备份和恢复。

大家都知道,数据库中的数据是宝贵的信息资源,他们是不允许丢失和损坏的,所以,在数据库维护工作中,一项重要的任务就是如何保证数据库中数据的不损坏和不丢失。

这部分在NCRE三级数据库技术考试中,会出现在选择题填空题以及部分会涉及设计与应用题目。常考知识点有:熟悉备份数据库和恢复数据库的相关概念、掌握SQL Server的备份与恢复机制(如恢复模式和备份类型等)、了解Oracle的备份与恢复机制。

目录

  • 备份和恢复的概念

    • 备份数据库
    • 恢复数据库
  • SQL Server的备份与恢复机制(掌握)

    • 恢复模式
    • 备份内容及时间
    • SQL Server的备份机制
    • SQL Server的恢复机制
  • Oracle的备份与恢复机制(了解)

    • Oracle数据库逻辑备份与恢复
    • Oracle数据库物理备份与恢复

备份和恢复的概念

备份数据库就是将数据库中的数据以及保证数据库系统正常运行的相关信息保存起来,以备系统出现问题时恢复数据库时使用。

备份数据库

备份:是制作数据库的副本,包括数据库的结构、对象和数据
备份数据库的主要目的:为了防止数据去失
造成数据丢失的原因如下:

  • 存储介质故障

    存储介质都有一定的寿命 。长时间使用后存储介质可能会出现损坏或间底崩溃的现象,这势必会适成数据丢失。

  • 用户的操作错误

    若用户无意或恶意在教据库中进行非法操作,如删除或更改要数据等,也会造成赦据损坏。

  • 服务器故障

    可能由硬件或软件造成大型服务器损坏或崩溃的现象。

  • 由于病毒的侵害造成的数据丢失或损

  • 由于自然灾害而造成的数据丢失或损坏

备份数据库是数据库管理员非常重要的一个任务,可以利用数据库的备份恢复出现问题的数据库。备份数据库的另外一个作用是进行数据转移,是两台服务躁上具有相同的数据库。

恢复数据库

恢复数据库是指数据库系统在出现故障时利用先前建立的冗余数据(备份副本)把数据库恢复到某个正确、一致的状态的过程。
根据故障对数据库系统的影响和故障的可修复程度,数据库系统的故障恢复可归为下列两种类型:

  • 介质故障恢复

    也称为灾难性故障,如磁盘崩溃引发大范围数据库数据的损坏或丢失,应对这类故障的主要方法是还原最近的一个数据库副本,利用备份日志重做已提交事务的操作。使数据库还原到故障前的某个工作状态。

  • 非介质故障恢复

    也称可修复性故障,解决此类故障的基本方法是由DBMS的某个进程在数据库系统重启后,根据检测到的数据库不一致的状况,使用在线日志文件中的信息进行必要的REDO和UNDO操作来恢复数据库。非介质故障一般不需要数据库的后备副本,其修复工作是由数据库管理系统自动完成的。

SQL Server的备份与恢复机制

恢复模式

恢复模式的作用:控制对事务日志的维护。SQL Server 2008支持3种恢复模式:简单恢复模式完整恢复模式和大容量日志恢复模式

简单恢复模式

优点:不备份事务日志,可最大限度地减少事务且志的管理开销。
缺点:若数据库损坏,将面临极大的数据丢失风险,且只能恢复到最新备份的状态

在简单恢复模式下,备份间隔应尽可能短,可以防止数据大量丢失。
对于用户数据库.简单恢复模式只用于测试和开发数据库,或用于主要包含只读类数据的数据库(如数据仓库)
简单恢复模式不适合生产系统,因为会面临丢失数据的风险。

完整恢复模式

完整恢复模式完整的记录所有的事务,并将事务日志记录保留到对其备份完毕为止。
如果能够在出现故障后备份日志尾部,则可以使用完整恢复模式将数据库恢复到做障点。
完整恢复模式还支持还原单个数据页。

大容量日志恢复模式

大容量日志恢复模式只对大容量操作进行最小记录(有限定的) , 使事务日志不会被大容量加载操作填充。该模式保护大容量操作不受媒体故障的危害,提供最佳性能并占用最小日志空间。
大容量日志恢复模式一般只作为完整恢复模式的附加模式,也将事务日志记录保留到对其备份完毕为止。该模式不支持时点恢复,必须在增大日志备份与增加工作丢失风险之间进行权衡。

查看和更改恢复模式

  • 在SQL Server2008中 ,更改恢复模式可在SSMS工具中用图形化的方法实现

  • 也可以使用ALTER DATABASE语句更改和设置数据库的恢复模式

    基本格式如下:

    ALTER DATABASE database_name SET
    RECOVERY { FULL | BULK_LOGGED| SIMPLE }
    # 其中,FULL 为完整恢复模式,“BULK_ LOGGED”为大容量日志恢复模式,“SIMPLE" 为简单恢复模式。

备份内容及时间

备份内容

在备份数据库时,要备份用户数据,还要备份系统数据,以保证在系统出现故障时,能够完全的恢复数据库。

备份时间

  • 系统数据库

    除了tempdb数据库,其他的系统数据库在进行了修改后应立即备份(因为系统数据库不经常变化)。

  • 用户数据库

    用户数据库不能采用立即备份的方式(因用户数据库中的数据是随系统的运行变化的) , 应采用周期性的备份 方法,备份时间根据数据库更改频率有关。

  • 在进行下列操作后,最好能立刻对用户数据库进行备份:

    • 创建数据库之后,或者在数据库中批量加载了数据之后。
    • 创建索引之后。因为创建索引时,系统要重新排列一些数据,这个过程要消耗时间和系统资源。
    • 执行了清理事务8志的操作之后。
    • 执行了大容量数据操作之后。

在 SQL Server 数据库管理系统在备份过程中允许用户操作数据库。

SQL Server的备份机制

备份设备

备份设备即备份数据库的文件,这些文件可建立在磁带上,也可建立在磁盘上。备份设备在操作系统级实际上就是物理存在的磁带或磁盘上的文件。SQL Server支持下面两种备份方式:

  • 永久备份设备

    先建立备份设备。然后再将数据库备份到备份设备上。

  • 临时备份设备

    直接将数据库备份到物理文件上。

创建备份设备时,需要指定备份设备(逻辑备份设备)对应的操作系统文件名和文件的存放位置(物理备份文件)。可以通过SQL Server Management Studio工具图形化地实现,也可以使用T-SQL语句实现。

创建备份设备的语句

创建备份设备的T-SQL语句是sp-addumpdevice系统存储过程,其语法格式如下:

sp_addumpdevice 
  [ @devtype = ] 'device_type' ,
  [ @logicalname = ] 'logical_name' ,
  [ @physicalname = ] 'physical_name‘

其中,device_type表示设备类型,其值可为disk和tape。logical_name表示设备的逻辑名称。physical_name表示设备的实际名称,必须包含完整路径,不能为NULL。

注意:在远程网络位置上创建备份设备时,注意要确保启动数据库引擎时所用的名称对远程计算机有相应的权限。

备份类型(常考)

数据库的恢复模式决定了可以使用的备份类型,而数据库的备份类型决定了备份的内容。SQL Server支持的备份类型有如下几种。

备份类型

数据库备份

SQL Server支持完整数据库备份和差异数据库备份两种类型。

  • 完整数据库备份(完全转储)
    • 完整数据库备份是所有备份方法中最基本最重要的备份,是备份的基础。它备份了数据库中的全部信息,是恢复的基线。
    • 在进行完整备份时,不仅备份数据库的数据文件、日志文件、而且还备份文件的存储位置信息以及数据库中的全部对象。
    • 当数据库比较大时,完整数据库备份需要消耗比较长的时间和资原。

SQL Server 2008中,备份并不影响用户对数据库的操作,而且在备份数据库时还能将在备份过程中所发生的操作也全部记录下来。

  • 差异性数据库备份(差异转储)
    • 在每次完整数据库备份后,定期安排差异数据库备份。例如:可以每天执行一次差异数据库备份 ,对于活动性较高的系统。此频率可以提高。
    • 在确保差异备份不会太大的情况下,定期安排新的完整数据库备份。例如:可以每周备份一次完整数据库。
    • 差异数据库备份从最近的完整备份之后数据库的全部变化内容,它以前一次完整备份为基准点,备份完整备份之后变化了的数据文件,日志文件及数据库中其他被修改的内容。
    • 差异数据库备份通常比完整数据库备份占用的空间小且执行速度快,但会增加备份的复杂度。
    • 差异备份的大小取决于自建立差异基隹后更改的数据量。差异基准越旧,新的差异备份就越大。
    • 使用差异数据库备份遵循的原则

建议在间隔一段时间后进行一次完整数据库备份,以便为数据库进行建立新的差异基准。
仅使用差异数据库备份无法恢复数据库数据。
对于大型数据库,差异备份的间隔通常比完整数据库备份的间隔更短,这可降低数据丢失的风险。
差异备份也备份差异备份过程中用户对数据库的操作。

文件备份

针对数据库中的文件进行备份。使用文件备份方式用户可以只还原损坏的文件,不用还原数据库的其余部分,加快了恢复速度。SQL Server支持下面的文件备份和差异文件备份两种方式。

  • 文件备份

    一个或多个文件或文件组中所有数据的完整备份。

    注意:在简单恢复模式下文件备份基本上仅限于只读辅助文件组。用户可以创建读/写文件组的文件备份,但必须先将文件组设置为只读,井执行对只读文件进行一次差异文件备份,然后才能还原读/写文件备份。

  • 差异文件备份

    包含自每个文件的最新完整备份之后发生了更改的数据区。

文件备份主要是对数据库中数据文件的备份,不对日志文件备份,因此在完成文件备份后须再对日志进行备份。

事务日志备份

  • 事务日志备份仅用于完整恢复模式和大容量日志恢复模式。简单恢复模式不支持事务日志备份。

  • 事务日志备份并不备份数据库本身,它只备份日志记录,而且只备份从上次备份之后到当前备份时间发生变化的日志内容。

  • 使用事务日志备份,可将数据库恢复到故障点或持定的某个时间点。

  • 一般情况下,事务日志备份比完整备份和差异备份使用的资源少。可以更频繁地使用事务日志备份,以减少数据丢失的风险。

  • 事务日志备份的3种备份类型

    • 纯日志备份仅包含一定间隔的事务日志记录 ,不包含在大容量日志恢复模式下执行的任何大容量更改的备份。

    • 大容量操作日志备份

      包含日志记录及由大容量操作更改的数据页的备份。不允许对大容量操作日志备份进行时点恢复。

    • 结尾日志备份对可能已损坏的数据库进行的日志备份用于捕获尚未备份的日志记录。结尾日志备份在出现障时进行,用于防止丢失数据,可包含纯日志记录或者大容量操作日志记录。

注意:只有当启动事务日志备份序列时,完整备份或差异备份才必须与事务日志备份同步。每个事务日志备份的序列都必须在执行完整备份或差异备份之后启动。

日志链

连续的日志备份序列称为“日志链”, 从数据库的完整备份开始

若要将数据库还原到故障点,必须保证日志链是完整的。也就是说事务日志备份的连续序列必须能够延续到故障点。日志序列的开始位置取决于还原的数据库备份类型:数据库备份文件备份

  • 对于数据备份, 日志备份序列必须从数据库备份的结尾处开始延续。
  • 对于一组文件备份。日志备份序列必须从整组文件备份的开头开始延续。

注意:
仅当第一次进行完整数据库备份,或者将数据库恢复模式从简单恢复模式到完整恢复模式或大容量日志恢复模式之后,才会开始一个新的日志链。简单恢复模式不支持事务日志备份
在完整恢复模式或大容量日志恢复模式下, SQL Server 2008要求用户备份日志结尾以捕获尚未备份的日志记录。
如果无法备份日志尾部,则只能将数据库恢复到故障发生之前创建的最后一个备份。

常用备份策略

建立备份是为了恢复已损坏的数据库。但是备份和还原数据必须根据特定环境进行定义,并且必须使用可用资源。因此,在设计良好的备份策略时,除了要考虑特定业务要求外,还应尽量提高数据的可用性并尽量减少数据的丢失。
一般应将数据库和备份放置在不同的设备上,否则如果包含数据库的设备失败,则备份也将不可用。
备份策略的制定包括:定义备份的类型和频率备份所需硬件的特性和速度备份的测试方法备份媒体的存储位置和方法

三种备份策略及其特点

  • 完整数据库备份

    完整数据库备份策略适用对数据库数据修改不频繁,数据库较小,且允许一定量的数据丢失。备份周期可以是几天进行一次或者几周进行一 次。

    完整备份包括了对数据和日志的备份。

完全备份

假设在周二晚上11:00系统出现故障,则这时可以将数据库恢复到周一晚0:00时的状态。

使用完全备份策略,还可以将一台服务器上的数据库复制到另一台服务器(在一台服务器上做备份,然后在另一台服务器上进行恢复),使两台服务器上的数据库完全相同。

  • 完整数据库备份+日志备份

    用户不允许丢失太多的数据,又不希望经常进行完整备份(完整备份占用时间长),则可以将恢复模式设置为完整恢复模式或大容量日志恢复模式,这样就可在完整备份中间加入若干次日志备份。

完整数据库备份+日志备份
  • 完整数据库备份+差异数据库备份+日志备份
完整数据库备份+差异数据库备份+日志备份

备份和恢复的速度都比较快, 且当系统出现故障时,丢失的数据较少。

实现备份

在SQL Server 2008中,可以在SSMS工具中用图形化的方法实现备份,也可以使用BACKUP语句实现备份。备份数据库语句的基本语法格式如下:

BACKUP DATABASE database_name
TO <backup_device>[,...n]
[WITH{DIFFERENTIAL| <general_WITH_options>[,...n]}]
[;]
<backup_device>::=
{
 logical_device_name
 |{DISK|TAPE}= 'physical_name’
}
<general_WITH_options>[,...n]::=
 NAME= backup_set_name
|{EXPIREDATE= 'date'
|RETAINDAYS= days

DIFFERENTIAL :表示进行差异数据库备份。默认下,BACKUP DATABASE创建的是完整数据库备份。

这部分在NCRE三级考试中一般容易出的题目为考查关键词。比如BACKUP DATABASE BACKUP LOG等,具体实现语句不详细叙述。

SQL Server的恢复机制

SQL Server支持在以下级别恢复(还原数据):

  • 数据库(数据库完整还原)

    还原和恢复整个数据库。且数据库在还原和恢复操作期间处于脱机状态。

  • 数据文件(文件还原)

    还原和恢复一个数据文件或一组文件。在文件还原过程中,包含相应文件的文件组在还原过程中自动变为脱机状态。

还原顺序

在还原数据库之前,如果数据库的日志文件没有损坏,则为尽可能咸少数据的丢失,可在恢复之前对数据库进行一次尾部日志备份,可将数据的损失减小到最小。恢复数据库要有一定的顺序,具体如下:

  • 还原最新完整数据库备份而不恢复数据库(数据库仍处于还原状态,相当于在RESTORE DATABASE语句中使用WITH NORECOVERY选项)。

  • 若存在差异备份,则还原最新的差异备份而不恢复数据库。

  • 从最后一次还原备份后创建的第一个事务日志备份开始,使用WITH RECOVERY选项依次还原日志。

  • 恢复数据库,此步骤可以与还原上一次日志备份结合使用。

实现还原

还原数据库可以在SSMS工具中用图形化的方法实现,也可以使用T-SQL语句实现。还原数据库和事务日志的T-SQL语句进行还原的方法分别如下:

  • RESTORE DATABASE 还原数据的T-SQL语句
  • RESTORE LOG 还原日志的T-SQL语句

Oracle的备份与恢复机制(了解)

Oracle数据库将数据库系统常见故障类型分类如下图所示。

Oracle数据库逻辑备份与恢复


逻辑备份是指通过工具将数据库中的数据转换成专用或通用格式的文件,保存在文件系统中。

工具:

  • EXP/IMP

    Oracle传统的导入、导出工具,在大分部Oracle版本上使用

    • 用户模式导出用户所拥有的所有对象。
    • 表模式导出用户指定的表。
    • 整个数据库导出数据库中所有对象。
  • EXPDP/IMPDP

    能在Oracle 10g及其后版本使用

Oracle数据库物理备份与恢复

物理备份

物理备份是对数据库物理文件所实施的备份,包括数据库的数据文件、控制文件重做日志文件、归档日志文件、初始化参数文件、密码文件。物理备份管理方式包括以下几种:

  • 用户管理的备份

    使用操作系统的复制命令, 并结合SQL'Plus命令来完成备份和管理工作。

  • Recover Manager( (简称RMAN )

    利用Oracle的RMAN工具实现备份及管理过程。

  • 第三方备份软件应用第三方备份管理软件实现备份。

Recover包括以下组件

  • Target Database (目标数据库)
  • 服务器进程
  • Recovery catalog(恢复目录)
  • Server Session(服务器会话)
  • Channel(通道)
  • MML(媒体管理库)

恢复数据库

数据库恢复操作般包括两个过程 : restorerecover。Restore是从备份数据中找到完整备份文件( 全备) , 恢复完整文件的过程。Recover是将日志和增量 备份的改变应用到数据文件,使得数据文件恢复到指定时间点上的过程。

恢复数据库过程:

  • 恢复整个数据库当恢复整个数据库时,数据库必须不能处于打开(open)状态

  • 恢复当前表空间当数据库打开时,使用RESTORE TABLESPACE、 RECOVER TABLESPACE恢复个别表空间。首先让需要恢复的表空间处于Offline状态,然后恢复restore和recover表空间。

  • 恢复当前数据文件当数据库打开时。使用RESTORE DATAFILE、RECOVERDATAFILE命令恢复指定数据文件。首先将需要恢复的文件下线,然后再恢复( restoref 和recover )然后开始恢复数据文件。

  • 恢复个别数据块RMAN可以恢复数据文件中的个别快。

  • RMAN操作报告RMANBJUST和OREPORT命令可以产生基于RMAN恢复目

习题

  1. SQL Server 2008支持三种恢复模式是:____ 、_____、____。
  2. SQL Server 2008中,当恢复模式为简单模式时,不能进行____备份。

参考资料及声明

  • 全国计算机等级考试三级教程.数据库技术 2019.12.


  掌握更多知识,请扫码关注我~这里有大学的各种高校服务
点击下方“在看”,给我鼓励



文章转载自五青社,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论