暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

运维日记丨SQLServer误删数据,需要跑路吗?

新运维新数据 2022-09-17
630

各位新朋友~记得先点蓝字关注我哦~


业务人员在进行误操作后删除某一张表中的数据,他们产生的第一反应


下面为大家讲解如何能通过日志备份来拯救业务人员误操作之后,将数据回滚到之前的样子(前提需要保证当天有过一次完整备份,不然数据只能在天国相见了。


首先,需要先进行一次日志备份

    BACKUP LOG [hzmc] TO  DISK = N'C:\bak\hzmc_log.bak' WITH NOFORMAT, NOINIT,  NAME = N'hzmc-事务日志 数据库 备份', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

    GO


    接下来,通过查询语句中查询出来之前做过误操作的DML语句是在什么时刻进行的,为之后回滚数据做好记录。

      SELECT
      [Transaction Name],
      [Current LSN],
      [transaction ID] tranID,
      [begin time],
      Description,
      operation,
      Context
      FROM ::fn_dbLog(NULL, NULL)

      通过该语句我们能查看到在2022/04/18 14:13:22有一次删除表中数据的操作,我们就当这个DML语句为业务人员误操作的语句。

      我们需要在其他的数据库中,用当天的完整备份以norecover模式还原好数据库,之后还原事务日志的时候选定之前查询出来的时间点进行recover还原。

        RESTORE LOG [hzmc] FROM  DISK = N'C:\hzmc_log.bak' WITH  FILE = 1,  NOUNLOAD,  STATS = 10,  STOPAT = N'2022-04-18T14:13:22'

        GO


        将之前的误操作后的表与当前恢复出来的表对比发现,数据被拯救回来了!

        每天定期执行完整备份在极大程度上保证了数据安全,在业务人员执行误操作情况,使得数据中的表更改或是删除部分数据,也能将数据在误操作前恢复回来,保证了数据在经历误操作后也能恢复到原有的样子。


        最后给大家科普一点小知识!
        数据备份能达到的目标:
        • 完全备份:是SQL Server所有备份类型中,最为简单、最基础的数据库备份方法,它提供了某个数据库在备份时间点的完整拷贝。但是,它仅支持还原到数据库备份成功结束的时间点,即不支持任意时间点还原操作。
        • 日志备份:事务日志备份记录了数据库从上一次日志备份或完整备份到当前时间内的所有事务提交的数据变更,它可以配合数据库完全备份和差异备份来实现时间点的还原.
        • 差异备份:差异备份是备份从上一次数据库全量备份以来的所有变更的数据页,所以差异备份相对于数据库完全备份而言往往数据空间占用会小很多。






        美创是国内领先的数据库服务提供商。服务团队拥有PG ACED 1名、Oracle&PG ACE 3人、DSI智库专家5名、DSMM测评师7名、OCM 20余人、数十名Oracle OCP、MySQL OCP、TDSQL TCP、OceanBase OBCP、TiDB PTCP、达梦 DCP、人大金仓、红帽RHCA、中间件weblogic、tuxedo、CISP-DSG、CISSP、CDGA、CDPSE、CZTP、CDSP等认证人员,著有《DBA攻坚指南:左手Oracle,右手MySQL》,《Oracle数据库性能优化方法和最佳实践》,《Oracle内核技术揭秘》,《Oracle DBA实战攻略》等多本数据库书籍。运维各类数据库合计5000余套,精通Oracle、MySQL、SQLServer、DB2、PostgreSQL、MongoDB、Redis、TDSQL、OceanBase、达梦、人大金仓等主流商业和开源数据库。美创拥有完善的运维体系和人员培养体系,并同时提供超融合、私有云整体服务解决方案、数据安全咨询及运营服务方案等,已为金融、政府、企业、能源等多个行业的客户提供量身定制的各类服务,赢得了客户的高度赞誉和广泛认可。



        文章转载自新运维新数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论