物理トランザクションログファイルがミラーのプリンシパルである場合、どうすれば縮小できますか?


8

週末にデータベースミラーリングをセットアップしましたが、トランザクションログをバックアップするジョブを再度有効にするのを忘れていました。私が今朝来たとき、トランザクションログは58GBに膨れ上がっており、ドライブ容量のほとんどを占めていました。

トランザクションログをディスクに手動でバックアップして、データベースを再度実行しましたが、DBCC SHRINKFILEを実行しても、トランザクションログファイルの物理的なサイズは小さくなっていません。

DBCC SHRINKFILE (N'MyDatabaseName_Log', 1000)

を使用してログの使用状況を確認した場合

DBCC SQLPERF(LOGSPACE)

現在のログの22%だけが使用されていることがわかります

データベース名ログサイズ(MB)ログ使用領域(%)ステータス
MyDatabaseName 55440.87 22.38189 0

log_reuse_wait_descsys.databsesでチェックアウトした場合、表示される唯一のレコードはDATABASE_MIRRORINGなので、ログファイルの物理サイズが縮小されないのは、ミラーが役割を果たしていると思いますか?

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

また、プリンシパルデータベースミラーリングの状態がSuspendedであることにも気付きました。再開することは、次のエラーですぐに失敗します。

データベース 'MyDatabaseName'のリモートミラーリングパートナーでエラー5149、ステータス1、重大度25が発生しました。データベースミラーリングが一時停止されました。リモートサーバーのエラーを解決してミラーリングを再開するか、ミラーリングを削除してミラーサーバーインスタンスを再確立します。

ミラーサーバーのエラーログにはこのエラーも含まれますが、ログファイルドライブがいっぱいであることに関するエラーも含まれます

物理ファイルを拡張しようとしたときに、MODIFY FILEでオペレーティングシステムエラー112(ディスクに十分なスペースがありません。)が発生しました。

そして

F:\ Databaselogs \ MyDatabaseName_1.ldf:オペレーティングシステムエラー112(ディスクに十分なスペースがありません。)が発生しました。

プリンシパルサーバーのログファイルドライブには60 GBがあり(他のデータベースはここでホストされています)、ミラーサーバーには45 GBしかありません。

ログファイルをバックアップするとデータベースが再び使用できるようになりましたが、ディスク上の物理ログファイルのサイズを減らし、ミラーリングを再開したいと考えています。

ミラーリングやバックアップチェーンを犠牲にすることなく、物理トランザクションログファイルのサイズを縮小するにはどうすればよいですか?

SQL Server 2005を実行しています


セカンダリサーバーのSQL Serverエラーログには何がありますか?ミラーリングセッションが中断される原因となったエラーメッセージがいくつかあります。
トーマス・ストリンガー、

@ThomasStringer私は実際にこの質問に自分の答えを投稿しようとしていました...私の答えは、少なくともミラーを無効にして再度設定することなしにはできないと思います。ログファイル用に予約されたミラーサーバーのスペースは、プリンシパルサーバー(プリンシパルが他のデータベースをホストする)のスペースよりも小さく、ミラートランザクションログのサイズを減らす方法はありません。ミラーサーバーからのエラーメッセージで質問も更新しました
Rachel

回答:


2

私が言えることからは、私にはわかりません。

ログファイルの多くがミラーサーバーへのミラーリングを待機していると思いますが、ミラーリングされたトランザクションログもディスク上のすべてのスペースを占めるようになり、ミラーがダウンして再開できなくなります。

この理論は、ミラーリングを削除すると、DBCC SHRINKFILEコマンドによって物理ログファイルが正しく圧縮され、log_reuse_wait_desc待機中に戻るという事実によってさらに裏付けられます。LOG_BACKUP

ミラーサーバーのログファイルはミラーとして機能していて開くことができないため、縮小できません。そのため、ミラーは回復不可能だと思います。

そこで、ミラーを完全に削除し、すべてを再セットアップします(300GBデータベースでは非常に遅いプロセス)。今回は、ミラーを起動する前にトランザクションログのサイズがかなり小さいことを確認し、ミラーがバックアップされて実行されると、トランザクションログのバックアップが実行されることを確認します。

また、運用サーバーでトランザクションログが大きくなる可能性のあるサイズに制限を設定します。これにより、ミラーがトランザクションログをディスク上で利用可能なサイズを超えて大きくすることはありません。


1
別のオプションは、差分バックアップを取り、それをミラーに復元することです。うまくいかないかもしれませんが、あなたや他の誰かが再びこれに遭遇した場合は、試す価値があります。
cfradenburg 2013

@cfradenburgはい、そうしましたが、週末のバックアップのタイミングとミラーのディスク領域がいっぱいになったため、私の場合はうまくいきませんでした。ただし、ミラーを完全に削除してやり直すことを決定する前に、試してみる価値は間違いありません。
レイチェル

1

今日、私たちのDBで同じ問題に遭遇しました。DBは、何らかの理由で過去3か月間トランザクションログのバックアップを停止し、ログはすべて200GBに増加しました。

状況とまったく同じエラーコードとミラーリングは再開されません。ミラーでログドライブが完全にいっぱいになりました。

幸いにも、ログドライブ上の古いログをいくつか削除することで、領域を解放することができました。その後、ミラーリングを再開することができました。

次に、メンテナンスプランのバックアップに入り、データベースとトランザクションログのバックアップを手動でトリガーしました。バックアップ後でも、トランザクションログファイルは依然として巨大でした。そのため、SQL Studioに繰り返しログファイルを圧縮するように指示し(未使用の領域を解放する)、数時間かけて数回試行した後、それらをより扱いやすいサイズに削減しました。

お役に立てれば。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.