いうセッションを担当させていただきました。ブログではバックアップについてまとめたことがなかったので少しまとめてみたいと思います。投稿を見直して、内容を大幅に修正しています。■バックアップの基本パターンバックアップの基本パターンですが以下のようになると思います。バックアップでは、それぞれの処理をどのようなタイミングで実行するかを検討していきます。■バックアップを取る前のデータベースの状態確認バックアップの基本パターンは先ほど記載したものをベースにして考えますが、前提として考慮すべき内容が一つあります。以下のような整合性エラーが発生しているテーブルがあります。実際にはページのチェックサムのエラーが発生しています。このデータベースを以下のようなクエリでバックアップを取得してみます。DISK=N’TEST.bak’この時のバックアップの結果ですが以下のように正常にバックアップが完了しています。この際のバックアップの内容ですが、破損しているデータベースを破損しているままバックアップを取得してしまっていることになります。このバックアップをリストアした場合、破損したページについては破損した状態でリストアが行われます。使用しないといけないかもしれませんが。そのため、バックアップを取得する場合にはデータベースが破損していないことを確認する必要があります。具体的には以下のような方法を使用します。実行することでデータベースの整合性を確認することができます。レベルの内容がイベントビューアーに出力されます。これを通常監視で取得できれば整合性エラーが発生した際にトラップをすることができます。情報なのでこの内容では、不整合エラーはトラップしにくいかもしれませんが。定期的に実行するためのメンテナンス用のジョブを作成することができます。イベントビューアーに出力がされますので、イベントビューアーで監視しいている場合にはこちらで検知を行うとよいかもしれませんね。オプションを使用してバックアップを取得します。CHECKSUMこの場合はイベントビューアーにエラーで出力されますのでトラップしやすいかと思います。イベントビューアーに情報を出力するという方法もあります。使用すればイベントビューアーにログをエラーを出力できますので。開き、データページの情報を書き換えると再現できます。文字列は格納した情報が半角英数で、ページ圧縮をしていない状態であれば、バイナリエディタの文字列検索で簡単に検出できますので、特定のページの破損を意図的に再現できます。完全バックアップと差分バックアップで運用のどちらを使用するかを検討していきます。完全バックアップはリストア時の起点となるため、必ず取得する必要があります。完全バックアップの対象はユーザーデータベースシステムデータベースに分けて考えると運用が楽だと思います。差分バックアップは完全バックアップとしてしまってもよいのですが、サイズが大きい場合には毎日、完全バックアップを取得するとバックアップのサイズが大きくなってしまうので、完全バックアップ以外の曜日は差分バックアップを取得することでバックアップで必要な領域を節約することができます。差分バックアップは前回の完全バックアップ以降の差分となりますので、更新量が少なければバックアップのサイズは少なくなります。全テーブルの全データが更新された場合には、差分バックアップは完全バックアップに近いサイズとなります。ついては通常、サイズはそれほど大きくならないので、毎日完全バックアップを取得しても問題はないと思います。今回はユーザーデータベースとシステムデータベースのバックアップは以下のように取得するように計画をしてみます。している場合は、トランザクションログのバックアップを取得する必要があります。場合はチェックポイント時のログ切り捨てとなり、自動的にログが切り捨てられますが、それ以外のモデルの場合は定期的なトランザクションログの切り捨てが必要となります。トランザクションログのバックアップを取得しないとすでにデータファイルに反映済みのトランザクションログの再利用がされないので数分~数時間起きにトランザクションログのバックアップを取得するようにします。分間隔でバックアップがされていたはずです。分間隔で取得してもよいかもしれないですね。削除する必要があります。メンテナンスプランとしてジョブを実行した場合にはテキスト形式のレポートが出力されますので、これも定期的に削除をする必要があります。これも削除をしないと残ったままになってしまいますので定期的な削除が必要です。テーブル内のレコードとして存在しているものを削除が用意されていますので、これを使うと便利です。最後に実際のどのようにバックアップを設定するかを確認していきたいと思います。ユーティリティを使用する方法があるかと思いますが、今回はメンテナンスプランを使用したいと思います。エージェントの新しいジョブとして登録がされます。サブステップではありませんので独立したジョブが作成されます。週次のバックアップの取得方法を見ていきます。最初に設定しています。実行することで時間を短縮できますがこのオプションはメンテナンスプランで設定ができないので、設定したい場合はメンテナンスプランを使用せずに独自に設定をする必要があります。整合性確認タスクが正常に終了した場合にのみ以降の処理が実行され、バックアップの取得が行われています。するオプションがありますのでこれを有効にしておくとよいと思います。完全バックアップが取得できた場合、起点ができますので不要となったバックアップは削除をします。整合性確認タスクは成功時にのみ後続の処理を実行するようにしていますのでエラーが発見された場合は、削除は行われません。実施されませんので、バックアップが成功しない場合には、過去のバックアップが残ることになります。種類のクリーンアップができますが、今回の週次のバックアップではバックアップファイルの削除を対象としています。削除するタスクをそれぞれ作成する必要があります。これらを踏まえ、今回は週次のバックアップとして以下のようなメンテナンスプランを作成しています。削除クリーンアップについては並列で実行しても問題ないかと思いますので以下のようにバックアップ後は並列で実行してもよいかもしれないですね。■週次以外の曜日の差分バックアップユーザーデータベースのサイズが小さい場合には、先ほどの週次のバックアップを日次で実行すればよいのですが、データベースのサイズが多い場合は、週次の曜日以外は差分バックアップを取得する必要が出てきます。した以下のようなメンテナンスプランを作成します。差分バックアップの取得前にもデータベースの整合性確認を実施しています。これで毎日整合性が確認され、破損があった場合には検出がされます。ユーザーデータベースについては差分で取得をしていますが、システムデータベースについては完全で取得をしています。なっており差分バックアップが取得できないためです。通常はさほどサイズが大きくないため、完全で取得してもバックアップの領域は圧迫しないかと思います。以外のシステムデータベースは通常それほど更新が行われないはずなため、割り切って週次でもよいかもしれませんが。いう考えでいるため、差分バックアップ取得時には履歴は削除していません。設定したバックアップになります。これはすべてのユーザーデータベースのトランザクションログのバックアップを取得するだけのプランとなります。トランザクションログは一日の中で定期的にバックアップが取得されるようにスケジューリングする必要があります。トランザクションログのバックアップを取得する間隔はデータ更新量に応じて調整をする必要があります。頻繁にバックアップを取得するとバックアップによるディスク負荷が増加しますが、トランザクションログ内のデータを減らすことができるため、ログファイルのサイズを小さいまま保つことができますので。トランザクションログの自動拡張時には瞬時初期化は使用できないので、拡張が発生した場合にはそれなりのオーバーヘッドが発生します。自動拡張はあくまでも保険的に考え、通常は発生しないようにしておくのが好ましいです。トランザクションログのバックアップは一日に数分間隔で実施する必要があるため、このバックアップを取得する前にデータベースの整合性チェックをするのはあまり現実的ではないと思います。ディスク負荷がかなり上がりますので。回はデータベースの整合性チェックを行っているため、そこでエラーが検知された場合はそこまでのバックアップを使用して状態を戻せればよいのではないでしょうか。この設定をしておかないと、バックアップの履歴やジョブの実行履歴が蓄積され続け、履歴の確認が面倒になりますので定期的にデータを削除するようにします。この辺の削除は日次や週次のバックアップ時に実行してもよいかとは思いますが今回は独自のプランとして作成しています。削除するように設定します。ログ等を出力しているディレクトリにデフォルトで出力がされます。変更することができます。ボタンが少しわかりにくいですが。格納されている以下のレコードを削除することが可能です。実行ログやバックアップの情報が蓄積され続きます。これらのタスクを利用して今回は以下のようなプランを作成しています。上のプランでは並列で実行していますが、以下のように成功時に後続を実行する直列でも問題はありません。■まとめこれらの設定をバックアップの基本パターンとして設定しておくとよいかと思います。今回の投稿で最終的に設定したメンテナンスプランは以下のようになります。エージェントのジョブを自分で組んでいく必要がありますが、シンプルなものでしたらこれらの設定をしておくことを覚えておくとよいかと。実行することを合わせて覚えておくとよいかと思います。オプションを指定しないとその連続性が崩れてしまいます。連続性が崩れると、メンテナンスプランで取得しているバックアップだけでは復旧ができなくなってしまいますのでこの辺は注意が必要です。チューニング等をメインにしていますが、本ブログで情報発信している内容に関することでしたら対応できます。お仕事のご相談がありましたらTwitterfacebookやブログのコメントでご連絡いただけると幸いです。ブログにコメント頂いた内容は私が承認しない限り表示されません。受賞させていただきました。本ブログの内容は個人的に検証したものとなり、検証結果を含め記載している内容を保証するものではありません。体験記の連載をさせていただきました。最後まで飲み切れず...。