实际工作中,有时会直接在数据库中操作数据,比如对数据进行delete或者update操作,当进行这些操作的时候,如果没有加上 where条件或者where条件不合理,那么导致的结果可想而知,如果操作的又是线上数据库,那么这个后果将会非常严重。
当事情发生后,我们要想办法补救,针对于sqlserver2005数据库,有个很出名的工具Log Exploer。具体操作使用大家可以自行搜索;针对于sqlserver2008也有这样的工具,但是大多是需要付费的...我们尝试用 sqlserver的事务日志来恢复这些受影响的数据。
用事务日志恢复数据,需要两个必要条件:
1、正确的完整数据库的最后一次备份
如果没有数据库完整备份,是不能做事务日志备份的,所以建议创建数据库时,恢复模式一项,应当选择'完整'。
2、正确的即时点
即所要恢复到数据的时间点,这个时间点一般选择误操作发生时间往前一点的时间点,所以当误操作发生时,应尽量记下这个时间点,不然可能导致恢复的数据不够准确。比如,
误操作发生于16:00,这个时间点我们可以选择15:59,如果选择的太靠前,比如15:30,那么15:30--15:59这段时间内的数据就不能被恢复了。
下面记录具体的操作步骤:
首先新建一个数据库dbtest,注意创建数据库时恢复模式一项选择'完整',在数据库中新建一个Table_1,并插入一些数据,然后对该数据库做一个完整备份。
这个备份,主要是模拟实际工作中对数据库的备份,实际中由于数据库可能很大,所以一般备份是一天或者两天进行一次。
备份成功后,接着再往Table_1中插入几条数据, 模拟在原数据库基础上新增加的数据,然后执行一个sql语句:delete from Table_1,模拟误操作,并记录下时间,比如16:00.误操作发生后,我们要赶紧进行事务日志的备份,我们就是根据此备份来还原数据的。
事务日志备份完后,我们可以新建个数据库dbtest1,然后把之前备份的数据库在新建的数据中进行还原,之所以这么做,是因为用事务日志 恢复数据库需要获得数据库的独占访问权,如果在原库上进行恢复,那么这需要对原库停止对外服务,但是这样,可能会导致线上系统不能正常运行,造成非常大的 影响,所以我们新建个数据库用作数据的还原,而不影响线上系统的正常进行。最后把新库中还原回来的数据,再导入到原库中。
对dbtest1进行还原时,注意"选项"的配置
数据库还原成功后,此时dbtest1应为正在还原的状态:,接着对数据库进行还原:任务—>还原—>事务日志,
时间点选择误操作之前的一个时间点,比如15:59:59,然后确定,完成全部数据恢复操作。
下面的一段话源自其他帖子:
1、这是一般大型网站数据安全的一个办法,因为数据库比较大(可能有几百G)数据,做一次完整备份时间很长,而且影响数据库服务器的性能, 为保证数据安全,大多采用完整备份+事务日志备份来保证数据安全。例如:一天做一次或者2天做一次完整备份,几个小时内做一次日志备份。(当然可以用写一 个job来实现)
2、如SQL server 2005里的镜像就是采用的这种事务日志同步的方法保证数据的同步。
3、如果恢复的日志数据出现”LSN“太早和太晚说明了事务日志间的不连续。这时要注意备份 的时间和顺序。
参考文章:
SQL Server 2008数据库误删数据如何进行数据恢复
SQL Server 2008及更高版本数据库恢复方法之日志尾部备份
拯救你的数据 通过日志恢复MSSQL数据
以上就是本文的全部内容,希望对大家的学习有所帮助。
本文向大家介绍PostgreSQL 恢复误删数据的操作,包括了PostgreSQL 恢复误删数据的操作的使用技巧和注意事项,需要的朋友参考一下 在Oracle中;删除表或者误删表记录;有个闪回特性,不需要停机操作,可以完美找回记录。当然也有一些其他的恢复工具;例如odu工具,gdul工具。都可以找回数据。而PostgreSQL目前没有闪回特性。如何在不停机情况下恢复误删数据。还好是有完整的热备份。
误删数据恢复 用户覆盖或删除非归档类型object时,FDS会先将其移动至trash以防误删除。 Trash中数据默认保存7天,用户可以自行通过TTL规则调整,但最多为30天,详见TTL功能。 只有bucket owner可以查询和恢复trash中的数据。 列出已删除object Web控制台-trash管理里可以看到已删除的object。使用SDK时,listTrashObjects的操作与Li
本文向大家介绍MySQL数据库运维之数据恢复的方法,包括了MySQL数据库运维之数据恢复的方法的使用技巧和注意事项,需要的朋友参考一下 之前三篇文章分别介绍了MySQL数据库常见的备份方法,其中包括逻辑备份和物理备份,本篇将总结一下MySQL数据库的数据恢复相关内容。这些数据恢复方案在之前备份内容介绍时,此处总结一下恢复方案,并结合数据库的二进制日志做下数据恢复的示范! 一、恢复方案 1、数据量不
本文向大家介绍Mongodb数据库的备份与恢复操作实例,包括了Mongodb数据库的备份与恢复操作实例的使用技巧和注意事项,需要的朋友参考一下 写在前面 本文已经假设你已经安装好了Mongodb(2.6),并且已经开启了auth。 用户 首先我们添加备份和恢复数据所需的用户,这个用户需要有readWrite和userAdmin权限 备份 注:此命令是在控制台中执行 我们使用mongodump来进行
本文向大家介绍MySQL数据库误操作后快速回滚的方法,包括了MySQL数据库误操作后快速回滚的方法的使用技巧和注意事项,需要的朋友参考一下 基本上每个跟数据库打交道的程序员(当然也可能是你同事)都会碰一个问题,MySQL误操作后如何快速回滚?比如,delete一张表,忘加限制条件,整张表没了。假如这还是线上环境核心业务数据,那这事就闹大了。误操作后,能快速回滚数据是非常重要的。 binlog2sq
问题内容: 我想知道以下脚本是否可以某种方式进行优化。它确实在磁盘上写了很多东西,因为它可能删除了最新的行并重新插入它们。我正在考虑应用“在重复键更新中插入…”之类的东西,并发现了单行更新的一些可能性,但我不知道如何在的上下文中应用它。 编辑: 的架构,,,:http://pastebin.com/3tRVPPVi。 要点是更新列和中的内容。表上有一个触发器,可根据这些列设置列的值。 in是表中的