专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > SQL

SQL SERVER BUG-Alwayson日志备份出错

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
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被调整会正确状态,从而默默地修复了该问题。

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

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

1楼Joe.TJ
收拾是收缩的意思吧。,根据你的描述,我的推测和你的有一些出入:“来自主数据库的最后一个备份 LSN” 这个lsn应该是全备的last lsn。在全备没有完成期间又做了一次日志收缩,导致全备的last lsn增大,因为它要包括“足够”的日志来保证一致性。而last lsn增大后的值大于redo queue的max lsn,所以才报的这个错。你能看看msdb..backupset中那个全备的last lsn,并与报错的全备的lsn对比一下,验证我的推测是否正确吗?
Re: 笑东风
@Joe.TJ,手误,是收缩!,,正常情况下,copy_only备份操作不应该影响lsn,要不然也不能算COPY ONLY,而且如果没有收缩操作,在COPY_ONLY完整备份的同时做日志备份没有任何问题。,,完备需要保留“足够”的日志来保证数据一致性,但保留日志和修改LSN不相关啊。及时在主库上做非COPY_ONLY的完备,也不应该修改LSN,导致两次日志备份因为LSN问题失败啊。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: