当物理事务日志文件是镜像中的主体时,如何缩小物理事务日志文件?


8

我们在周末设置数据库镜像,但是忘记重新启用备份事务日志的作业。今天早上我来的时候,事务日志已经膨胀到58GB,并占用了大部分驱动器空间。

我将事务日志手动备份到磁盘以使数据库再次运行,但是运行DBCC SHRINKFILE似乎并没有减小事务日志文件的物理大小。

DBCC SHRINKFILE (N'MyDatabaseName_Log', 1000)

如果我使用以下命令查看日志使用情况

DBCC SQLPERF(LOGSPACE)

我可以看到仅使用了当前日志的22%

数据库名称日志大小(MB)使用的日志空间(%)状态
MyDatabaseName 55440.87 22.38189 0

如果我log_reuse_wait_desc在sys.databses中签出,则看到的唯一记录是DATABASE_MIRRORING,因此我猜测镜像在为什么日志文件的物理大小不会缩小的过程中发挥了作用?

SELECT log_reuse_wait_desc
FROM sys.databases
WHERE name = N'MyDatabaseName';

我还注意到我的主要数据库镜像状态为Suspended,并且尝试立即恢复它失败,并出现以下错误:

数据库'MyDatabaseName'的远程镜像伙伴遇到错误5149,状态1,严重性25。数据库镜像已被挂起。解决远程服务器上的错误并恢复镜像,或者删除镜像并重新建立镜像服务器实例。

镜像服务器上的错误日志也包含此错误,但是还包含有关日志文件驱动器已满的错误

尝试扩展物理文件时,“修改文件”遇到操作系统错误112(磁盘上没有足够的空间。)。

F:\ Databaselogs \ MyDatabaseName_1.ldf:遇到操作系统错误112(磁盘上没有足够的空间。)。

主体服务器在日志文件驱动器上有60GB(此处托管了其他数据库),而镜像服务器只有45GB。

备份日志文件使数据库再次可用,但是我还想减小磁盘上物理日志文件的大小,并恢复镜像。

如何在不损害镜像或备份链的情况下缩小物理事务日志文件的大小?

我正在运行SQL Server 2005


辅助服务器在SQL Server错误日志中有什么?您应该有一些错误日志消息,指示发生什么原因导致挂起镜像会话。
Thomas Stringer

@ThomasStringer我实际上是要对这个问题发布自己的答案...我认为我的答案是,我不能,至少不能禁用镜像并重新设置它。镜像服务器上为日志文件保留的空间小于主体服务器(主要托管其他数据库)上的空间,并且我无法减小镜像事务日志的大小。我也用镜像服务器的错误消息更新了我的问题
Rachel

Answers:


2

据我所知,我不能。

我相信大部分日志文件都在等待镜像到镜像服务器,但是镜像已关闭并且无法恢复,因为镜像的事务日志也已经占用了磁盘上的所有空间。

一旦删除镜像,该DBCC SHRINKFILE命令就正确地收缩了物理日志文件,并且log_reuse_wait_desc又回到了等待状态这一事实进一步支持了这一理论。LOG_BACKUP

我无法在镜像服务器上收缩日志文件,因为它充当镜像并且无法打开,因此我认为镜像是不可恢复的。

因此,我将完全删除镜像,然后重新设置所有内容(使用300GB数据库的过程非常缓慢)。这次,我将确保在启动镜像之前事务日志的大小相当小,并且一旦备份并运行了镜像,就确保事务日志备份正在运行。

我还将设置事务日志在生产服务器上可以增长到多大的限制,因此镜像不会试图将其事务日志增长到磁盘上可用的大小之外。


1
另一种选择是进行差异备份并将其还原到镜像。它可能不起作用,但是如果您或其他任何人再次遇到此问题,则值得尝试。
cfradenburg 2013年

@cfradenburg是的,我确实尝试执行此操作,但是由于我周末的备份时间以及镜像上的磁盘空间已用尽,因此它在我的情况下不起作用。在决定完全删除镜像并重新开始之前,绝对值得尝试。
Rachel 2013年

1

今天,我们的数据库遇到了同样的问题,由于某种原因,该数据库在过去3个月中已停止备份事务日志,并且日志已全部减少到200GB。

与您的情况完全相同的错误代码,并且无法恢复镜像。镜像驱动器上的日志驱动器已完全装满。

幸运的是,我能够通过删除日志驱动器上的几个旧日志来释放一些空间。之后,便能够恢复镜像。

然后进入维护计划备份,并手动触发数据库和事务日志备份。即使在备份之后,事务日志文件仍然很大。因此,我不得不反复告诉SQL Studio缩小日志文件(释放所有未使用的空间),并且在几个小时后进行几次尝试之后,它会将它们缩减为更易于管理的大小。

希望这可以帮助。

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.