异步 AO 复制中的 SQL 数据库 - 备份后日志文件不收缩

Posted

技术标签:

【中文标题】异步 AO 复制中的 SQL 数据库 - 备份后日志文件不收缩【英文标题】:SQL Database in Asynchronous AO relication - Log file not shrining after backup 【发布时间】:2018-10-11 01:07:00 【问题描述】:

我有一个日志文件大小为 527GB 的数据库,显示几乎 100% 的使用率。数据库正在与另一个 SQL 服务器进行 AO 异步复制。数据库处于完全备份模式,并且每小时进行一次日志备份。我试图缩小日志文件,它没有用,给了我以下消息。

Msg 1468, Level 16, State 2, Line 2
The operation cannot be performed on database "MYDB" because it is involved in a database mirroring session or an availability group. Some operations are not allowed on a database that is participating in a database mirroring session or in an availability group.
Msg 5069, Level 16, State 1, Line 2
ALTER DATABASE statement failed.
The log for database 'MYDB' cannot be shrunk until all secondaries have moved past the point where the log was added..

(1 row(s) affected)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

我认为它没有这样做是因为复制所有日志都没有传输,并且一直如此。如何在不将数据库从 AO 复制组中取出的情况下解决该问题?我可以将它移到同步模式,但我不希望它移出 AO。

【问题讨论】:

【参考方案1】:

要检查问题的原因,请查看以下查询的结果(log_truncation_holdup_reason 字段):

select * from sys.dm_db_log_stats(db_id('YourDatabaseName'))

UPD:对于低于 2016 SP2 的版本,您可以使用查询获得相同的结果:

SELECT log_reuse_wait_desc
FROM sys.databases
WHERE name = 'YourDatabaseName'

如果是AVAILABILITY_REPLICA,则检查活动事务以了解可能导致它的原因。

dbcc opentran

根据结果,您将能够决定应该做什么。

【讨论】:

抱歉耽搁了。我在运行您的查询时收到此消息。 '无效的对象名称 sys.dm_db_log_stats'

以上是关于异步 AO 复制中的 SQL 数据库 - 备份后日志文件不收缩的主要内容,如果未能解决你的问题,请参考以下文章

Linux mysql 5.7.23 主从复制(异步复制)

sql SQL备份 - 将表数据复制到另一个表中。

定时备份SQL SERVER的数据库并且把备份文件复制到另外一台服务器

如何实现sql server实时备份数据库

MYSQL数据库的备份问题,直接复制可以吗?

sql 复制旧的访问日志数据并从当前备份表中删除