Skip to content

MS_SQLServerBackup

nishi_74322014 edited this page Aug 13, 2026 · 2 revisions

SQL Server のバックアップ

概要

SQL Serverのバックアップは、
システムのバックアップデータのバックアップに分けて考える。

システムのバックアップ

システムのバックアップの概要

システムのバックアップとしては、システム・ドライブ丸ごとバックアップが
簡単ではある(システム・データベースはシステム・ドライブ上にある前提)。

もう少しきめ細やかにバックアップしたい場合、
システム・ドライブ丸ごとではなく、
システム・データベースを別途バックアップする。

例えば、システム・データベースの msdb
**「オンライン・バックアップのバックアップ・カタログ」**を持っているため、
これがなくなるとリストアが難しくなる。

システム設定は、基本的にシステム・データベースをリストアすれば同じになる。
ただし、すべての設定がシステム・データベースにあるとは限らないので、
OS、SQL Server インストール手順や、構築手順上の設定は控えておく。

補足(システム データベースの役割): バックアップ対象の判断のため、
各システム DB の中身を押さえておく。

DB 内容 バックアップ
master ログイン、サーバー構成、DB の所在 必須
msdb SQL Agent ジョブ、バックアップ履歴(カタログ) 必須
model 新規 DB のテンプレート 変更したなら必須
tempdb 一時領域。再起動で再作成される 不要
resource システム オブジェクト(読み取り専用) 不要

上位 2 つが特に重要である。
msdb を失うとバックアップ履歴が消え、リストア手順が分からなくなる
(バックアップ ファイル自体があっても、どれが完全でどれが差分か
追跡できなくなる)。

バックアップの履歴を使用したリストア

バックアップと復元の履歴に対する最新の変更情報の損失リスクを回避するために、
頻繁に msdb をバックアップしておく。

システム データベースのリストア手順

以下は、データだけではなく、システム丸ごと壊れた場合のリストア手順。

  1. 新しいマシンに SQL Server をインストールする。
  2. 旧マシンで取得したバックアップ ファイルをコピーする。
  3. ユーザー データベースをリストアする。
  4. 構成マネージャから SQL Server サービスを停止する(関連サービスも全て)。
  5. シングル ユーザー モードで SQL Server を起動する。
  6. master データベースをリストアする。
  7. 構成マネージャから SQL Server サービスを起動する。
  8. msdb データベースをリストアする。
  9. model データベースをリストアする。
  10. SQL Server サービスを再起動する。
  11. SQL Server Agent など、関連サービスを起動する。

移行メモ(正誤): 元ページは手順 5 を
「シングルインスタンスモードで起動」と記しているが、
正しくは シングル ユーザー モードsqlservr.exe -m)である。
master は使用中のためオンラインでは復元できず、
このモードで起動する必要がある。

データのバックアップ

オフライン・バックアップ

デタッチ後のファイル バックアップ。

オンライン・バックアップ

DBMSの機能を使用したオンライン・バックアップ

次の特徴がある。

  • DB を停止し、ファイルを閉じる必要がない。
  • バックアップ中にデータを変更できる。また、この変更分もバックアップされる。
  • 制限されるアクティビティ
    • DB の作成、変更
    • DB の拡張処理、圧縮処理
    • インデックスの作成
    • その他、「トランザクション ログ」に記録されない操作

次の種類がある。

種類 内容
完全バックアップ DB 全体
差分バックアップ 最後の完全バックアップ以降の変更分
トランザクション ログ バックアップ 最後のログ バックアップ以降のログ(増分に相当)

補足(差分と増分の違いに注意): この 2 つは混同されやすい。

何からの差か リストアに要るもの
差分(Differential) 最後の「完全」から 完全 + 最新の差分 1 つだけ
増分(ログ バックアップ) 最後の「同種」から 完全 + 差分 + その後の全ログ
完全 ── 差分1 ── 差分2 ── 差分3      ← 復元は「完全 + 差分3」
完全 ── ログ1 ── ログ2 ── ログ3      ← 復元は「完全 + ログ1 + 2 + 3」

差分は「回を重ねるほど大きくなるが、リストアが速い」、
ログは「小さいが、1 つ欠けるとそこから先を復元できない」。
実務では 週次の完全 + 日次の差分 + 数分ごとのログという
組み合わせがよく使われる。

復旧モデル

復旧モデルによってトランザクション・ログの出力が変わり、
これによって選択可能なオンライン・バックアップ方式が変わる。

復旧モデル ログ バックアップ 復旧できる時点
単純 (Simple) 不可 最後の完全 / 差分の時点まで
完全 (Full) 障害直前まで(ポイントインタイム)
一括ログ (Bulk-logged) 可(制限あり) 一括操作中を除き障害直前まで

補足(復旧モデルの選択が最重要): バックアップ設計の起点はここである。

  • 「単純」のまま本番運用しているというのが最も多い事故のもとで、
    この場合前回のバックアップ以降のデータは復旧できない
  • 逆に「完全」にしたのにログ バックアップを取っていないと、
    トランザクション ログが際限なく肥大してディスクを食い潰す。
症状 原因
ログ ファイルが巨大化する 完全モデルなのにログ バックアップを取っていない
障害時に数時間分のデータが飛ぶ 単純モデルを使っていた

「完全モデルにする」と「ログ バックアップを定期実行する」は
必ずセットである。片方だけでは事故になる。

バックアップの検証

補足(取るだけでは意味がない): バックアップ設計で最も忘れられるのが
復元の検証である。

観点 内容
RESTORE VERIFYONLY バックアップ ファイルが読めるか確認
CHECKSUM オプション 取得時にページのチェックサムを検証
DBCC CHECKDB 破損した DB をバックアップし続けていないか確認
復元訓練 別環境に実際に戻して RTO を測る

3 番目が特に重要で、破損したまま毎日バックアップを取り続け、
いざ戻したら壊れていた
という事故が実際に起こる。
DBCC CHECKDB を定期実行し、
健全性を確認してからバックアップする運用が望ましい。

参考

Microsoft Learn


Tags: 移行, データアクセス, SQL Server, バックアップ, 障害対応

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally