数据库知识-恢复子系统、数据库恢复的基本技术、转储方法、日志文件、undo/redo操作、数据库镜像

ChongTuWang
• 阅读 1909

数据库中为什么要有恢复子系统?它的功能是什么?

因为计算机系统中硬件的故障、软件的错误、操作员的失误以及恶意的破坏是不可避免的,这些故障轻则造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据丢失,因此必须要有恢复子系统。
恢复子系统的功能是:把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)。

数据库恢复的基本技术有哪些?

数据转储登记日志文件是数据库恢复的基本技术。
当系统运行过程中发生故障,利用转储的数据库后备副本和日志文件就可以将数据库恢复到故障前的某个一致性状态。

转储方法

静态转储:
当系统中无运行事务时进行转储,转储开始时数据库处于一致状态,转储期间不允许对数据库的任何存取、修改活动。
动态转储:
转储操作与用户事务并发进行,转储期间允许对数据库进行存取或修改。
增量转储:
转储新增的部分。例如每天晚上进行新增转储。

什么是日志文件?为什么要设立日志文件?

答:(1)日志文件是用来记录事务对数据库的更新操作的文件。
(2)设立日志文件的目的是: 进行事务故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复。

登记日志文件时为什么必须先写日志文件,后写数据库?

答:把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。
如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,在恢复时只不过是多执行一次UNDO操作,并不会影响数据库的正确性。所以一定要先写日志文件,即首先把日志记录写到日志文件中,然后写数据库的修改。

undo/redo操作

Undo日志记录某数据被修改前的值,可以用来在事务失败时进行rollback;Redo日志记录某数据块被修改后的值,可以用来恢复未写入data file(在内存中有data buffer,buffer满了之后才会写入data file,也就是从内存写入外存)的已成功事务更新的数据。
事务的原子性(Atomicity)
事务中的所有操作,要么全部完成,要么不做任何操作,不能只做部分操作。如果在执行的过程中发生了错误,要回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过。
Undo Log的原理很简单,为了满足事务的原子性,在操作任何数据之前,首先将数据备份到一个地方(这个存储数据备份的地方称为Undo Log)。然后进行数据的修改。如果出现了错误或者用户执行了 ROLLBACK语句,系统可以利用Undo Log中的备份将数据恢复到事务开始之前的状态。除了可以保证事务的原子性,Undo Log也可以用来辅助完成事务的持久化。

什么是数据库镜像?它有什么用途?

数据库镜像即根据DBA的要求,自动把整个数据库或者其中的部分关键数据复制到另一个磁盘上。每当主数据库更新时,DBMS自动把更新后的数据复制过去,即DBMS自动保证镜像数据与主数据的一致性。
数据库镜像的用途有:
一是用于数据库恢复。
当出现介质故障时。可由被你磁盘维续提性使用。同时DBMS自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本。
二是提高数据库的可用性。在没有出现故障时,当一个用户对某个数据加排它锁进行修改时,其他用户可以读镜像数据库上的数据,而不必等待该用户释放锁。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
Mysqlbinlog解析工具
  Mysql的binlog日志作用是用来记录mysql内部增删改查等对mysql数据库有更新的内容的记录(对数据库的改动),对数据库的查询select或show等不会被binlog日志记录;主要用于数据库的主从复制以及增量恢复。mysql的binlog日志必须打开logbin功能才能生存binlog日志\rwrw1mysqlmy
Stella981 Stella981
3年前
PostgreSQL 恢复大法
转载自:https://yq.aliyun.com/articles/582880背景一个较大的数据库,如何只恢复一部分数据(例如只恢复某个DB)。如果访问有坏块的表。如何从无法启动的数据库中,恢复到有意义的数据。如何正确的进行备份。如何恢复到过去的某个时间点。恢复部分数据库《PostgreSQLSelect
Wesley13 Wesley13
3年前
MySQL日志体系详解
前言日志是MySQL数据库的重要组成部分。日志文件中记录着MySQL数据库运行期间发生的变化;也就是说用来记录MySQL数据库的客户端连接状况、SQL语句的执行情况和错误信息等。当数据库遭到意外的损坏时,可以通过日志查看文件出错的原因,并且可以通过日志文件进行数据恢复。MySQL的日志体系有如下几种分类:1.错误日志2.查询日志
Stella981 Stella981
3年前
ADG(active dataguard)体系结构以及三种模式
ADG(activedataguard)是什么?DataGuard可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过程就停止了,如果物理备用数据库处于恢复的过程中数据库就不能打开查询,也就是说日志应用和只读打开两个状态是互斥的(10g之前)。Oracle11g中推出的ActiveD
Wesley13 Wesley13
3年前
Oracle 11g DataGuard搭建(一)
(一)DataGuard概要DataGuard中文称为”数据卫士“,提供了数据库高可用性、数据保护和灾难恢复的功能。DataGuard通过建立primary数据库和standby数据库来确立参照关系,DataGuard将主库(primary)的redo日志传递给备库(standby),然后在备库中应用redo进行同步。备库又分为2种类型:物理
Wesley13 Wesley13
3年前
Oracle Data Guard 的角色转换(Failover)
OracleDataGuard的角色转换\日期:20130618\来源:Linux社区 作者:newhappy\字体:大中小\二、Failover一旦主数据库发生Crash(比如异常掉电、硬件故障),短时间内无法恢复运行,这时为了尽快的把业务恢复正常,通常需要执行fa
Wesley13 Wesley13
3年前
oracle 11g 数据库恢复技术
一redologOracle数据库中的三大核心文件分别是数据文件(datafile)、重做日志(redolog)和控制文件(controlfile)。数据文件保证了数据库的持久性,是保存修改结果的地方;重做日志保证了数据库的可恢复性,是保存修改操作(包括对数据文件、控制文件等各类文件的修改)的地方;控制文件
Wesley13 Wesley13
3年前
MySQL数据库全量、增量备份与恢复
MySQL数据库全量、增量备份与恢复数据库备份的重要性在生产的环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果。造成数据丢失的原因程序错误人为商店计算机失败磁盘失败灾难(如火山、地震)和偷窃数据库备份的分类从物理与
Wesley13 Wesley13
3年前
Mysql redo&&undo学习
   mysql通过锁机制来实现事务的隔离性,用redolog实现事务的原子性和持久性,用undolog实现事务的一致性。undo并不是redo的逆过程,redo和undo都可以看做一种恢复过程,redo恢复事务修改的页操作,redo记录的是物理日志,记录的是页的物理修改操作,redolog基本上都是顺序写的,在数据库运行时不需要对redolog
Wesley13 Wesley13
3年前
oracle基础知识
冷备份:在数据库完全关闭的情况下进行的,数据文件是一致的,在备份时没有任何访问和修改从冷备份中恢复:1文件还原2前向恢复热备份:在数据库已启动且正在运行时进行的备份。完全恢复:先把数据库还原,通过所有可用的归档日志对数据库进行前向恢复不完全恢复(时间点恢复):首先将数据库还原,利用部分日志有选择性的前滚到一个预先确定的时
燕青 燕青
1年前
Macos硬盘数据恢复工具:Eassiy Data Recovery for mac中文版下载
是一款专业的数据恢复软件,旨在帮助用户快速恢复丢失或删除的数据。它适用于各种数据丢失的情况,如意外删除、格式化、病毒感染、硬件故障等。EassiyDataRecovery的主要功能和特点包括:数据恢复:EassiyDataRecovery可以扫描用户的计算