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被调整会正确状态,从而默默地修复了该问题。

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

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

posted on   笑东风  阅读(1760)  评论(2编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2014-01-16 Transaction And Lock--解决死锁/锁的几种有效方式
2014-01-16 Transaction And Lock--由Lookup导致的死锁情况
2014-01-16 Transaction And Lock--由外键导致的死锁
2014-01-16 CDC--Demo
2014-01-16 Transaction And Lock--在事务中使用TRY CATCH
2014-01-16 Transaction And Lock--存储过程中使用事务的模板
2014-01-16 Transaction And Lock--死锁错误号1205

导航

点击右上角即可分享
微信分享提示