zoukankan      html  css  js  c++  java
  • SQL SERVER BUG--Alwayson日志备份报错

    数据库版本 SQL SERVER 2012 企业版,版本号:11.0.5582.0

    问题场景: 数据库配置Alwayson环境,同机房2节点同步自动切换+跨机房异步,在异步机房中选取同一节点做完整备份和日志备份,完整备份为COPY_ONLY方式,完整备份从0:35开始至1:40成功结束,日志备份从00:00开始每15分钟一次日志备份。DBA在0:48左右手动对数据库日志文件进行一次收拾操作,收缩操作顺利完成,未报任何错误。主数据库处于正常提供服务,每15分钟产生约200MB的日志备份文件(压缩备份方式)。

    下面是备份出错情况:

    0:30 备份成功
    0:45 备份成功
    1:00 备份成功
    1:15 备份失败
    1:30 备份失败
    1:45 备份成功

    错误信息:

    2017-01-16 01:15:09.59 *** 错误: 备份 对于 服务器“SERVER_XXXX”失败。 (Microsoft.SqlServer.SmoExtended) ***
    2017-01-16 01:15:09.59 *** 错误: 执行 Transact-SQL 语句或批处理时发生了异常。(Microsoft.SqlServer.ConnectionInfo) ***
    2017-01-16 01:15:09.59 *** 错误: 辅助副本上数据库“DB_XXX”的日志备份失败,因为来自主数据库的最后一个备份 LSN (0x000840fc:00000420:0001)大于当前本地重做 LSN (0x000840fc:00000418:0001)。此时不需要备份任何日志记录。请在以后重试该日志备份操作。
    BACKUP LOG 正在异常终止。(.Net SqlClient Data Provider) ***

    该问题在无人干涉条件下自动恢复,因事务日志备份作业失败被发现。

    --=========================================================================--

    原因猜测:

    单独对类似配置的数据库做日志文件收拾操作不会有类似问题,而单独对类似配置的数据库做COPY_ONLY也不会出现问题,很有可能是因为在做COPY_ONLY的完整备份时做日志文件收缩导致。

    虽然COPY_ONLY从字面意思上理解不会对日志文件有任何影响,但完整备份期间会影响到CHECKPOINT操作,CHECKPOINT操作又影响到数据库日志,由于在辅助节点上进行完整备份,因此主节点和辅助节点之间必定达成一致来避免CHECKPOINT问题,但此时DBA手动执行数据库日志收缩被当成“一个事务日志备份”来处理,因此报主数据库最后一个备份LSN大于本地重做LSN。

    最后当完整COPY_ONLY备份完成后,主数据库上的最后一个备份LSN被调整会正确状态,从而默默地修复了该问题。

    --=========================================================================--

    夜深啦,随便找个妹子镇贴,各位凑合下!

  • 相关阅读:
    oracle 导入数据时提示只有 DBA 才能导入由其他 DBA 导出的文件
    oracle 常用语句
    android udp 无法收到数据 (模拟器中)
    android DatagramSocket send 发送数据出错
    AtCoder ABC 128E Roadwork
    AtCoder ABC 128D equeue
    AtCoder ABC 127F Absolute Minima
    AtCoder ABC 127E Cell Distance
    CodeForces 1166E The LCMs Must be Large
    CodeForces 1166D Cute Sequences
  • 原文地址:https://www.cnblogs.com/TeyGao/p/6288349.html
Copyright © 2011-2022 走看看