The transaction log for database 'xxxx' is full due to AVAILABILITY_REPLICA error message in SQL Ser...

原因:

在主副本上日志达到了最大空间或者磁盘满了。

分析

主副本的日志块要在其他副本上固话和redo后,才能复用。

所以如果

1.传送延迟,由于网络延迟或带宽延迟了发送。

2.重做延迟,堵塞或资源不足导致副本重做缓慢。

导致日志增大且不能备份下去。

log_send_queue_size:副本还未收到的日志块,多了代表传送延迟。

redo_queue_size:副本上还没有redo的日志块,多了代表redo延迟。

SELECT ag.name AS [availability_group_name]
, d.name AS [database_name]
, ar.replica_server_name AS [replica_instance_name]
, drs.truncation_lsn , drs.log_send_queue_size
, drs.redo_queue_size
FROM sys.availability_groups ag
INNER JOIN sys.availability_replicas ar
    ON ar.group_id = ag.group_id
INNER JOIN sys.dm_hadr_database_replica_states drs
    ON drs.replica_id = ar.replica_id
INNER JOIN sys.databases d
    ON d.database_id = drs.database_id
WHERE drs.is_local=0
ORDER BY ag.name ASC, d.name ASC, drs.truncation_lsn ASC, ar.replica_server_name ASC

解决方法:

1.在延迟最多的副本上移除该DB,以后在加入。

2.如果是副本上的redo thread频繁被读操作堵塞,那么将副本设置为不可读,后续在改回。

3.如果磁盘还有空间,则开启日志文件自动增长。

4.如果达到了最大空间限制且磁盘还有空间,就增大最大空间的限制。

5.如果日志文件达到了2T系统最大值且还有空闲磁盘,那么就增加日志文件。

参考资料

https://docs.microsoft.com/en-US/troubleshoot/sql/availability-groups/error-9002-transaction-log-large

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值