記事検索

検索ワードを入力してください。
Sky Tech Blog
【SQL Server】ログ先行​書き込みと​バックアップの​種類に​ついて

【SQL Server】ログ先行​書き込みと​バックアップの​種類に​ついて

SQL Serverの「ログ先行書き込み(Write-Ahead Logging, WAL)」の仕組みと、トランザクションログファイル(.ldf)とデータファイル(.mdf)の役割について解説しています。また、完全バックアップや差分バックアップなど、主要なバックアップの種類とその特徴についても説明しています。

前回のブログで、メンテナンスプランを使ってバックアップを取る記事を投稿させていただきました。

前回の​記事

今回は、そのバックアップの種類について、SQL Serverで採用されている「ログ先行書き込み(Write-Ahead Logging, WAL)」という仕組みを踏まえて調べた内容を記載します。

ログ先行​書き込み​(Write-Ahead Logging, WAL)に​ついて

SQL Serverで扱うファイルの種類は以下2つがあります。

  • トランザクションログファイル(.ldf)
  • データファイル(.mdf)

実際のデータは「データファイル(.mdf)」に格納されています。
感覚的には、実際に「データファイル(.mdf)」の更新処理を行った後、ログ「トランザクションログファイル(.ldf)」を残すという順番が正しいように思いますが、 ログ先行書き込みにおいては、DBに対して更新リクエストがあった場合、「トランザクションログファイル(.ldf)」にだけ先に書き込んだ後、「データファイル(.mdf)」に書き込みます。

DBの更新プロセス

「データファイル(.mdf)」へはどのタイミングでデータが更新されるかというと、チェックポイントと呼ばれる処理が実行されたときに書き込みが行われます。
チェックポイント処理では定期的にバッファキャッシュをスキャンし、差分があればデータファイルへ書き込みを行います。

成功通知タイミングも踏まえて図解すると以下のようになります。

この方法で更新プロセスを行うことによる主なメリットは3つです。

ディスクI/Oの​負荷軽減:

データファイルへの書き込みよりも、ログファイルへの書き込みのほうが低コストであり、データファイルへの書き込みはチェックポイントのタイミングで一括で行われるため、都度データファイルを書き換えに行くときと比較して、I/Oの負荷は軽減されます。

一貫性の​確保:

データの変更がディスクに書き込まれる前に、すべての変更内容がトランザクションログに記録されるため、システム障害が発生してもデータの一貫性が保たれます(中途半端な状態のデータが生まれません)。

障害発生の​直前まで​復旧が​可能:

システム障害が発生してもトランザクションログを使用して、データベースをシステム障害の直前の状態まで復旧することが可能です。

※注意※
復旧モデルが「完全」or「一括ログ」に設定されている時のみに限られ「単純」のときは対象外です。
これは復旧モデルが「単純」のとき、チェックポイント処理のたびにトランザクションログの切り捨てが行われるためです。
「完全」or「一括ログ」のときはバックアップを契機にトランザクションログの切り捨てが行われるため、定期的にバックアップを取ることでトランザクションログの内容を復旧に使用することが可能です。

バックアップの​種類

主なバックアップの種類としては以下4つがあり、バックアップの種類によって .mdf .ldf の扱いも変わります。

完全バックアップ(full backup)

⇒データファイル(.mdf)や、トランザクションログファイル(.ldf)を含むすべての情報をバックアップ

差分バックアップ(differential backup)

⇒直近の完全バックアップからの差分のみをバックアップ

トランザクションログバックアップ(transaction log backup)

⇒トランザクションログファイル(.ldf)のみバックアップ

※トランザクションログバックアップについては、復旧モデルが「完全」「一括ログ」の時のみ使用でき、「単純」の場合は使用できません。
また、前述のとおりバックアップを契機にトランザクションログレコードの切り捨てが行われるため、このバックアップ処理を定期的に行わないとトランザクションログファイルの肥大化につながります。

ログ末尾バックアップ (tail-log backup)

⇒システム障害発生した際に、まだトランザクションログバックアップがされていない内容をバックアップ

※定期的なメンテナンス等で取得するものではなく、リストアの際に可能な限り直前まで復元するために使用されます。
トランザクションログバックアップと同様に、復旧モデルが「完全」「一括ログ」の時のみ使用できます。


\シェアをお願いします!/
  • X
  • Facebook
  • LINE
キャリア採用募集中!

入社後にスキルアップを目指す若手の方も、ご自身の経験を幅広いフィールドで生かしたいベテランの方も、お一人おひとりの経験に応じたキャリア採用を行っています。

Sky株式会社のソフトウェア開発や製品、採用に関するお問い合わせについては、下記のリンクをご確認ください。
お問い合わせ
ホーム