レプリケーション(マージとトランザクション用に構成されたパブリケーション)に関係するパブリッシャーにデータベースがあります。この特定のデータベースのログファイル(VLFカウント、サイズなど)の制御を回復しようとしています。
ログファイルのメンテナンスを実行する前に、レプリケーション設定で行う必要がある(または注意する)ことはありますか?私は複製の分野の専門家ではないので、どのような対策を講じるべきかについてのガイダンスを提供する確かなものは何も見つかりません。
編集:これにはディストリビューションデータベースでの作業も含まれます。何らかの理由でデータ保持がまったく構成されていません。
データベースの自動拡張の設定に最初に集中します。頻度が高すぎて正しくない自動拡張が原因で、トランザクションログファイルを読み取るプロセスに影響を与える大量の内部ログの断片化が発生する可能性があるためです(例:レプリケーション、CDC、バックアップなど)そしてVLFの数を急増させます。ログファイルはゼロに初期化できないためゼロに初期化できないため、自動拡張の設定が適切でない場合、SQL Serverは、自動成長イベントが終了します。
T-Repを使用している場合、パブリッシャーからディストリビューターに変更をレプリケートするときにログリーダーエージェントがログを読み取り、ディストリビューターエージェントが「保留中のトランザクション」と呼ばれるサブスクライバーに変更を配布します。変更が複製されると、ログエントリは「複製」としてマークされます。
この問題は、ログリーダーが遅くなるか、遅延して「保留中のレプリケーション」コマンドが長期間蓄積され、アクティブログの一部として残るために発生するため、VLFを切り捨てることはできません。
問題として「レプリケーション」が表示されるsys.databasesのlog_reuse_wait_desc列を確認できます。
注:マージレプリケーションとスナップショットレプリケーションは、トランザクションログのサイズには影響しません。データベースに1つ以上のトランザクションパブリケーションが含まれている場合、パブリケーションに関連するすべてのトランザクションがディストリビューションデータベースに配信されるまで、ログは切り捨てられません。
ログファイルが制御不能になった場合、T-Repの一般的な手法は、sp_repldoneコマンドを使用して、ログリーダーで現在待機しているすべてのログレコードをレプリケート済みとしてマークし、次にreする必要があります。 -initializeサブスクライバー。
注:ログが切り捨てられると考えて単純な復旧モデルに切り替えようとした場合でも、SIMPLEリカバリーではレプリケーションがサポートされているため機能しません。また、ログリーダーエージェントが必要とするため、ログは切り捨てられません。プロセスへ。
これにより、適切なログ管理-データベースで発生するデータ変更のボリュームをサポートするようにログファイルのサイズを設定し、ログバックアップを頻繁に実行して、ログファイル内のスペースを迅速に再利用できます。
ベストは、monitorトランザクションログと、可能性のある他の監視です。通常はPERFMONとDMVを使用してください。
参考までに、sys.dm_db_log_space_usageは、SQL Server 2012の新しいDMVであり、基本的なログサイズとスペース情報を取得します。
参照: