• 数据库备份checksum选项你会用么?


       SQL SERVER有好多好多功能,选项也一大堆,很多功能选项并不常用。但是如果真有这种需求的时候又想不起来~

       本篇我们就来聊聊备份里的选项checksum,这是个啥玩意?听都没听过?来看下图:

       

       就是这个选项!不知道各位看官是否知道是干什么的?怎么用? 我询问了几个群友都没用过,正好手头有环境,那么我就用例子给大家演示一下吧!

    --------------博客地址---------------------------------------------------------------------------------------

    Expert 诊断优化系列 http://www.cnblogs.com/double-K/

     

    废话不多说,直接开整-----------------------------------------------------------------------------------------

      首先我们看一下微软官方文档给的说明:

    错误管理选项

    使用这些选项可以确定是否为备份操作启用了备份校验和,以及备份操作是否将在遇到错误时停止。

    { NO_CHECKSUM | CHECKSUM }
    控制是否启用备份校验和。

    NO_CHECKSUM
    显式禁用备份校验和的生成(以及页校验和的验证)。 这是默认行为。

    CHECKSUM
    如果此选项已启用并且可用,则指定备份操作将验证每页的校验和及页残缺,并生成整个备份的校验和。

    使用备份校验和可能会影响工作负荷以及备份吞吐量。

      这也许是大多数人的了解“启用了备份校验和,备份操作将在遇到错误时停止”,因为看过官方文档知道怎么用,手头正好有坏库,正好做个示范~

      我们先看一下DBCC CHECKDB的结果 ,目的只是告诉你这是一个有坏页的数据库!

      

      好了,那我们做一下备份看看!

      正常的备份,不加 checksum 成功备份!

      

      

      加上checksum备份,失败!

      

      好像果然和微软文档说的一样!看到这有些看官会想,这不和我做CHECKDB差不多了么?

      

      博主别的不多就是坏库多! 我们再拿一个库试一下!

      我们先看一下DBCC CHECKDB的结果 ,目的只是告诉你也这是一个有坏页的数据库!

      

      我们用checksum 备份一下

      

       哦??成功了???这是啥意思??

       我们先来看一下 backupset的结果 :

       

       那么损坏的页没check出来?我们再看一下 suspect_pages

       

        

        suspect_pages里只查出了Test 库的坏页,那我XB28_3库的坏页哪里去了?

        突然想到 suspect_pages 里面的数据只是 823 错误或 824 错误而失败的页!

        而且使用checksum系统表会被漏掉,本文中XB28_3库的坏页就是一个object_id = 60的 系统表!

         而且并不是数据库中所有的页都会被叫上页校验和,当页损坏发生时,IO系统可不会区分损坏的页是有页校验和还是没有校验和的。所以使用BACKUP ... WITH CHECKSUM就有可能导致一些损坏页不被发现

      

        这也说明备份时使用checksum不能完全取代DBCC checkDB的作用,这和Paul Randal大神的文章一致 : A SQL Server DBA myth a day: (27/30) use BACKUP WITH CHECKSUM to replace DBCC CHECKDB

    --------------博客地址---------------------------------------------------------------------------------------

    Expert 诊断优化系列 http://www.cnblogs.com/double-K/

     

    -----------------------------------------------------------------------------------------------------

      

      总结 :备份的checksum 选项可以用来发现数据库是否损坏,但不是所有类型的坏页都可以发现。

          看官们的疑问:backup with checksum 可以用来取代DBCC checkDB。

         这个观点是不正确的,一些逻辑一致性错误checksum是没法发现的!

            

         数据库损坏不是很常见,很多DBA工作好多年都没有遇到,但是做好CHECKDB检查还是很必要的!万一出现你没有发现就比较悲剧了!

       

      PS : 差异备份也可以使用checksum,但只会校验差异部分~

     ----------------------------------------------------------------------------------------------------

    注:此文章为原创,欢迎转载,请在文章页面明显位置给出此文链接!
    若您觉得这篇文章还不错请点击下右下角的推荐,非常感谢!

  • 相关阅读:
    数据库根据两列数据得到层级关系SQL Queries to Manage Hierarchical or Parent-child Relational Rows in SQL Server
    escape from braxis site:us.forums.blizzard.com
    LEFT JOIN vs. LEFT OUTER JOIN in SQL Server
    Why do I have more rows after LEFT JOIN?
    Why is the IIS default app pool recycle set to 1740 minutes?
    IIS Best Practices
    USB挂载&U盘启动
    OPKG 介绍
    OPKG 配置
    OPKG 软件包管理
  • 原文地址:https://www.cnblogs.com/double-K/p/5611811.html
Copyright © 2020-2023  润新知