• SQLServer数据库使用日志备份还原至指定时间点


    SQLServer数据库使用日志备份还原至指定时间点

    现场正常情况:

             某客户数据库数据文件约1T,日志文件忽略大小,每日凌晨0点做数据库完整备份,每日中午12点做数据库差异备份。

    异常问题:

             某日晚19点01分,因某误操作,导致某大表近2亿条数据被删除,约19点30分,发现问题,客户分别在19点31分、19点50分、20点00分执行了日志备份(本文为了简化说明,假定备份均立即完成,实际备份过程中产生数据及耗时不做考虑),之后在20点30分做数据库全备,最后请求支持。

    支持处理操作:

             1、立即断开前台业务,确保不再有新业务写入(否则新写入的业务会在恢复时丢失)

             2、由于客户最后又做了一次数据库全备,因此可以直接忽略最后一次完备。协调客户使用新服务器。

             3、首先还原当日凌晨0点数据库备份,并将数据库处于还原模式

             4、继续还原当日12点数据库差异备份,同样处于还原模式(该步骤实际可以忽略)

             5、最后还原晚上做的第一次日志备份,注意还原时选择时间点为19点00分00秒,选在回滚事务。

             6、检查数据库数据情况,若仍有数据误删情况,考虑重复还原数据库日志(需要先将数据库调整成还原状态),并调整还原时间点。

    备注:

             第4步所谓的可以忽略是因为差异备份与完整备份之间相差时间不长,但假如情况如下:周一0点完备,周二、周三、周四、周五12点差异备份,在周五18点进行日志备份,此时想将数据恢复至17点。

    此时同样可以直接使用周一0点的完备+周五18点的日志备份。但日志备份数据量较大,耗时可能较长;也可以使用周一0点完备+周五12点差异备份,加周五18点日志备份,这样耗时相对较短。

    总结:

             日志恢复的重点在于上一次的完整备份,如果有多个日志备份,那么就按照时间先后顺序,逐个还原日志备份。

  • 相关阅读:
    __setattr__,__getattr__,__delattr__
    LeetCode 面试题42. 连续子数组的最大和
    LeetCode 53. 最大子序和
    LeetCode 面试题39. 数组中出现次数超过一半的数字
    LeetCode 169. 多数元素
    LeetCode 426.将二叉搜索树转化为排序的双向链表
    LeetCode 面试题36. 二叉搜索树与双向链表
    LeetCode 面试题35. 复杂链表的复制
    LeetCode 138. 复制带随机指针的链表
    LeetCode 面试题34. 二叉树中和为某一值的路径
  • 原文地址:https://www.cnblogs.com/moonliu/p/14266333.html
Copyright © 2020-2023  润新知