数据库恢复的基本原则

数据库恢复的基本原则,第1张

要使数据库具有可恢复性,基本原理就是 “冗余”,即数据的重复存储。

数据库恢复实现方法:

(1) 数据转储(dump)(又称“倒库”) 转储是指DBA将整个数据库复制到磁带或另 一个磁盘上保存起来的过程。这些备用的数 据文本称为后备副本或后援副本。一时发生 故障,可以将后备副本重新装入。

(2) 建立“日志”文件(logging)。 日志文件是用来记录事务对数据库的更新 *** 作的文件。对于数据库的每次插入、删除或 修改,记下改变前后 的值,写到““日志” 文件,以便有案可查。

不知道你问的是哪类系统故障?

下面以数据库为例介绍说明,希望对你有点参考价值。

在数据库运行过程中,可能会出现各种各样的故障,这些故障可分为以下三类:事务故障、系统故障和介质故障。应该根据故障类型的不同,采取不同的恢复策略。

1,事务故障及其恢复:

事务故障表示由非预期的、不正常的程序结束所造成的故障。

造成程序非正常结束的原因包括输人数据错误、运算溢出、违反存储保护、并行事务发生死锁等。

发生事务故障时,被迫中断的事务可能已对数据库进行丁修改,为了消除该事务对数据库的影响,要利用日志文件中所记载的信息,强行回滚(RoLLBAcK)该事务,将数据库恢复到修改前的初始状态。

为此,要检查日志文件中由这些事务所引起的发生变化的记录,取消这些没有完成的事务所做的一切改变。

这类恢复 *** 作称为事务撤销(uNDo),具体做法如下。

(1)反向扫描日志文件,查找该事务的更新 *** 作。

(2)对该事务的更新 *** 作执行反 *** 作,即对已经插入的新记录进行删除 *** 作,对己删除的记录进行插入 *** 作,对修改的数据恢复旧值,用旧值代替新值。这样由后向前逐个扫描该事务已做的所有更新 *** 作,并做同样处理,直到扫描到此事务的开始标记,事务故障恢复完毕为止。

因此,一个事务是一个工作单位,也是一个恢复单位。一个事务越短,越便于对它进行UNDO *** 作。如果一个应用程序运行时间较长,则应该把该应用程序分成多个事务,用明确的coMMIT语句来结束各个事务。

2,系统故障及其恢复系统故障是指系统在运行过程中,由于某种原因,造成系统停止运转,致使所有正在运行的事务都以非正常方式终止,要求系统重新启动。引起系统故障的原因可能有硬件错误(如CPu故障、 *** 作系统)或DBMS代码错误、突然断电等。

这时,内存中数据库缓冲区的内容全部丢失,虽然存储在外部存储设备上的数据库并未破坏,但其内容不可靠了。系统故障发生后,对数据库的影响有以下两种情况。

一种情况是一些未完成事务对数据库的更新已写入数据库,这样在系统重新启动后,要强行撤销(uNDo)所有未完成的事务,清除这些事务对数据库所做的修改。这些末完成事务在日志文件中只有BEGIN TRANsLATl0N标记,而无COMMIT标记。

另一种情况是有些已提交的事务对数据库的更新结果还保留在缓冲区中,尚未写到磁盘上的物理数据库中,这也使数据库处于不一致状态,因此应将这些事务已提交的结果重新写入数据库。这类恢复 *** 作称为事务的重做(REDo)。这种巳提交事务在日志文件中既有BGIN TRANSCATION标记,也有COMMIT标记。

因此,系统故障的恢复要完成两方面的工作,既要撤销所有末完成的事务,还要重做所有已提交的事务,这样才能将数据库真正恢复到一致的状态。具体做法如下。

(1)正向扫描日志文件,查找尚未提交的事务,将其事务标识记人撤销队列。同时查找已经提交的事务,将其事务标识记入重做队列。

(2)对撤销队列中的各个事务进行撤销处理。方法同事务故障中所介绍的撤销方法。

(3)对重做队列中的各个事务进行重做处理。进行重做处理的方法是正向扫描日志文件,按照日志文件中所登记的 *** 作内容,重新执行 *** 作,使数据库恢复到最近某个可用状态。

系统发生故障后,由于无法确定哪些末完成的事务已更新过数据库,哪些事务的提交结果尚未写入数据库,因此系统重新启动后,就要撤销所有的末完成的事务,重做所有的已经提交的事务。

但是,在故障发生前已经运行完毕的事务有些是正常结束的,有些是异常结束的。所以无须把它们全部撤销或重做。

通常采用设立检查点(checkPoint)的方法来判断事务是否正常结束。每隔一段时间,比如说5分钟,系统就产生一个检查点,做下面一些事情:a,把仍保留在日志缓冲区中的内容写到日志文件中;b,在日志文件中写一个“检查点记录”;c,把数据库缓冲区中的内容写到数据库中,即把更新的内容写到物理数据库中;d,把日志文件中检查点记录的地址写到“重新启动文件”中。

每个检查点记录包含的信息有在检查点时间的所有活动事务一览表、每个事务最近日志记录的地址。

在重新启动时,恢复管理程序先从“重新启动文件”中获得检查点记录的地址,从日志文件中找到该检查点记录的内容,通过日志往回找,就能决定哪些事务需要撤销,恢复到初始的状态,哪些事务需要重做。为此利用检查点信息能做到及时、有效、正确地完成恢复工作。

3,介质故障及其恢复介质故障是指系统在运行过程中,由于辅助存储器介质受到破坏,使存储在外存中的数据部分或全部丢失。

这类故障比事务故障和系统故障发生的可能性要小,但这是最严重的一种故障,破坏性很大,磁盘上的物理数据和日志文件可能被破坏,这需要装入发生介质故障前最新的后备数据库副本,然后利用日志文件重做该副本后所运行的所有事务。

具体方法如下。

(1)装入最新的数据库副本,使数据库恢复到最近一次转储时的可用状态。

(2)装入最新的日志文件副本,根据日志文件中的内容重做已完成的事务。首先扫描日志文件,找出故障发生时己提交的事务,将其记入重做队列。然后正向扫描日志文件,对重做队列中的各个事务进行重做处理,方法是正向扫描日志文件,对每个重做事务重新执行登记的 *** 作,即将日志记录中“更新后的值”写入数据库。

这样就可以将数据库恢复至故障前某一时刻的一致状态了。

我在网上在线观看**时,一点击播放的**系统d出“该内存0什么#009之类的符号,说什么该内存不能使用read,“请问这是什么回事?望高手指点一二。

sql运行问题?

数据库运行过程中常见的故障有3类:事物故障、系统故障、介质故障。

恢复策略:

1、事物故障:

发生事务故障时,被迫中断的事务可能已对数据库进行丁修改,为了消除该事务对数据库的影响,要利用日志文件中所记载的信息,强行回滚该事务,将数据库恢复到修改前的初始状态。

为此,要检查日志文件中由这些事务所引起的发生变化的记录,取消这些没有完成的事务所做的一切改变,这类恢复 *** 作称为事务撤销。

2、系统故障:

系统故障的恢复要完成两方面的工作,既要撤销所有末完成的事务,还要重做所有已提交的事务,这样才能将数据库真正恢复到一致的状态。

3、介质故障:

介质故障比事务故障和系统故障发生的可能性要小,但这是最严重的一种故障,破坏性很大,磁盘上的物理数据和日志文件可能被破坏,这需要装入发生介质故障前最新的后备数据库副本,然后利用日志文件重做该副本后所运行的所有事务。

“数据故障恢复”和“完整性约束”、“并e799bee5baa6e4b893e5b19e31333431353364发控制”一样,都是数据库数据保护机制中的一种完整性控制。所有的系统都免不了会发生故障,有可能是硬件失灵,有可能是软件系统崩溃,也有可能是其他外界的原因,比如断电等等。

数据库运行的突然中断会使数据库处在一个错误的状态,而且故障排除后没有办法让系统精确地从断点继续执行下去。这就要求DBMS要有一套故障后的数据恢复机构,保证数据库能够回复到一致的、正确地状态去。

Microsoft SQL Server的数据库备份和恢复策略

一、概述

备份和恢复是数据库管理员维护数据库安全性和完整性的重要 *** 作。备份是恢复数据库最容易和最能防止意外的保证方法。没有备份,所有的数据都可能会丢失。备份可以防止表和数据库遭受破坏、介质失效或用户错误而造成数据灾难。恢复是在意外发生后,利用备份来恢复数据库的 *** 作。

Microsoft SQL Server数据库中对于数据的备份和恢复有几种不同的方法,本人结合以往的一些经验,对其归纳如下。

二、常用的备份和恢复数据库的方法

1、Microsoft SQL Server中的备份和恢复:

1)备份类型,分别为:

•数据库备份(Database Backups)

•事务日志备份(Transaction Log Backup)

•差异备份(Differential Database Backups)

•文件和文件组备份(File and File Group Backup)

A.数据库备份(Database Backups)

数据库备份是指对数据库的完整备份,包括所有的数据以及数据库对象。实际上备份数据库过程就是首先将事务日志写到磁盘上,然后根据事务创建相同的数据库和数据库对象以及拷贝数据的过程。由于是对数据库的完全备份,所以这种备份类型不仅速度较慢,而且将占用大量磁盘空间。

B.事务日志备份(Transaction Log Backup)

事务日志备份是指对数据库发生的事务进行备份,包括从上次进行事务日志备份、差异备份和数据库完全备份之后,所有已经完成的事务。

C.差异备份(Differential Database Backups)

差异备份是指将最近一次数据库备份以来发生的数据变化备份起来,因此差异备份实际上是一种增量数据库备份。与完整数据库备份相比,差异备份由于备份的数据量较小,所以备份和恢复所用的时间较短。但是它却无法像事务日志备份那样提供到失败点的无数据损失备份。

D.文件和文件组备份(File and File Group Backup)

文件或文件组备份是指对数据库文件或文件夹进行备份,但其不像完整的数据库备份那样同时也进行事务日志备份。使用该备份方法可提高数据库恢复的速度,因为其仅对遭到破坏的文件或文件组进行恢复。

2)数据库恢复模式

•简单恢复(SimpleRecovery)

•完全恢复(Full Recovery)

•批日志恢复(Bulk-logged Recovery)

A.简单恢复(Simple Recovery)

所谓简单恢复就是指在进行数据库恢复时仅使用了数据库备份或差异备份,而不涉及事务日志备份。简单恢复模式可使数据库恢复到上一次备份的状态,但由于不使用事务日志备份来进行恢复,所以无法将数据库恢复到失败点状态。

B.完全恢复(Full Recovery)

完全数据库恢复模式是指通过使用数据库备份和事务日志备份将数据库恢复到发生失败的时刻,因此几乎不造成任何数据丢失,这成为对付因存储介质损坏而数据丢失的最佳方法。

C.批日志恢复(Bulk-logged Recovery)

批日志恢复在性能上要优于简单恢复和完全恢复模式,它能尽最大努力减少批 *** 作所需要的存储空间。

2、使用SQL SERVER的管理器ENTERPRISE MANAGER进行备份和恢复

1)完全手工方式。

在这种方式下,选择要备份和恢复的数据库,单击鼠标右键,在快捷菜单中的“ALL TASKS”下选择备份或者恢复数据库。

2)半手工方式。

这种方式就是管理员事先建立备份或者恢复数据库的作业,待到备份或者恢复数据库的时候,管理员打开“SQL SERVER ENTEPRISE MANAGER”,在“MANAGER”里找到相应的作业,然后执行之。

3)全自动方式。

在数据库管理器里面,管理员事先建立好恢复或者备份数据库的作业,然后定制一个执行计划,让计算机在特定的条件下自己执行备份和恢复 *** 作。

作业是ENTERPRISE MANAGER提供的一种定期处理数据的一种方法,前面提到的半手工方式和全自动方式虽然利用了作业,但它需要在ENTERPRISE MANAGER里启动和关闭作业;现在还可以在应用程序客户端启动和关闭作业的机制以作业机制实现数据库的恢复和备份,就是事先在建立备份和恢复数据库的作业,在应用程序客户端用控制体启动相应的执行体来实现之。用这种方式实现数据库的备份和恢复,用户不必打开数据库管理器进行 *** 作,用户可以在任何一个应用程序客户端完成 *** 作。

3、异机备份策略

在局域网内的任何一台工作站计算机上安装Microsoft Windows NT及Microsoft SQL Server,并在该机上建立一个与服务器中的数据库同名的数据库,利用Microsoft SQL Server系统本身提供的异机传送工具(在Microsof SQL Enterprise Manager中的Tools菜单下的Database/Object Transfer)通过设置定时(可以是每周、每月、每日或每时)由计算机自动的把服务器中数据库的数据传送到该工作站机的数据库中,这样一旦服务器( *** 作系统)崩溃或Microsoft SQL Server系统崩溃时,只要重装服务器 *** 作系统(Microsoft Windows NT)或重装Microsoft SQL Server仍然可以采用异机传送工具来通过该工作站机把数据传回至服务器的Microsoft SQL Server数据库中,以确保数据的安全恢复。

三、比较

上述这三种备份和恢复的方式,分别是在SQL Server之内、SQL SERVER的管理器中和异机中实现的。

SQL Server中的备份和恢复是数据库本身的一个功能,而且其提供了不同级别的备份和恢复策略,是一种比较完善的数据库安全保护措施,但由于此 *** 作只能在数据库管理器中进行,所以对于人员和设备的要求比较高,仅限于有限个人和机器可以 *** 作,所以 *** 作起来有一定的局限性。

SQL SERVER的管理器中的备份和恢复可以利用作业机制在任何一个应用程序客户端完成 *** 作,打破了我们常规对大型数据库备份和恢复必须在数据库管理器里进行的局限性,为在应用程序客户端实现复杂的数据库维护提供了一个思路,也大大方便了用户的 *** 作。但是由于这种 *** 作的方便性,也决定了其有一定的不安全性。

异机中的备份和恢复是最安全最可靠的方式,而且对于数据库的恢复来说也是最方便的一种,它完全避免了任何形式的数据损毁的威胁,特别是针对服务器崩溃和Microsoft SQL Server系统崩溃,其恢复效果是很理想的。因此对于一些重要的大型数据库来说是很可取的。但是由于成本较高,采用这种方法对于一些较小型的数据库系统是比较难以实现的。

四、结论

上述的三种方式都是数据库备份和恢复较为常用的一些方法,虽然各自实现的方式不同,但都达到了保护数据安全的目的。所以本人认为这三种方法都是可取的。

但是对于具体的案例,还需要仔细考虑各自系统的特性和方法的可 *** 作性,例如一般中小型的数据库,网内工作站计算机的分布范围不是很大(象一座大厦内),距离服务器的比较近时,采用Microsoft SQL Server内的备份恢复策略就完全可以解决问题;而对于一些服务器距离较远的数据库系统,人员无法常常去到服务器所在地去实施备份和恢复的,采用SQL SERVER的管理器中的策略就很理想;再者对于数据库内数据比较庞大,恢复起来需要一定的时间的,就不防采用异机备份的策略,可以大大降低因系统崩溃所带来的损失。

总之,事物总有其两面性,没有哪种方法是适用于任何情况的,我们应该在实际工作中多总结、归纳,逐渐摸索出最适合自身系统的一种解决方案,这样才能使我们的工作顺利开展

简单情况下:进入原来mysql安装路径下的data文件夹下,找到相应的库和ibdata1,进行copy,就可回复原来的数据。

复杂情况下:

从另一台机上把MySQL数据库的mysql文件夹拷贝到本地机上,目的是恢复本地机对数据的访问和 *** 作。经过如下几种情况的 *** 作。

1 在本地重装MySQL(安装目录D:\Program Files\MySQL\MySQL Server 50),直接把mysql文件夹拷贝至D:\Program Files\MySQL\MySQL Server 50\。结果,失败:数据库连接错误。

2 卸载后重装MySQL,将D:\Program Files\MySQL\MySQL Server 50\下的数据备份,只把mysql\data文件夹全部内容拷贝到D:\Program Files\MySQL\MySQL Server 50\data下。结果,失败:数据库连接错误。将备份的数据还完覆盖。结果,失败,还是连接不上数据库。

3 卸载后重装MySQL,将mysql\data文件夹里的cf1,last文件夹(这两个是原来MySQL里的数据库)拷贝进D:\Program Files\MySQL\MySQL Server 50\data。连接成功,在Navicat for MySQL里看到数据库cf1和last,但是不能访问,因为数据全为零。明白了原来data里以数据库命名的文件存储的是数据库的表结构,不是元数据。下一步,把data文件夹里的ibdata1文件(34G大,明显存储了元数据)拷贝到D:\Program Files\MySQL\MySQL Server 50\data里,代替原来的ibdata1文件。重启电脑,打开Navicat for MySQL,连接成功,数据可以访问 *** 作。

至此, *** 作终于成功。其实当初在那台机上把数据导出来,而不是现在直接把文件夹mysql复制过来会更容易恢复。但那台机已经重装了系统,也就是说MySQL失效了。

以上就是关于数据库恢复的基本原则全部的内容,包括:数据库恢复的基本原则、系统故障、sql运行问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10065651.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存