web-dev-qa-db-ja.com

SQLトランザクションログのバックアップが完全バックアップと競合していますか?

SQLサーバー(2000、2005、および2008)では、完全バックアップを1日1回夕方に実行し、トランザクションログバックアップを2時間ごとに実行します。これら2つのプロセスが競合することについてはあまり心配していませんが、最近、次の問題のいくつかに遭遇しました。

  1. 1つのサーバーでは、トランスログバックアップが完全バックアップをブロックすることがあり、完全バックアップを完了する前に手動で停止する必要があります

  2. フルバックアップの実行と同時に発生するように見える、大規模なトランスログバックアップファイル(フルバックアップよりも大きい場合もあります!)が作成されることがあります。

SQL 2000 Books Online および SQL 2005 Books Online の意味が何であれ、これらを同時に実行することは「許可されていない」ことを示す参照を見つけました。それがサーバーがそれらを同時に実行することを単に防止することを意味するのか、それとも完全バックアップの実行中にログバックアップを明示的に停止する必要があるのか​​はわかりません。

それで、これらの間に既知の矛盾/問題がありますか?答えはSQLバージョン間で異なりますか?実行する前に、完全バックアップが実行されているかどうかを確認するために、トランスログバックアップジョブをチェックする必要がありますか? (そしてどうすればそれを行うことができますか...?)

6
BradC

2000では、ログバックアップをdiffまたは完全バックアップと同時に実行できませんでした(ログバックアップは一部のトランザクションログをクリアし、完全/ diffはデータベースの復元されたコピーをトランザクション整合性にするために一部のログをバックアップする必要があるため)。

2005年に、この制限は解除されました。これらは同時に発生する可能性がありますが、fullまたはdiffと同時にログをバックアップしてもログはクリアされません。ログのクリアは、fullまたはdiffが完了するまで遅延されます。これにより、fullおよびdiffバックアップがログをクリアするという神話が追加されます。

ありがとう

12
Paul Randal

通常、データベースのバックアップはシリアル化する必要があります。

大規模なログバックアップは、最後のログバックアップと完全バックアップの間に発生するデータベースメンテナンス操作が原因で発生している可能性があります。ログバックアップの間隔を短くすると、これに役立つ場合があります。

いくつかのT/SQLを実行して、sysprocessesテーブル(またはSQL 2005以降の場合はDMV)をチェックして、そのデータベースでバックアップが既に実行されているかどうかを確認できます。バックアップを行わない場合は、適切に救済します。

5
mrdenny

もう1つの可能性:ミラーリングが構成されていて、それが一時停止されている場合、トランザクションログとデータベースのバックアップは増大し、ミラーリングが一時停止されている限り増大し続けます。

0
Jerry Rubin

私のシナリオでは..ログ配布があります

SQL 2005 dbの完全バックアップ時間:-15分ごとに23時間のトランログ:-つまり、22.15、22.30、22.45、23.00。

ただし、dbフルバックアップが開始されると... tranログの生成が停止し、スタンバイdbが同期しなくなります。

そのため、トランログを5分遅らせました...そして問題が再び愛されました。

0
Nitin Shetye