无法截断事务日志log_reuse_wait_desc-AVAILABILITY_REPLICA


9

今天早上,我被我们的数据库之一的事务日志已满警报惊醒。该服务器是Alwayson群集,也是事务复制订阅服务器。我检查了log_reuse_wait_desc,它显示了logbackup。某人四天前不小心禁用了日志备份作业,我重新启用了日志备份作业,日志被清除。从凌晨4点开始,我想我将在那天早上晚些时候去上班,因为日志已经增长到400GB,所以请顺便去。

上午10点-我在办公室,我在缩小之前检查日志使用率,大约是16%。我很惊讶,检查显示复制的log_reuse_wait_desc。我很困惑,因为这是一个复制订户。然后,我们看到该数据库已启用CDC,并认为这可能是原因,因此禁用了CDC,现在log_reuse_wait_desc显示了AVAILABILITY_REPLICA。

同时,日志使用量仍在稳定增长,目前为17%。我检查了Alwayson仪表板,并检查了已发送和重做队列,两者实际上都为零。我不确定为什么日志重用显示为AVAILABILITY_REPLICA并且无法清除日志。

知道为什么会这样吗?

Answers:


7

如果您这样做:

SELECT * FROM sys.databases

log_reuse_wait_desc显示AVAILABILITY_REPLICA,这意味着SQL Server正在等待将日志数据发送到您的Always On可用性组副本之一。其中一个副本可能由于网络速度较慢而落后,或者完全关闭。

如果检查AG仪表板,但它没有显示队列,则可能是线程耗尽的受害者。AG仪表板在工作线程耗尽后停止更新是一个已知问题您需要直接检查每个副本上的状态,而不是依赖主副本。尼克在“连接”项中的注释中说,您可以更改副本的属性以重新启动复制,但这并不总是可行的(特别是如果副本上有数百个数据库,并且需要发送大量数据,并且重新启动复制只会再次导致工作线程耗尽。)

如果最后一个家伙设置了AG副本并且不应该再存在了,那么该删除该AG和/或副本了。请注意,应用程序不要指向侦听器名称以连接到SQL Server。


如果将辅助服务器设置为异步模式会不会很重要?如果辅助日志关闭(等待修复),主日志是否会继续增长?谢谢!
迈克尔

只要辅助节点仍在AG中(无论它是打开还是关闭,同步还是异步),日志数据都将继续堆积。毕竟,当重新打开辅助电源时,它必须从某个地方获取数据,对吗?这就是为什么如果它在一段时间内损坏了,通常最好从AG中删除它,然后从备份中重新初始化它。
布伦特·奥扎
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.