从数据库的完整日志模式还原误删除的数据的解决办法
SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可。但是,这个恢复需要有两个前提条件:
1 至少有一个误删除之前的数据库完全备份。
2 数据库的恢复模式(Recovery mode)是“完整(Full)”。
针对这两个前提条件,会有三种情况:
情况一、如果这两个前提条件都存在,通过SQL语句只需三步就能恢复(参考文章),无需借助第三方工具。
a) 备份当前数据库的事务日志:BACKUP LOG [数据库名] TO disk= N'备份文件名' WITH NORECOVERY
b) 恢复一个误删除之前的完全备份:RESTORE DATABASE [数据库名] FROM DISK = N'完全备份文件名' WITH NORECOVERY, REPLACE
c) 将数据库恢复至误删除之前的时间点:RESTORE LOG [数据库] FROM DISK = N'第一步的日志备份文件名' WITH STOPAT = N'误删除之前的时间点' , RECOVERY
情况二、如果第1个前提条件不存在,第2个前提条件存在,需要借助第三方工具。
情况三、如果第2个前提条件不存在,无法恢复。所以,一定要将数据库恢复模式设置为“完整(Full)”。
我现在面临的是第二种情况,需要找第三方工具。
开始找的是Log Explorer for SQL Server,不支持SQL Server 2008。
后来找的是SQL Log Rescue,也不支持SQL Server 2008。
接着找到的是SysTools SQL Recovery,支持SQL Server 2008,但需要购买,Demo版并没有数据恢复功能。
最终在officerecoverycom上找到Recovery for SQL Server,虽然也是商业软件,需要购买,但Demo版可以恢复数据,只要数据库文件不超过24Gb。幸好朋友的数据库文件不大,用它完成了误删除数据的恢复。
下面分享一下用Recovery for SQL Server进行恢复的 *** 作步骤:
1 运行Recovery for SQL Server
2 点击菜单中的 File > Recover,选择要恢复的数据库的数据文件(mdf)
3 Next > Next,进入 Recovery Configuration 界面,选择Custom(选择了Custom才可以选择从日志中恢复误删除的数据)。
4 Next 进入 Recovery options 窗口,选中 Search for deleted records,并选择要恢复的数据库的日志文件路径(log file path)。
5 Next 并选择目标文件夹(Destination folder),用于存放恢复过程中生成的SQL语句与bat文件。
6 点击Start,开始恢复 *** 作(在上一步选择的目标文件夹中生成相应的SQL文件与Bat文件),然后,出现 SQL Server Database Creation Utility 窗口。
7 Next,选择被恢复数据存放的目标数据库。
8 Next, 选择 Import availiable data from both database and log files
9 Next, Next, 然后就完成数据的恢复!
小刚SEO为你解答
MySQL备份和还原,都是利用mysqldump、mysql和source命令来完成的。
1Win32下MySQL的备份与还原
11 备份
开始菜单 | 运行 | cmd |利用“cd /Program Files/MySQL/MySQL Server 50/bin”命令进入bin文件夹 | 利用“mysqldump -u 用户名 -p databasename >exportfilename”导出数据库到文件,如mysqldump -u root -p voice>voicesql,然后输入密码即可开始导出。
12 还原
进入MySQL Command Line Client,输入密码,进入到“mysql>”,输入命令"show databases;",回车,看看有些什么数据库;建立你要还原的数据库,输入"create database voice;",回车;切换到刚建立的数据库,输入"use voice;",回车;导入数据,输入"source voicesql;",回车,开始导入,再次出现"mysql>"并且没有提示错误即还原成功。
2Linux下MySQL的备份与还原
21 备份
[root@localhost ~]# cd /var/lib/mysql (进入到MySQL库目录,根据自己的MySQL的安装情况调整目录)
[root@localhost mysql]# mysqldump -u root -p voice>voicesql,输入密码即可。
22 还原
法一:
[root@localhost ~]# mysql -u root -p 回车,输入密码,进入MySQL的控制台"mysql>",同12还原。
法二:
[root@localhost ~]# cd /var/lib/mysql (进入到MySQL库目录,根据自己的MySQL的安装情况调整目录)
[root@localhost mysql]# mysql -u root -p voice<voicesql,输入密码即可。
摘要 本文探讨了基于 IBM DB 的各种数据库备份与恢复策略 并附有完整的实验步骤 本文试图通过具体的实验使读者领会各种数据库备份方式的优劣和异同 并掌握 IBM DB 的数据库备份与恢复技术
若无特殊说明 以下数据库备份与恢复的试验环境均为 Windows XP + IBM DB V 企业版 同样的语句也在 AIX + IBM DB V 上验证通过
一 数据库备份的重要性
在信息日趋发达的时代 数据显得尤其重要 如何保障数据的完整性和安全性呢?如何避免数据灾难事故的发生呢?数据库备份作为数据安全和完整最有利保障手段的重要性就不言而喻了
数据库备份的重要性主要体现在
提高系统的高可用性和灾难可恢复性 (在数据库系统崩溃的时候 没有数据库备份怎么办!?)
使用数据库备份还原数据库是数据库系统崩溃时提供数据恢复最小代价的最优方案 (总不能让客户重新填报数据吧!?)
没有数据就没有一切 数据库备份就是一种防范灾难于未然的强力手段 (没有了数据 应用再花哨也是镜中花水中月)
对于DBA来说 最首要也是最重要的任务就是数据库备份
二 DB 数据库备份的方式与分类
按照数据库备份对数据库的使用影响来划分
A 联机备份(也称热备份或在线备份)
B 脱机备份(也称冷备份或离线备份)
说明 联机备份和脱机备份最大的不同在于 联机备份数据库时 数据库仍然可以供用户使用 而脱机备份数据库则不行 脱机备份数据库时 必须断开所有与数据库有连接的应用后才能进行
按照数据库的数据备份范围来划分
A 完全备份
B 增量备份
说明 完全备份数据库是指备份数据库中的所有数据 而增量备份只是备份数据库中的部分数据 至于增量备份到底备份哪些数据 稍候会提到
增量备份的两种实现方式
A 增量备份(也称累计备份)
B delta备份
说明 这两种备份方式的严格定义如下
增量备份是自最近成功的完全备份以来所有更改的数据的备份
delta 备份则是上一次成功的完全 增量或 delta 备份以后所做更改的数据的备份
这里请读者们仔细的看上面两个增量备份方式的定义 注意这两种备份方式的细微差别 这里我们举一个例子来说明
假设有一个数据库 它每天都有部分数据在发生变化 我们星期一晚上对该数据库做了一次完全备份 星期二晚上对该数据库做了一次增量备份A(注 这里的增量备份是指累计备份 下同) 星期三晚上又做了一次增量备份B 星期四则做了一次delta 备份
那么 我们可以得出以下结论
星期一的数据库备份包含了所有的数据
星期二没有变动过的数据没有发生备份 在星期二变动过的数据会备份 并且备份到增量备份A中
星期三的备份中含有自星期一完全备份以来发生过变动的所有数据 包含了星期二和星期三发生过变动的数据 显然 增量备份A 被 增量备份 B 包含
星期四做的是delta备份 注意 它会也只会备份自星期三备份之后变动过的数据
三 DB 备份文件的结构介绍
在不同的 *** 作系统下 DB 的备份文件的结构是不同的 这里概要地介绍一下
Windows *** 作系统下的数据库备份文件结构
说明 Windows *** 作系统下的数据库备份文件是嵌套在一系列文件夹之下的特殊结构 上例中 D:\DB _Train 是指备份目录 TESTDB 是指数据库名称为 TESTDB DB 是指实例名称 NODE 是指节点名称 CATN 是指编目名称 是指备份发生的年月日 形如YYYYMMDD 是指备份发生的时间 精确到秒 也就是指 点 分 秒 形如HHMMSS 最后的 则是备份文件的一个序列号
Unix *** 作系统下的数据库备份文件结构
说明 Unix *** 作系统下的数据库备份文件就是一个文件 上例中 HTDC 是指数据库名称 db inst 是指实例名称 NODE 是指节点名称 CATN 是指编目名称 是指备份发生的具体时间 形如YYYYMMDDHHMMSS 同样地 它的时间精确到秒 也就是指 年 月 日 点 分 秒发生备份 最后的 则是备份文件的一个序列号
四 DB 数据库备份实验(附完整命令脚本清单)
DB 数据库实验准备工作
( ) Step 创建测试数据库 TestDB
脚本清单 CREATE DATABASE TestDB ON D: USING CODESET GBK TERRITORY CN WITH Pjj s Test DB ; }
( ) Step 创建数据库管理表空间 Data_SP(注意路径 如果没有请创建)
脚本清单 CREATE REGULAR TABLESPACE Data_SP PAGESIZE K MANAGED BY DATABASE USING ( FILE D:\DB \Container\TestDB\UserData\UserData ) BUFFERPOOL IBMDEFAULTBP;
说明 上面的脚本创建了一个名为 Data_SP 的数据库管理表空间 该表空间使用的缓冲池为 IBMDEFAULTBP 存储路径为 D:\DB \Container\TestDB\UserData\ 存储文件名为 UserData 大小为 K = M 页大小为 K
( ) Step 创建测试表 TestTable 并插入测试数据
脚本清单
CREATE TABLE TestTable ( ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH INCREMENT BY NO CACHE ) Message VARCHAR( ) PRIMARY KEY(ID) )IN Data_SP;
插入测试数据 INSERT INTO TestTable(Message) VALUES( 测试表建立成功 );
说明 建立测试表并插入数据是为了稍候验证数据库恢复的时候用的
( ) Step 创建测试表 TestTable 并插入测试数据
脚本清单 CREATE TABLE TestTable ( ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH INCREMENT BY NO CACHE ) Message VARCHAR( ) PRIMARY KEY(ID) )IN Data_SP;
插入测试数据 INSERT INTO TestTable(Message) VALUES( 测试表建立成功 );
DB 数据库脱机备份与恢复实验
脚本清单
Step 完全备份数据库(脱机 备份时间戳记为 )
db backup db TestDB to D:\DB _Train
Step 模拟灾难 强制删除数据库
db drop db TestDB
Step 根据该数据库完全备份还原数据库
db restore db TestDB from D:\DB _Train taken at
DB 数据库增量备份与恢复实验
脚本清单
数据库增量备份以及还原实验
修改数据库参数 TrackMod 使之支持数据库进行增量备份
db update db cfg using TrackMod YES
更改参数后必须完全离线备份数据库(脱机 备份时间戳记为 )
db backup db TestDB to D:\DB _Train
插入测试数据
INSERT INTO TestTable(Message) VALUES( 开始增量数据库备份测试 );
开始增量备份(脱机 备份时间戳记为 )
db backup db TestDB incremental to D:\DB _Train
删除数据库 模拟数据灾难
db drop db TestDB
首先还原至完全离线备份状态
db restore db TestDB from D:\DB _Train taken at
还原至增量离线备份状态
db restore db TestDB incremental automatic from D:\DB _Train taken at
注意 上述语句中 有一个 automatic 它表示无论有多少个增量备份 系统将全自动检索恢复数据库的顺序并自动恢复数据库 如果没有 automatic 则需要多次手动恢复数据库 很麻烦而且容易出错
Step 根据该数据库完全备份还原数据库
db restore db TestDB from D:\DB _Train taken at
还原数据库后查询测试表数据检验数据是否恢复成功
DB 数据库联机机备份与恢复实验
说明 联机备份数据库可以使数据库在备份的同时仍然保持在可用状态 要让数据库支持联机备份 必须更改数据库的日志归档方式 在脱机备份模式下 数据库采用循环日志方式记录数据库日志 在联机备份模式下 数据库则采用归档日志的方式备份数据库日志 另外 对于联机备份的数据库来说 活动日志和归档日志就很重要了 一定要经常备份 保存
脚本清单
数据库联机备份以及还原实验
连接至数据库并插入测试数据
db connect to TestDB
插入测试数据
INSERT INTO TestTable(Message) VALUES( 开始联机数据库备份测试 完全备份 );
修改数据库参数 使之支持在线联机备份
db update db cfg for TestDB using logretain on trackmod on
执行增量 在线备份之前必须执行离线全备份一次 否则数据库将处于备份暂挂的不可用状态
(联机完全备份 时间戳记 )
db backup db TestDB
连接至数据库并插入测试数据
db connect to TestDB
插入测试数据
INSERT INTO TestTable(Message) VALUES( 开始联机数据库备份测试 增量备份 );
执行联机备份 备份同时再打开一个会话 模拟应用在线(联机增量备份 时间戳记 )
db backup db TestDB online incremental to D:\DB _Train
模拟灾难 删除数据库!
重要 此前一定要将活动日志文件备份至另一个路径 保存好 本例中 活动日志保存在 C:\db admin 下
db drop db TestDB
根据在线完全备份恢复数据库
db restore db TestDB from D:\DB _Train taken at
根据在线增量备份恢复数据库
db restore db TestDB incremental automatic from D:\DB _Train taken at
恢复后的数据库处于前滚暂挂的不可用状态
db connect to TestDB
前滚数据库 并指定归档日志位置 重要!
db ROLLFORWARD DATABASE TESTDB TO END OF LOGS AND PLETE OVERFLOW LOG PATH ( C:\db admin )
五 综述
对于数据库管理人员或者维护人员来说 怎么强调数据库备份的重要性都不为过
希望本文能抛砖引玉 能让大家对 IBM DB UDB 的数据库备份与恢复有一些深入的认识 也希望大家能在本机上按照本文的脚本认真的做一次实验 这样 你的认识会更加深刻
lishixinzhi/Article/program/Oracle/201311/18590
《临危不惧》(包光磊)电子书网盘下载免费在线阅读
资源链接:
bp3c
书名:临危不惧
作者:包光磊
出版社:电子工业出版社
出版年份:2012-7-1
页数:345
内容简介:
《临危不惧:Oracle 11g数据库恢复技术》分为三大部分:恢复的原理、恢复的工具、恢复的具体步骤与实战。第一部分能够让读者领略恢复 *** 作的本质,是其他部分的理论基础,包括“重做日志”、“控制文件”、“补充日志”;第二部分详细地介绍了备份/恢复数据库的工具,包括恢复管理器、恢复编录和数据泵;第三部分以各种数据库损毁场景为例,每一章解决一组特定的问题,其中:第7~11章讨论各种文件(控制文件、数据文件等)遭到不同程度的破坏后,数据库的行为特征及如何将其恢复;第12章探讨如何将数据库恢复至以前的时间点;第13章讨论如何处理各种数据库文件在没有备份时受损的情况;第14章全面介绍了用于恢复人为错误的各种闪回技术:第15章介绍将恢复的单位缩小,精确到数据块级别,以提高恢复效率;第16章介绍一种非常规恢复的方法一挖掘日志。
作者简介:
包光磊 Todd Bao,Oracle University首席讲师,Oracle University ADF课程亚太首席指导官,Oracle University RAC课程亚太首席指导宫
OCM认证大中华区考官,国内首位11g OCM(Oracle认证数据库大师),国内第二位10g OCM(Oracle认证数据库大师)
Oracle认证数据库集群专家,Oracle认证中间件专家,从2004年以来一直致力于为国内大型企业与跨国公司提供Oracle数据库、中间件和ADF的系统培训及咨询服务,对象涵盖各大通信公司、银行、金融、生产制造行业、解决方案供应商等。
多次受邀主讲Oracle Open World OU Session及Oracle University大师班中的重要议题,拥有极其丰富的Oracle核心技术和软件的应用、实施、管理和开发经验。
于2006年、2007年、2010年与2011年被Oracle公司授予Oracle University年度全球最佳讲师荣誉称号。
数据存储及恢复第一步--分区当主引导记录因为各种原因(硬盘坏道、病毒、误 *** 作等)被破坏后,一些或全部分区自然就会丢失不见了,根据数据信息特征,我们可以重新推算计算分区大小及位置,手工标注到分区信息表,“丢失”的分区回来了。
数据存储及恢复第二步--文件分配表硬盘分区完毕后,接下来的工作是格式化分区。格式化程序根据分区大小,合理的将分区划分为目录文件分配区和数据区,文件分配表内记录着每一个文件的属性、大小、在数据区的位置。我们对所有文件的 *** 作,都是根据文件分配表来进行的。文件分配表遭到破坏以后,系统无法定位到文件,虽然每个文件的真实内容还存放在数据区,系统仍然会认为文件已经不存在。我们的数据丢失了,就像一本小说的目录被撕掉一样。要想直接去想要的章节,已经不可能了,要想得到想要的内容(恢复数据),只能凭记忆知道具体内容的大约页数,或每页(扇区)寻找你要的内容。我们的数据还可以恢复回来。
数据存储及恢复第三步--格式化与删除当我们需要删除一个文件时,系统只是在文件分配表内在该文件前面写一个删除标志,表示该文件已被删除,他所占用的空间已被释放, 其他文件可以使用他占用的空间。所以,当我们删除文件又想找回他(数据恢复)时,只需用工具将删除标志去掉,数据被恢复回来了。当然,前提是没有新的文件写入,该文件所占用的空间没有被新内容覆盖。格式化是将所有文件都加上删除标志,或干脆将文件分配表清空,系统将认为硬盘分区上不存在任何内容。格式化 *** 作并没有对数据区做任何 *** 作,目录空了,内容还在,借助数据恢复知识和相应工具,数据仍然能够被恢复回来。
数据存储及恢复第四步--理解覆盖个文件被标记上删除标志后,他所占用的空间在有新文件写入时,将有可能被新文件占用覆盖写上新内容。这时删除的文件名虽然还在,但他指向数据区的空间内容已经被覆盖改变,恢复出来的将是错误异常内容。同样文件分配表内有删除标记的文件信息所占用的空间也有可能被新文件名文件信息占用覆盖,文件名也将不存在了。
当将一个分区格式化后,有拷贝上新内容,新数据只是覆盖掉分区前部分空间,去掉新内容占用的空间,该分区剩余空间数据区上无序内容仍然有可能被重新组织,将数据恢复出来。
同理,克隆、一键恢复、系统还原等造成的数据丢失,只要新数据占用空间小于破坏前空间容量,数据恢复工程师就有可能恢复你要的分区和数据。
数据存储及恢复第五步--硬件故障数据恢复。硬件故障的数据恢复当然是先诊断,对症下药,先修复相应的硬件故障,然后根据修复其他软故障,最终将数据成功恢复。
数据存储及恢复第六步--磁盘阵列RAID数据恢复其恢复过程也是先排除硬件及软故障,然后分析阵列顺序、块大小等参数,用阵列卡或阵列软件重组,重组后便可按常规方法恢复数据。
SAN和NAS是目前最受人瞩目的两种数据存储方式:
SAN:一个共用的高速专用存储网络,存储设备集中在服务器的后端。其优势:高数据传输速度;加强存储管理;加强备份、还原能力的可用性;同种服务的综合。综合SAN的优势,它在高性能数据备份/恢复、集中化管理数据及远程数据保护领域得到广泛的应用。
NAS:是一个专用为提供高性能、低拥有成本和高可靠性的数据保存和传送产品。其优势:移除服务器I/O瓶颈;简便实现NT与UNIX下的文件共享;简便的设备安装管理与维护;按需增容,方便容量规划;高可靠性;降低总拥有成本。
更多的数据存储解决方案趋向于将NAS和SAN进行融合。原因:
·一些分散式的应用和用户要求访问相同的数据
· 对提供更高的性能,高可靠性和更低的拥有成本的专有功能系统的高增长要求
·以成熟和习惯的网络标准包括TCP/IP, NFS和CIFS为基础的 *** 作
·一个获得以应用为基础而更具商业竞争力的解决方案欲望
·一个全面降低管理成本和复杂性的需求
·一个不需要增加任何人员的高扩展存储系统
·一套可以通过重构划的系统以维持硬件和管理人员的价值
以上就是关于如何从数据库的完整日志模式还原误删除的数据全部的内容,包括:如何从数据库的完整日志模式还原误删除的数据、如何进行数据库备份和恢复 mysql、浅谈IBMDB2的数据库备份与恢复等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)