web-dev-qa-db-ja.com

SQL Server(2005/2008):完全バックアップは完全復旧モードでログを切り捨てますか

多くのMSDNドキュメントを読んだところ、さまざまな復旧モデルとバックアップチェーンの概念を理解できたと思います。私はまだ1つの質問があります:

データベースの完全バックアップでは、トランザクションログが(完全復旧モードを使用して)切り捨てられますか?

  • はいの場合:これはMSDNのどこに記載されていますか?私が見つけることができたのは、BACKUP LOGだけがログを切り捨てることでした。

  • いいえの場合:なぜですか?完全データベースバックアップは新しいバックアップチェーンを開始するので、完了したトランザクションを維持することのポイントは何ですかbefore完全バックアップをログでアクティブにしますか?

41
Heinzi

いいえ、違います。 FULLまたはBULK_LOGGED復旧モデルでログのクリア/切り捨てを可能にするonlyは、ログバックアップです-例外はありません。私はしばらく前にこの議論を持っていて、説明とスクリプトで長く詳細なブログ投稿を投稿しました ログとログのバックアップに関する誤解:自分を納得させる方法

さらに質問があれば遠慮なくフォローアップしてください。ところで、TechNet Magazineで執筆した SQL Serverでのログと回復について に関する長い記事も参照してください。

ありがとう

43
Paul Randal

完全バックアップではログが切り捨てられないため、バックアップログ操作を実行する必要があります。完全バックアップはログチェーンをリセットしません-レプリケーション/ログシッピングなどを完全に台無しにします。

SQL Serverがバックアップをどのように実行するかを注意深く確認する必要がありますが、実行中/長時間実行中のトランザクションはバックアップに含まれない(そうでない場合、バックアップは完了しない可能性があります)ため、完全なバックアップがonline-databaseは、次のログバックアップが不要になることが保証されています。

http://msdn.Microsoft.com/en-us/library/ms175477.aspx

13
Matt Rogish

私の理解からトランザクションログを切り捨てる唯一のものは、ログバックアップです。

完全バックアップではログのコピーのみが十分に行われるため、トランザクションの一貫性が保たれます。これは、バックアップ操作が完了するまでに時間がかかり、その間にコピーされたページが変更された可能性があるためです。

ポイント・イン・タイム・リカバリーには、引き続きログのバックアップが必要です。

リンクするMSDNはありませんが、SQL Serverチームの開発者である Paul Randalのブログ にリンクできます。DBCCCHECKDBとBooks Onlineの一部を書いています。

彼はこのフォーラムでの質問にも答えます。そのため、私からの2番目/ 3番目の情報よりもさらに優れた権限になります:)

8
Nick Kavadias

多くの場合、完全バックアップとログバックアップについて誤解されています。バックアップがFULLバックアップリカバリモデルで機能するためには、t-logを使用する必要があります。バックアップ中にデータベースでトランザクションが発生している可能性があるためです(いわゆるCOLD backup(データベースをシャットダウンしたとき)。データベースがARCHIVELOGモードの場合、Oracleは同じ概念を使用します。バックアップのシーケンスは次のようになります。

  1. バックアップを開始-実際のファイル内のすべてのアクションを一時停止し、t-logに書き込みます。
  2. バックアップを実行-すべてのトランザクションは続行されますが、実際のファイルには書き込まれず、tログに書き込まれます
  3. バックアップの終了-データベーストランザクションの実際のファイルへの書き込みを再開します。
  4. 必要に応じて、Tログの内容を実際のファイルにフラッシュします。

これが、t-logがバックアップフェーズ中のトランザクション継続の重要な部分であるため、デフォルトでは切り捨てられない/縮小されない理由です。

5
Peter

ログの切り捨てとログの縮小を混同しないでください。

  • TRUNCATEとは、最後のチェックポイント(トランザクションがデータベース自体にフラッシュされるときのチェックポイント)の前にあるログ内のトランザクションを削除することです。これは、BACKUPコマンドを使用して行われます。

  • ログを縮小するには、実際のログファイルのサイズを小さくします。これは、DBCCコマンドを使用して行われます。

1
Lee Matthews

基本的に、トランザクションログはスペースを必要とするため、トランザクションログを毎回自動的に縮小する必要はありません。自動的にトランケートすると、ほぼ同じサイズのままになります。

1
zz