zoukankan      html  css  js  c++  java
  • 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点日志备份,这样耗时相对较短。

    总结:

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

  • 相关阅读:
    [TimLinux] myblog 创建第一个app
    [TimLinux] MySQL InnoDB的外键约束不支持set default引用选项
    [TimLinux] 养成一个习惯
    [TimLinux] myblog 页面Axure设计
    [TimLinux] MySQL 中的CASE/WHEN语法
    [TimLinux] Python Django myblog启动
    [TimLinux] Python 模块
    [TimLinux] JavaScript 获取元素节点的5种方法
    堆和栈的一点知识
    OpenCV2基础操作----直线、矩形、圆、椭圆函数的使用
  • 原文地址:https://www.cnblogs.com/moonliu/p/14266333.html
Copyright © 2011-2022 走看看