SQL Serverのメンテナンスプラン機能を使用して、データベースのバックアップ(完全、差分、トランザクションログ)を取得しています。
バックアップの作成中に、バックアップファイルを圧縮するために圧縮オプションを選択し、「バックアップ圧縮のデフォルト」も有効にしました。
完全バックアップの保守計画では、バックアップファイルを圧縮しています。ファイルサイズはデータベースサイズの4倍です。しかし、差分バックアップに関しては、圧縮設定が機能していないと思います。
今日のバックアップ差分ファイルを観察しました。昨日、データベースの4つのテーブルにそれぞれ10 GBのデータが入力されたため、差分バックアップファイルのサイズは40 GBを超えました。新しいデータベースであり、その日にメンテナンスアクティビティが実行されなかったため、これらの変更が唯一の変更だったと確信しています。
.ldf
バックアップが実行された日にファイルサイズが500 GBに増加しました。これにより、大きなサイズで問題が発生する可能性がありますが、データベースサイズ(.mdf
)は50GB未満です。
詳細については、下の画像をご覧ください。
差分バックアップでは圧縮が機能しないことを確認したいのですが、それ以外に何か見逃していることがありますか?
それが機能しない場合は、Paul Randalの データベースパーセントの変更 スクリプトに基づいて、完全バックアップまたは差分バックアップをとることができます。
select @@version;
Microsoft SQL Server 2012 (SP1) - 11.0.3156.0 (X64)
May 4 2015 18:48:09
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
select type,
backup_size,
compressed_backup_size
from msdb..backupset
where backup_start_date >= '20170927'
and database_name = 'yourDB'
type backup_size compressed_backup_size
I 213,473,351,680 42,147,293,093
バックアップが圧縮されているかどうかを確認できます。 SQL Serverバックアップが圧縮されているかどうかはどうすればわかりますか? にはいくつかの方法があります。
backupset
のmsdb
テーブルのcompressed_backup_size
とbackup_size column
の値を確認することもできます。例えば:
SELECT
database_name,
type,
PctCompression =
CONVERT(NUMERIC(20,2),100 - (compressed_backup_size / backup_size) * 100)
FROM msdb.dbo.backupset
WHERE ...
あなたの質問の更新は、差分バックアップが実際に圧縮されたことを示しています。
その10 GBのデータは多くのページに分散する可能性があり、それらのページの合計は、挿入した10 GBよりもはるかに多くなる可能性があります(特に、クラスター化インデックスの選択が適切でない場合)。また、差分バックアップはextentレベルで動作するため、8ページのエクステント内のページに変更を加えると、エクステント全体がバックアップされます。
ログのバックアップ後にlog_reuse_wait_desc
を確認するか、dbcc opentran
を使用してください。昨日から開いているトランザクションがある場合、含まれているアクティブログのため、完全バックアップと差分バックアップは大きくなります。
現在、開いているトランザクションはない可能性がありますが、差分バックアップ時に実行時間の長いトランザクションがアクティブだった場合、バックアップファイルのサイズは予想より大きくなります。
ログが500GBに増えた(そして定期的にログバックアップを取っている)という事実は、何か(おそらく開いているトランザクション)が原因でログを長期間クリアできなかったことを意味します。そのトランザクションに関連するすべてのログが差分バックアップに追加されました。
そうであるかどうかを確認したい場合は、データベースを別の(新しい)データベース(おそらく別のサーバー)に復元してみてください。このようにして、2つのことを行います。
差分に長い時間がかかる場合(3時間以上など)は、長時間実行されているオープントランザクションの影響を元に戻すのに多くの時間が費やされたことを示しています。