保守しているシステムのデータベース(SQLServer2012)が肥大化(200GB近い)してきました。
そこでDBの圧縮オプションを入れたバックアップができないか検証して見ることにしました。
DBの圧縮オプションの主なメリットとして以下があります。
- バックアップ時間が短縮される。
- データベースのバックアップ容量が少なく済む
- データベースの移行時の時間短縮(移行データのコピー時間も少なくなる)
反対にデメリットとして
- バックアップと圧縮を同時に行うのでCPUの負荷が高くなる。
- 圧縮は取得後に行われるため、一時的に必要なDBがいまいちわからない。
今回は、ざっくりした時間などを計測して本番運用として使ってよいオプションなのかを検証してみました。圧縮オプションでバックアップを取得することを検討されている方は参考にしていただければと思います。
圧縮オプションの手順
DBバックアップの圧縮設定
[バックアップオプション]→[バックアップの圧縮設定]で[バックアップを圧縮する]とバックアップをしながら圧縮される。
コマンド実行する場合は、COMPRESSIONオプションを付与すればOK
BACKUP DATABASE [データベース名] TO DISK = N'バックアップ取得先フルパス' COMPRESSION
検証結果
データベースの圧縮率はどれくらい?100GB越えも検証
データの内容にもよると思いますが、圧縮せずにバックアップすると約11.3GBだったDBが
圧縮してバックアップしてバックアップすると約1.3GBに圧縮されました。約30GBで試しても、約3.4GB程度に圧縮されました。ざっくり1/8程度に圧縮されるみたいです。
また、バックアップの速度も半分程度になりました。
2021年3月追記 150GBのデータベースを圧縮オプションでバックアップしてみました。
結果、約15GBに圧縮されました。容量的にも1/10程度になっています。またバックアップ時間も
10分程度で完了したのでバックアップもかなり高速です。
CPUの負荷は?
ざっくりした内容で申し訳ないのですが、バックアップを取得中にタスクマネジャーを監視していましたが20%以上行くこともなく、システムも特に問題なく利用できていました。本番環境にも反映していますがCPUの負荷が特別高くなり、レスポンスが極端に落ちるようなことはありませんでした。
ただし、24時間稼働しているシステムなどで採用する場合は、極力ユーザーが少ない時間帯にバックアップを取得することをお勧めします。
使ってみた感想
バックアップ時間の短縮、バックアップされるファイル容量も縮小されるのでかなり重宝します。
特にバックアップしたデータベースを別サーバーに復元したい場合などは、かなり恩恵を受けます。
- バックアップ時間の短縮
- 圧縮によってデータ容量が大幅に縮小されるので別サーバへの移行時間(コピー)が短縮される。
- リストアの時間も短縮
私が保守しているシステムでは、圧縮オプションを入れる前の半分くらいの時間で復元ができるようになりました。
まとめ
- バックアップの圧縮設定で、時間短縮、バックアップ容量削減ができる。
- バックアップの圧縮設定を入れた場合は、通常のバックアップより負荷がかかるが
あまり気にならなかった。
コメント