VSS + Ntbackup による SQL Server のバックアップ [BACKUP]
SQL Server を起動したまま Ntbackup でバックアップを取得すると、整合性のとれたバックアップが取得出来ます。
Windows Server 2003 には ボリュームシャドウコピーサービス(VSS)というサービスがあります。
Windows起動中にディスクをまるごとバックアップする時に利用するサービスです。
Windows起動中はOSのカーネル等、他のアプリケーションからアクセスして変更されない様にロックをかけている場合があります。また、データベース等はアクセス性能を担保するためになるべくメモリに展開しつつ、ディスクへの書き込みは時間差をつけてまとめて書き込む様にしています。
そういったファイルは排他されてバックアップの時に読み込めなかったり、データベースなんかは動作中にディスクに書き出されているものは中途半端で意味をなさなかったりします。
そういったアプリケーションがVSS対応にする事でVSSを通してバックアップ可能な状態にする事が出来ます。
VSSからアプリケーションに対してバックアップの要請がされたらそのアプリケーションのVSS対応モジュール(VSSライタといいます)がメモリをフラッシュしてファイルのロックを一時的に解除する等々のバックアップのための御膳立てをします。
SQL Server 2005 にも SQL Server VSS Writer というサービスがあって、これがVSSとSQL Serverのつなぎをします。
他にも、Windowsのレジストリ等のシステムの根幹に係わるサービスにVSSライタがあります。
アプリケーションとしては Exchange Server にもVSSライタがあります。
改めてバックアップソフト側から見てみますと、バックアップソフトはバックアップ開始時にVSSを呼び出し、アプリケーションがバックアップ可能な状態になったらバックアップを開始します。バックアップ完了時にはVSSを終了させます。
VSSではこのVSS対応バックアップソフトをVSSリクエスタと呼んでいます。
Windows標準の Ntbackup や ARCserve , Backup Exec , NetVault といったバックアップソフトが対応状況に違いがありますが、VSSに対応しています。
下図はMSのVSSの説明図です。今回は直接アクセスするのでプロバイダは無視して下さい。(実際には Microsoft Software Shadow Copy Provider というものが関与します。)
もう少し具体的に見ていきます。
Ntbackup を起動して、バックアップ対象を選択します。
C:ドライブにWindowsとSQLServerがインストールされていて、
F:ドライブにバックアップ対象のSQLServerのデータベースがあります。
G:ドライブはバックアップ出力先になってます。
SQL Server を起動したままにします。
以下画面にもバックアップログにも明確に見えてこないので、イベントログを見ながら説明します。
バックアップを開始します。
バックアップが開始されたらVSSからSQLServer が静止化され、スナップショットが録られます。
スナップショットが完了したらSQLServer の静止化が解除されます。
その間2分とかからないそうです。今回は一瞬でした。
SQLServer がバックアップされた事を宣言しています。
Ntbackupによる実際のF:ドライブのバックアップが開始されます。
F:ドライブのバックアップが終了。
Ntbackup が終了。
バックアップ完了後、SQL Server のバックアップ履歴を見ると、SQL Server としてフルバックアップがされている事が確認出来ます。
SQL Server としてフルバックアップ されたので、この後に続く差分バックアップやトランザクションログバックアップを行う事が出来ます。
ただし、Ntbackup + VSS では差分は取れません。また、VSSではトランザクションログのバックアップはサポートしてません。
トランザクションログは別の方法で取得する必要があります。
バックアップはよいのですが、これをどうやって戻すのか?
トランザクションログの適用はどうするのか?
こちらの方が問題です。
コメント 0