数据库恢复的三种方式
数据库可能因为硬件或软件(或两者同时)的故障变得不可用,不同的故障情况需要不同的恢复 *** 作。我们必须决定最适合业务环境的恢复方法。在数据库中恢复有3种类型或方法,即应急(crash)恢复、版本(version)恢复和前滚(rool forward)恢复。
应急恢复
应急恢复用于防止数据库处于不一致或不可用状态。数据库执行的事务(也称工作单元)可能被意外中断,若在作为工作单位一部分的所有更改完成和提交之前发生故障,则该数据库就会处于不一致和不可用的状态。这时,需要将该数据库转化为一致和可用的状态。
为此,需要回滚未完成的事务,并完成当发生崩溃时仍在内存中的已提交事务。如在COMMIT语句之前发生了电源故障,则在下一次重新启动并再次访问该数据库时,需要回滚到执行COMMMIT语句前的状态。回滚语句的顺序与最初执行时的顺序相反。
版本恢复
版本恢复指的是使用备份 *** 作期间创建的映象来复原数据库的先前版本。这种恢复是通过使用一个以前建立的数据库备份恢复出一个完整的数据库。一个数据库的备份允许你把数据库恢复至和这个数据库在备份时完全一样的状态。而从备份建立后到日志文件中最后记录的所有工作事务单位将全部丢失。
前滚恢复
这种恢复技术是版本恢复的一个扩展,使用完整的数据库备份和日志相结合,可以使一个数据库或者被选择的表空间恢复到某个特定时间点。如果从备份时刻起到发生故障时的所有日志文件都可以获得的话,则可以恢复到日志上涵盖到的任意时间点。前滚恢复需要在配置中被明确激活才能生效。
在SQL server 中恢复数据的几种办法 自然就是 backup 的 恢复方法 backup 这种方法是最安全 最可靠的方法 *** 作起来也很简单 只要在 sql server 的 enterprise manager中选择 restore 就可以了 用T SQL 也可以完成 RESTORE DATABASE test FROM DISK = c:\mssql \backup\test bak 当然这是用的 文件恢复 如果是 设备恢复 自然也是可以的 可是有的时候 SQL server 是在我们毫无准备的情况下瘫痪的 有的时候是伴随者 NT 的瘫痪而引起的 (这个时候 豆腐想 墙上 Gates 的画像有仍了几个 西红柿) 怎么办呢?这个时候就只有采用 sql server 的 t sql 中提供的系统存储过程了 sp_atach_db 在这里举一个简单的例子 sp_attach_db @dbname = N pubs @filename = N c:\mssql \data\pubs mdf @filename = N c:\mssql \data\pubs_log ldf 这种方法应该说是有很高的成功率的 不过在 实践中 豆腐听说 这样后 数据库成为只读的 那也没有办法了 如果只有 mdf 没有 ldf 文件的话 可以使用 sp_attach_single_file sp_attach_single_file_db @dbname = pubs @physname = c:\mssql \data\pubs mdf 这个方法本来是 用来 对 sp_deatach 的 *** 作的反 *** 作 不过直接使用也还是可以成功的 lishixinzhi/Article/program/SQLServer/201311/22066
简单情况下:进入原来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失效了。
如果是刚删除,可以找数据恢复工具回复,如果不会可以花钱找专门的公司恢复数据,一般来说数据刚被删除只会删除文件分配表而不会删除数据体,只要恢复被删除的文件分配表了数据自然恢复,数据要真正被删除需要做覆盖 *** 作,如果做了覆盖 *** 作,那么就需要专业的数据恢复公司做数据痕迹恢复,一般来说要完全消除数据痕迹需要磁盘被覆盖7次以上,当然如果要做到阻止数据恢复可能一次覆盖就够了,当然着看运气。
问题1:在没有备份的情况下,卸载了软件,但是账套数据文件存在,如何恢复数据?
引子:通常情况下,应该提醒用户经常在系统管理中进行账套备份。如果在没有备份的情况下,卸载了软件(或重装了系统),这时软件是安装在其他盘上,比如D盘。
若这两个文件存在的话,可以通过以下方法把数据恢复。
解决方法:
(1)、把zt991文件夹备份好,卸载干净后,重新安装软件;
(2)、在“系统管理”创建991账套,启用年份及行业性质都与原账套相同。如果原来账套是多个年度的,则一定要建立年度账(比如001账套是2006年启用的,则要新建一个001账套,启用年份是2006年,并且要建立2007年和2008年的年度账)。这样在软件安装目录下会形成一个文件夹zt991。
(3)、将sqlserver服务关闭(可在任务栏中使用“sqlserver服务管理器”进行服务停止,或在控制面板--管理工具--服务中将mssqlserver服务停用)
(4)、将已经备份出去的zt991文件夹覆盖新的zt991文件夹。
(5)、重新启动sqlserver服务和U6的服务,然后登录U6应用程序,即可看到原账套中的信息,确认信息无误后,及时进行数据备份。
问题2:在系统管理中进行了账套备份,但是恢复账套的时候,提示“备份信息文件无效,恢复失败”。
引子:在系统管理中进行账套备份,形成两个文件:uferpactlst(通uf2kactlst)和ufdataba_。所以当出现这个提示的时候,先对这两个文件进行 *** 作。首先检查ufdataba_是否可以解压缩,如果解压缩失败,说明物理文件破坏,这时备份文件无效了(这时就要考虑用问题1中的方法来解决了)。如果解压缩成功,可以用以下两个方法来 *** 作。
解决方法一:还原数据
(1)、用产品自带的解压工具把ufdataba_文件解压。解压工具D:\U6SOFT\Admin\ ufuncompexe。双击这个文件,选择源文件,录入解压文件,把ufdataba_解压成ufdatabak,点击“解压缩”按钮。
(2)、在系统管理中新建一个账套,假定账套号是001。
(3)、在sql server 的企业管理器中,逐层展开树形结构,鼠标右键点击“数据库”,选择“所有任务”—“还原数据库”
(4)、进入“还原数据库”界面,从下拉列表中选择“还原为数据库ufdata_001_2008,“从设备”还原,然后点击“选择设备”。
(5)、进入“选择还原设备”,点击“添加”按钮,进入“选择还原目的”界面,点击“文件名”后的浏览按钮,选择ufdatabak文件所在的路径。然后点击“确定”按钮。
(6)、再点击“确定”按钮,又一次进入“还原数据库”界面,在“选项”页签下,选择“在现有数据库上强制还原”。
一定要注意逻辑文件名对应的“移至物理文件名”对应的路径是否正确。点击“确定”就可以了。
注:这样方法也适用于只有ufdataba_文件的情况下恢复数据,以及只对年度账数据进行恢复的情况。
解决方法二:把现有运行正常的账套进行备份,然后用记事本的方式打开uferpactlst文件,同时也打开恢复失败的账套的uferpactlst文件,参照自己备份出来的账套的uferpactlst文件,修改恢复失败的账套的uferpactlst文件,除了保留账套号外,其余不一致的地方都要修改。
可以先看下是否有备份,如果能找到备份那最好,直接从备份里还原一下就可以了。如果没有备份,那就只能通过数据恢复的方式尝试恢复了。不过数据恢复,只能找回未被覆盖的数据。自己可以用个软件扫描试试,看是否可以搜索到需要的文件。
以上就是关于数据库恢复可以用哪些方法实现全部的内容,包括:数据库恢复可以用哪些方法实现、如何在SQL Server中恢复数据、怎么恢复mysql数据库怎么恢复数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)