小白学数据库(十)数据库备份与恢复

数据库故障的种类

1.事务内部的故障

  • 可以通过事务程序本身发现并处理的故障
  • 非预期的故障(不能由应用程序发现) 如:运算溢出、并发事务发生死锁二被选中撤销该事务、违反了某些完整性限制等
    事务故障仅指非预期故障

2.系统故障:软故障
系统故障是指造成系统停止运转、要重启的故障 如:CPU故障、操作系统故障、程序代码错误、断电等,是的系统必须重新启动
系统故障的特征:影响所有正在运行的事务,但不破坏数据库。他们可引起缓冲区内容丢失,并使所有正在运行的事务不能到达预期终点
系统故障发生时,可能使数据库出于不一致状态:
一方面,有些非正常终止事务的结果可能已经写入数据库,在系统下次启动时,恢复程序必须回滚这些非正常终止的事务,撤销这些事务对数据库的影响。
另一方面,有些已完成事务的结果可能部分或全部留在缓冲区,而尚未写回磁盘上的数据库中。在系统下次启动时,恢复数据库必须重做(REDO)所有已提交的事务,将数据库真正恢复到一致状态。

3.介质故障:硬故障 如:磁盘损坏、磁头碰撞、强磁场干扰等
这类故障发生概率很小,但破坏性极大,将破坏部分甚至整个数据库的内容,并影响使用相应数据的所有事务。

4.计算机病毒 破坏性大,极易传播

数据库恢复

数据库恢复的基本原理:冗余
数据库恢复的机制: ①建立冗余数据(数据转储、登记日志文件) ②利用冗余数据实施数据库恢复

数据备份是指定期或不定期地对数据库数据进行复制,备份的介质可是是磁带也可以是磁盘
备份数据库应备份数据库中的:

  • 表(结构),包含系统表、用户定义的表
  • 数据库用户(包括用户和用户操作权)
  • 用户定义的数据库对象和数据库中的全部数据
  • 数据库日志等内容

恢复策略:

  • 事务故障的恢复
    事务故障是指事务在运行到正常结束前被终止
    事务故障的恢复是由系统自动完成的,对用户是透明的
    恢复的过程为:①反向扫描日志文件并执行相应操作的逆操作,比如日志中记录的是“删除”操作,就进行“插入”
    ②若是修改操作,则用更新前的值替换更新后的值
  • 系统故障的恢复
    系统故障的恢复是系统在重新启动时自动完成的,不需要用户干预。
    系统故障恢复过程为: ①正向扫描日志文件,找出故障发生前已提交的事务,将其重做
    ②同时找出故障发生时未完成的事务,并撤销这些事务
  • 介质故障的恢复
    介质故障发生后,磁盘上的物理数据和日志文件均遭破坏
    恢复的方法是:①重装数据库,使数据库管理系统能正常运行
    ②利用介质损坏前对数据库已做的备份或利用镜像设备恢复数据库

数据库恢复方法
利用数据库备份、事务日志备份可以将数据库从出错状态恢复到最近的正确状态

  • 利用备份技术
    由DBA定期对数据库进行备份,当发生错误时,利用备份(文件)将数据库恢复到备份完成时的数据库状态
  • 利用事务日志
    日志记录了对数据库数据的全部更新操作(插入、删除、修改)
    利用事务日志可以恢复执行不完整的事务,既从不完整的事务的当前值按事务日志记录的顺序反做,知道事务开始时的数据库值为止
    利用事务日志的恢复一般是系统自动完成的
  • 利用镜像技术
    镜像就是在不同的设备上同时存有两份数据库,我们把其中一个设备称为主设备,把另一个称为镜像设备。
    每当主数据库更新时,DBMS自动把更新后的数据复制到另一个镜像设备上,保证主设备上的数据库与镜像设备上的数据库一致
    数据库镜像功能可用于有效地恢复磁盘介质的故障

备份数据库

备份设备:

  • 永久备份设备:灾备份之前需要预先建立
  • 临时备份设备:不需要预先建立,在备份时直接使用
    方法:①在SSMS工具上备份
    在这里插入图片描述
    ②用T-SQL语句创建备份设备
    创建一个名为bk2的磁盘备份设备,物理存储及文件名为E:\学习\数据库\大二\上机\备份\bk2.bak
EXEC sp_addumpdevice 'disk', 'bk2',
   'E:\学习\数据库\大二\上机\备份\bk2.bak'

备份类型:

  • 完整备份:备份数据文件、数据库对象和数据的信息;备份备份过程中发生的活动
  • 差异备份:备份从上次完整备份之后改变的内容;比完整备份节约时间
  • 事务日志备份:备份从上次日志备份之后的日志记录;备份完成后要截断日志

备份策略

  • 完整备份
    适用于数据库数据不是很大,而且数据更改不是很频繁的情况
    在这里插入图片描述
  • 完整备份+日志备份
    如果不允许丢失太多的数据,而且又不希望经常地进行完整备份,则可以在完整备份中间加一些日志备份在这里插入图片描述
  • 完整备份+差异备份+日志备份在这里插入图片描述

实现备份:
①SSMS实现备份:
在这里插入图片描述
在这里插入图片描述
②T-SQL语句备份数据库

BACKUP DATABASE 数据库名
TO 备份设备 WITH [DIFFERENTIAL or INIT or NOINIT]
DIFFERENTIAL:进行差异备份
INIT:本次备份数据库将重写备份设备
NOINIT:本次本分数据库将追加到备份设备上

日志备份:

BACKUP LOG 数据库名
TO 备份设备 WITH INIT or NOINIT , NO_LOG or TRUNCATE_ONLY or NO_TRUNCATE

NO_LOG和TRUNCATE_ONLY:备份完日志后截断不活动日志。
NO_TRUNCATE:备份完日志后不截断不活动日志。

对DBTest数据库进行完整备份,备份到bk2备份设备上,并覆盖掉该备份设备上已有的内容

BACKUP DATABASE DBTest 
   TO  bk2 WITH INIT

对DBTest数据库进行差异备份,备份到bk2备份设备上,并保留掉该备份设备上已有的内容

BACKUP DATABASE DBTest 
   TO  bk2 WITH DIFFERENTIAL ,NOINIT

对DBTest数据库进行一次失误日志备份,直接备份到E:\学习\数据库\大二\上机\备份下

BACKUP LOG DBTest 
  TO DISK='E:\学习\数据库\大二\上机\备份\DBTest_log.bak'

恢复数据库

恢复的顺序:

  1. 恢复最近的完整备份
  2. 恢复最近的差异备份(如果有)
  3. 恢复自差异备份之后的所有日志备份(按备份的先后顺序)

恢复数据库:
①SSMS工具
在这里插入图片描述
②T-SQL恢复数据库

RESTORE DATABASE 数据库名
FROM 备份设备名 WITH FILE = 文件名 , NORECOVERY , RECOVERY
FILE = 文件号:标识要还原的备份,文件号为1表示备份设备上的第一个备份。
NORECOVERY:表明对数据库的恢复操作还没完成。使用此选项恢复的数据库是不可用的,但可以继续恢复后续的备份。
RECOVERY:表明对数据库的恢复操作已经完成。

设对students数据库进行了下述备份过程
在这里插入图片描述
恢复顺序:

  • 首先恢复完整备份
  • 然后恢复差异备份
  • 最后恢复日志备份
恢复完整备份
RESTORE DATABASE Students FROM bk1 
 WITH FILE=1, NORECOVERY
恢复差异备份
RESTORE DATABASE Students FROM bk1 
 WITH FILE=2, NORECOVERY
恢复日志备份
RESTORE LOG Students FROM bk2

相关推荐

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论

打赏作者

@EC小鑫

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值