SQL Server Centralスレッドで確認しました フルバックアップではログが切り捨てられますか? フルバックアップではログが切り捨てられません。
いいえ。完全バックアップも差分バックアップもトランザクションログを切り捨てません。 - リンペティス
いいえ-完全バックアップではログは切り捨てられません。 - チャドクロフォード
それでは、完全バックアップとコピーのみの完全バックアップの違いは何ですか?
ログバックアップには、コピーのみのバックアップがあり、ログを切り捨てずにログチェーンが壊れることを防ぎます。では、コピーのみの完全バックアップとは何ですか?
少なくとも、差分バックアップを検討する必要があります。フルコピーのみを使用しない限り、次の差分バックアップはオフになります。 コピーのみのバックアップ :
コピーのみの完全バックアップ(すべての復旧モデル)コピーのみのバックアップは、差分ベースまたは差分バックアップとして機能できず、差分ベースに影響を与えません。
完全コピーと完全コピーの唯一の違いは、完全コピーは差分チェーンを壊さないことです。どちらもログファイルを切り捨てないため、どちらもログチェーンを壊しません。
完全バックアップとコピー専用バックアップの主な違いは、LSN(ログシーケンス番号)、特にDatabaseBackupLSN
が更新されるかどうかです。
フルバックアップを実行すると、DatabaseBackupLSN
が更新されます。完全バックアップを作成した後、差分バックアップを作成した場合、そのバックアップには完全バックアップのDatabaseBackupLSN
と一致するため、SQLは2つをリンクできます(たとえば、それらのLSNから、diffがフル)。
この問題は、スケジュールされたバックアップを実行しているときに発生するため、最初の完全バックアップがあり、次に一連の差分があります。フルバックアップを手動で取得すると、LSNが更新され、その後、スケジュールバックアップを介して取得した各差分バックアップは、元のLSNではなく新しいLSNを参照します。復元が必要な場合は、スケジュールされたフルバックアップを復元できますが、手動ジョブの後に作成された差分バックアップを復元しようとすると、LSNが一致しなくなったために失敗します。
コピーのみのバックアップでは、DatabaseBackupLSN
に影響しないため、バックアップのチェーンが壊れることはありません。
問題の説明と、なぜ多くの人が誤解しているのか Breaking the Backup Chain – REDUX(Or Eating Crow) によるMichael K. Campbellには、このような優れた視覚的なガイドが含まれています:
4つの異なるLSNとそれらの使用方法の適切な説明については、Simon Liewによる バックアップのSQL Serverログシーケンス番号について を参照してください。
この問題を回避する方法は、データベースの標準的なバックアップを複数実行しないことです。アドホックバックアップまたはセカンダリバックアップは、コピーのみのオプションで実行する必要があります。詳細については コピーのみのバックアップ(SQL Server) を参照してください。ただし、基本的には、SSMSの「コピーのみのバックアップ」オプションを使用します。 T-SQLはコマンドでWITH COPY_ONLY
を指定するか、PowerShellで-CopyOnly
パラメーターを使用します。
スケジュールされたバックアップがあるデータベースがあるとします。フルバックアップは24時間に1回、00:00に実行されます。また、6時間ごとに実行される差分バックアップと、1時間ごとに実行されるトランザクションログバックアップがあります。では、別のサーバーを復元するために、日中に追加の完全バックアップを作成する必要がある場合はどうでしょうか。この場合はどうしますか。もちろん、完全バックアップを作成できます。
BACKUP DATABASE Test TO DISK = 'C:/Test.bak'
ただし、データベースのバックアップを作成すると、次のバックアップの復元方法に影響を与えるいくつかの変更があります(差分バックアップとトランザクションログバックアップの両方が復元操作の状態に影響します)。この場合、以降のすべての差分バックアップは、最後の完全バックアップに依存します。最後の完全バックアップが失われた場合、データベースの復元は不可能です。
しかし、そのデータベースのバックアップまたは復元の後続のプロセスに影響を与えないバックアップを作成するにはどうすればよいでしょうか。ここで、コピーのみのバックアップが作成されます。
BACKUP DATABASE Test TO DISK = 'C:\Test.bak' WITH COPY_ONLY
完全バックアップと一連のログファイルバックアップがある場合、LSN(ログシーケンス番号)を使用してログチェーンが維持されます。ログチェーンを壊すことなくバックアップを実行したい場合は、コピーのみのバックアップを実行します。
コピーのみのバックアップを行わないと、ログチェーンが壊れて、取得したバックアップが最新の完全バックアップになります。つまり、以前のログバックアップは、新しく作成された完全バックアップに適用できません。ログチェーンは、ほとんどの場合、ポイントインタイムリカバリまたはログ配布シナリオのために維持されます。
例:6時間ごと(真夜中、午前6時、正午、午後6時)にフルバックアップを行い、15分ごとにログバックアップを行うバックアップシナリオがあるとします。午前9時に要求が届き、DBのコピーをテストサーバーに配置します。ログチェーンを壊したり、バックアップジョブを中断したりせずにバックアップを取得したい。これは、コピーのみのバックアップが取られるときです。コピーのみのバックアップは、通常のバックアップセットを中断しません。
完全バックアップとコピーのみのバックアップは、ログチェーンを壊しません。 tlogバックアップを行う場合のみ、LSNの不一致が発生します。