
【SQL Server】
ログ肥大化の対処からデータ復旧まで
SQL Server運用者が直面する「ログ肥大化」問題。この記事では、原因の理解、緊急対処、恒久対策、そしてバックアップを活用したデータ復旧まで、SSMS(Microsoft SQL Server Management Studio)で行う方法を解説します。
第1章: まずは、
「復旧モデル」を理解しよう
復旧モデルとは?
ログが肥大化する現象を理解するには、まずデータベースの「復旧モデル」を知る必要があります。これは、データベースのログ管理と障害復旧の方針を決定する、最も重要な設定です。
復旧モデル | ログの扱いと特徴 |
---|---|
完全 (Full) | すべての変更履歴をログに保持します。 特定の時点に戻せる最も安全なモデル。定期的なログバックアップが必須です。 |
単純 (Simple) | ログは自動で破棄されます。ログは肥大化しませんが、最後のバックアップ時点までしか戻せません。 |
一括ログ (Bulk-Logged) | 基本は「完全」と同じですが、大量データの一括操作時のログ記録を最小限に抑えます。 |
多くのログ肥大化は、「完全」復旧モデルで運用しているにもかかわらず、トランザクションログのバックアップを定期的に取得していないことが原因です。
第2章: 【緊急対処】
今すぐログファイルを縮小する
手動での縮小手順
すでにログが肥大化してしまった場合の緊急対処法です。重要なのは「①ログバックアップ → ②ファイル圧縮」の順番です。
- トランザクションログのバックアップ:
SSMSでデータベースを右クリック > [タスク] > [バックアップ...] と進み、[バックアップの種類] で「トランザクション ログ」を選択して実行します。 - ログファイルの圧縮:
次に、データベースを右クリック > [タスク] > [圧縮] > [ファイル] と進みます。[ファイルの種類] で「ログ」を選択し、「未使用領域の解放」を選んで実行します。
第3章: 【恒久対策】
ログ肥大化を二度と起こさない仕組み作り
メンテナンスプランによる自動化
再発防止の鍵は、トランザクションログバックアップの自動化です。
SSMSの「メンテナンスプラン」を使って、データの完全バックアップとは別で設定しましょう。
- [管理] > [メンテナンス プラン] を右クリックし、「メンテナンス プラン ウィザード」を起動します。
- プラン名とスケジュール(例: 1時間ごと)を設定します。
- メンテナンス タスクとして「トランザクション ログのバックアップ」を選択します。
- 対象のデータベースとバックアップ先のフォルダを指定してウィザードを完了させます。
第4章: 【実践】バックアップを活用する!
特定の時間へデータベースを復元する
バックアップファイルを指定して特定の時間に戻す
状況: データを誤削除し、その直前の状態に戻したい。
[復旧手順]
- SSMSで [データベース] フォルダを右クリックし、[データベースの復元...] を選択します。
- 「ソース」で「デバイス」を選択し、[...] ボタンから手元にあるすべてのバックアップファイル(.bakと.trn)を追加します。
- メイン画面で、使用するすべてのバックアップにチェックを入れます。
- 画面上部の [タイムライン...] ボタンをクリックし、「特定の日にちと時刻」で目標時刻を入力します。
- [OK]を押して復元を実行します。
【警告】 復元中はデータベースにアクセスできなくなり、指定した時刻以降の正常な変更もすべて失われます。
第5章: 【もう一つの選択肢】
ポイントインタイムリカバリが不要な場合の戦略
「単純」モデル + こまめな「完全/差分」バックアップ
ポイントインタイムリカバリは不要で、「最後のバックアップ時点まで戻せれば十分」という要件が明確な場合、この戦略が最適です。ログ肥大化の心配から完全に解放されます。
- 適している例: 小規模なシステムや開発環境、テスト環境など。
- 考慮点: データ損失のリスクはバックアップの頻度で決まります。
具体的な運用プラン例
プラン | 復旧モデル | バックアップ計画 | 最大データ損失 |
---|---|---|---|
シンプルに毎日 | 単純 | 完全バックアップ:1日1回(深夜) | 約24時間 |
差分を活用 | 単純 | 完全バックアップ:週に1回 差分バックアップ:1日1回 |
約24時間 |
まとめ:最適な戦略を選択する
SQL Serverのログ管理とバックアップ戦略は、データベースの要件によって最適な解が変わります。
- きめ細かい復旧が必要か?
YES :「完全」モデル + 定期的なログバックアップ
N O :「単純」モデル + こまめな完全/差分バックアップ
自社のデータベースに求められる復旧レベルを見極て、大切なデータを守りましょう。