Your SlideShare is downloading. ×
Sql server のバックアップとリストアの基礎
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Sql server のバックアップとリストアの基礎

34,271
views

Published on


0 Comments
23 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
34,271
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
246
Comments
0
Likes
23
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. SQL Server のバックアップとリストアの基礎 小澤 真之 (@Masayuki_Ozawa) http://engineermemo.wordpress.com
  • 2. 本日の Agenda データベースの基本構成とデータ更新時の流れ 復旧モデルとバックアップの種類 バックアップの基礎 リストアの基礎2 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 3. データベースの基本構成と データ更新時の流れ3 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 4. なぜバックアップの前にこの章が? バックアップとリストアを勉強するためには SQL Server のデータベースの構成を理解しておく必要が あります。  データベースの構成とバックアップの取得単位には密接 な関わりがあります。 データ更新の流れを理解することでバックアップ / リストアに影響のある設定の理解が深まります  なぜ、そのバックアップを取得する必要があるかの理解 につながります。 4 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 5. まずはデータベースの基本構成をおさらい データベース データ ファイルグループ (PRIMARY) データファイル (.mdf) Table_1 Table_2 Index_1 ログ ログファイル (.ldf)5 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 6. 各構成要素の役割 構成要素 説明データベース データ データファイルを束ねるための論理名 ファイルグループ PRIMARY というファイルグループが必ず作成される 実際にデータが格納される領域 データファイルは必ず一つのファイルグループに所属する (複数のファイルグループには所属できない) データファイル デフォルトは ~.mdf (プライマリデータファイル) 2 個目以降は ~.ndf (セカンダリデータファイル) 複数のファイルを用意することで書き込みが分散される ログ データベースの変更に対してのログ (履歴) を格納する領域 デフォルトは ~.ldf ログファイル 2 個目以降も ~.ldf ログはシーケンシャル (順次) 書き込みされるため、複数の ファイルを用意しても書き込みは分散されない6 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 7. 複数のファイルグループを使用した構成 データベース データ ファイルグループ (PRIMARY) データファイル 1 (.mdf) データファイル 2 (.ndf) Table_1 Table_2 ファイルグループ (INDEX) データファイル 3 (.ndf) データファイル 4 (.ndf) Index_1 Index_2 ログ ログファイル (.ldf)7 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 8. データ変更の基本動作 ④クライアントからみて 処理完了 ①データ更新 SQL Server データベース メモリクライアント データファイル (mdf) ②更新内容を ログに先行書き込み ログファイル (ldf) ③メモリ上のデータを更新 (ダーティーページが発生)ダーティー (汚れた) ページ: 物理書き込みが行われていない メモリ上のページ ⑤チェックポイント発生時にチェックポイント: ダーティーページを メモリ上のダーティーページを データファイルに書き込み ディスク上のデータファイルに反映 8 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 9. データ変更時の流れのおさらい 変更内容は最初にログファイルに書き込まれる  ログレコードを先行書き込みする データの変更は最初にメモリ上のデータに対して変更が 行われる  ログファイルに書き込まれた内容が不要になるのは、メモリ上 でのみ変更されているデータの内容 (ダーティーページ) が データファイルにも反映されたタイミング チェックポイントというプロセスが発生するとメモリ上 のダーティーページがデータファイルに書き込まれる  チェックポイントが自動的に発生する頻度を制御するのが [復 旧間隔] という設定  デフォルトの設定 [0] だと約 1 分間隔でチェックポイントが発生 する  CHECKPOINT を実行することで手動でチェックポイントを発 生させることも可能 9 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 10. 参考) 復旧間隔の設定画面 データベースを復旧するのに必要な時間の最大値を分単位で設定 SQL Server 起動時にデータベースの復旧 (ロールバック / ロールフォワー ド)にかかる時間を設定する 設定値が大きいとチェックポイントの発生頻度が低くなるためディスク負 荷が下がるが、SQL Server 起動時の復旧時間が長くなる10 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 11. 参考)Indirect Checkpoints Denali ではデータベース単位に設定できるようになるようです  Indirect Checkpoints http://technet.microsoft.com/en-us/library/ms189573(SQL.110).aspx#IndirectChkpt 11 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 12. 復旧モデルとバックアップの関係12 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 13. 復旧モデルの種類と利用可能なバックアップ復旧モデル 復旧可能タイミング 取得可能なバックアップ 作業の損失の可能性単純 バックアップの終了時点 - 完全バックアップ 最新のバックアップ以降の変更は保 - 差分バックアップ 護されない ログのバックアップは取得できない チェックポイント発生時にログの切 り捨てが自動で行われる一括ログ バックアップの終了時点 - 完全バックアップ ログ末尾のバックアップが取得でき - 差分バックアップ れば障害発生の直前まで復元可能 特定の時点への復旧はサポート - トランザクションログバックアップ ただし、時間指定の復元はできない されていない ログバックアップを取得しないと 場合もある (特定の条件を満たしていれば ログは切り捨てられない 特定の時点に復旧も可能)完全 特定の時点に復旧 - 完全バックアップ ログ末尾のバックアップが取得でき(デフォルト) - 差分バックアップ れば障害発生の直前まで復元可能 - トランザクションログバックアップ ログバックアップを取得しないと ログは切り捨てられない 13 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 14. どの時点のデータまで戻しますか? バックアップ終了時点までのデータを担保すればよいの であれば [単純] で本番運用も可  SQL Server のバックアップはバックアップ取得中に発生した 変更点のログをバックアップの最後に取得するためバックアッ プの開始時点のデータには戻らない それより細かい粒度でリストアをするのであれば、[一括 ログ] [完全] を使用  一括ログと完全の使い分けは最小ログ記録に該当する操作をす るかどうか  インデックスの再構築 / 一括インポート (BCP ツールや BULK INSERT) は最小ログ記録に該当する操作  [一括ログ] の場合は、最小ログ記録に該当する操作を実施し た場合、ログの記録量を抑えることができる  ただし、最小ログ記録の操作を行った時間帯のログのバックアッ プからは、特定の時間帯に戻すことはできない 14 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 15. 最小ログ記録について 最小ログ記録の操作をするときに、復旧モデルを [単純] または [一括ログ] にすることでログに記録 される内容を最小限にすることができる  一括インポート操作 (BCP ツールや BULK INSERT) に ついては特定の条件を満たす必要がある  一括インポートで最小ログ記録を行うための前提条件 http://msdn.microsoft.com/ja-jp/library/ms190422.aspx  データ ローディング パフォーマンス ガイド http://technet.microsoft.com/ja-jp/library/dd425070(SQL.100).aspx 通常は復旧モデルを [完全] で運用し、最小ログ記録操作を行うときに [一括ログ] に変更することでログへの書き込みを最適化することも可 能  完全復旧モデルまたは一括ログ復旧モデルからの切り替え http://msdn.microsoft.com/ja-jp/library/ms190203.aspx 15 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 16. インデックス再構築時のログの比較 約20 MB のインデックスを再構築した場合のログレ コードのサイズ比較  復旧モデル = 完全 約 22MB  復旧モデル = 一括ログ 同じ操作でも一括ログのほうが 書き込まれるログレコードが少ない!! 約 1MB 16 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 17. バックアップの基礎17 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 18. バックアップの種類バックアップの種類 バックアップの特徴完全バックアップ 特定のデータベース、またはファイル グループやファイルのデータがすべて含まれる バックアップには使用済みの領域のみ含まれるため、未使用の領域はバックアップには含ま れない データを復旧するために必要なログも含まれる (データを復旧するために必要でないログは含まれていないためバックアップのサイズはデー タファイルの使用領域+ログファイルの使用領域とはならない)差分バックアップ 差分バックアップには、最後に実施した完全バックアップ以降に変更されたデータのみが含 まれる 時間の経過と共にデータベースが更新されるにつれて、差分バックアップに含まれるデータ 量が増える (全データが更新された場合は完全バックアップと同等のサイズになる) 復元時には、完全バックアップを先に復元し、続いて最新の差分バックアップを復元するトランザクションログ 完全復旧モデルまたは一括ログ復旧モデルでは、トランザクション ログ バックアップ (ログバックアップ バックアップ) が必要になる。 トランザクション ログは、通常のログ バックアップ後に毎回切り捨てられる (バックアップを取らないとログは切り捨てられない) 完全復旧モデル、および一括ログ復旧モデル (条件あり) では、ログ チェーン (ログの連続 性) が途切れていなければデータベースを任意の時点に復元できる。 18 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 19. 参考) バックアップのクエリ 完全バックアップ  BACKUP DATABASE [DB 名] TO [取得先] 差分バックアップ  BACKUP DATABASE [DB 名] TO [取得先] WITH DIFFERENTIAL トランザクションログ バックアップ  BACKUP LOG [DB 名] TO [取得先] 19 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 20. バックアップの取得単位 データベース 今回の内容 データ ファイルグループ (PRIMARY) データファイル (.mdf) Table_1 Table_2 Index_1 ログ 今回の内容 ログファイル (.ldf)20 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 21. バックアップの取得先 ディスク  一般的なバックアップ取得先  SQL Server のサービスアカウントがアクセスできるディレ クトリの必要がある。  NULL デバイスに取得することも可能 共有フォルダ  取得先は SQL Server のサービスアカウントがアクセスでき る共有ディレクトリの必要がある テープ  テープ バックアップ デバイスは、将来のバージョンの SQL Server でサポートされなくなる予定  Code Name “Denali” CTP3 ではテープのラジオボタンがありま した (テープ装置が自宅にないので実際には試せておらずグレーアウト) の 3 種類に取得可能 21 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 22. 参考) バックアップの取得先 ディスク  BACKUP DATABASE [DB 名] TO DISK=N‘E:¥BACKUP¥master.bak‘ NULL デバイス  BACKUP DATABASE [DB 名] TO DISK=N‘NUL‘ (NUL: でも可) 共有フォルダ  BACKUP DATABASE [DB 名] TO DISK=N‘¥¥Server¥Share¥master.bak‘ テープ  BACKUP DATABASE [DB 名] TO TAPE= ¥¥.¥tape0 22 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 23. 3 種類のバックアップを利用した基本設定例 日 月 火 水 木 金 土 0:00 完全バックアップ (上書き) 0:00 0:00 0:00 0:00 0:00 0:00 差分 差分 差分 差分 差分 差分 バックアップ バックアップ バックアップ バックアップ バックアップ バックアップ (上書き) (上書き) (上書き) (上書き) (上書き) (上書き) 1時間毎 1時間毎 1時間毎 1時間毎 1時間毎 1時間毎 1時間毎 ログ ログ ログ ログ ログ ログ ログバックアップ バックアップ バックアップ バックアップ バックアップ バックアップ バックアップ (追記) (追記) (追記) (追記) (追記) (追記) (追記) 1 週間前のバックアップ 削除 23 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 24. 通常のバックアップの取得タクト 完全バックアップ 1 差分バックアップ 1完全バックアップ 1 からの差分 差分バックアップ 2 ログバックアップ 1 ログバックアップ 1 ログバックアップ 2 からの差分 24 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 25. 臨時のバックアップを取るためには 完全 → 差分 → ログバックアップは基本的には相互 に関連した一連のバックアップとなる 運用で一連のバックアップとは異なる臨時のバック アップを取得したい場合には [COPY_ONLY] のオプ ションを設定してバックアップを取得する  COPY_ONLY は [完全] または [トランザクションログ] のバックアップでのみ使用可能  差分バックアップには COPY_ONLY オプションは使用で きない 25 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 26. 普通に完全バックアップを取ると? 完全バックアップ 1完全バックアップ 1 差分バックアップ 1 からの差分 完全バックアップ 2 完全バックアップ 2 差分バックアップ 2 からの差分 通常のバックアップとバックアップデータの 関連性が変わるためリストアに影響が 26 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 27. COPY_ONLY を使用した場合 完全バックアップ 1完全バックアップ 1 差分バックアップ 1 からの差分 COPY_ONLY バックアップ完全バックアップ 1 差分バックアップ 2 からの差分 COPY_ONLY 既存のバックアップの関係を崩さないので 途中でバックアップを取得しても差分バックアップ 2 は 完全バックアップ 1 からの差分 27 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 28. COPY_ONLY バックアップの取得28 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 29. そのバックアップ本当に大丈夫? 壊れた状態のデータベースのバックアップを取得し ても壊れたまま  壊れていない状態のデータベースでバックアップを取得 することが重要 壊れている状態のデータベースのバックアップをリスト アしてもデータベースは壊れたまま バックアップの取得前に [DBCC CHECKDB] を実施、 またはバックアップ取得時にチェックサムの確認を 行い、取得するデータベースが破損していないかを 確認することが重要 29 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 30. 破損しているデータベースメッセージ824、レベル24、状態2、行1SQL Server で、一貫性に基づいた論理I/O エラーが検出されました: 正しくないチェックサム(必要なチェックサム: 0xc9b63224、実際のチェックサム: 0x4996b23e)。このエラーは、ファイルE:¥SQL2008R2¥BROKEN.mdf のオフセット0x00000000266000 にあるデータベースID が14 のページ(1:307) の読み取り中に発生しました。SQL Server エラーログまたはシステムイベントログ内の別のメッセージで詳細情報が報告されることもあります。このエラー状態は深刻で、データベースの整合性を損なう可能性があるので、すぐに解決する必要があります。完全なデータベース一貫性確認(DBCC CHECKDB) を実行してください。このエラーには多くの要因があります。詳細については、SQL Server オンラインブックを参照してください。 msdb の suspect_pages テーブル ※最大 1,000 件 30 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 31. メンテナンスプランを使用したバックアップ設定 バックアップの前ジョブで 整合性確認タスク (DBCC CHECKDB) を実行31 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 32. バックアップ取得時のチェックサム確認 バックアップ時にデータファイルの チェックサムからページの整合性を 検出させることもできる32 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 33. 障害発生時のバックアップ 障害が発生している状態のデータベースでログ末尾のバック アップ (現状のログのバックアップ) が取得できれば障害発生 直前まで復元が可能 ログ末尾のバックアップが取得できない場合は最新のログ バックアップまでしか復元できない 正常稼働 障害発生 完全 差分 ログバックアップ バックアップ バックアップ ログ末尾の バックアップ 33 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 34. 参考) ログ末尾のバックアップ BACKUP LOG [DB 名] TO [取得先] WITH NO_TRUNCATE  NO_TRUNCATE で取得できない場合は、 CONTINUE_AFTER_ERROR を使用する 34 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 35. バックアップの時間を減らすために SQL Server 2008 以降はバックアップ圧縮を実装  SQL Server 2008 では Enterprise Edition の機能であったが、 SQL Server 2008 R2 では、Standard Edition から使用可能 に  暗号化 / 圧縮されているデータベースに対してはサイズが大 幅に減少することはない (行圧縮のテーブルに対しては効果があることも) バックアップ実行時の CPU 使用率が非圧縮と比較して 上昇することを把握しておく  リソース ガバナー (CPU / メモリリソースの利用調整機能) を 使用することで CPU 使用率を制限することも可能  ただし、リソース ガバナーは Enterprise Edition 以上の機能 35 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 36. リストアの基礎36 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 37. 完全バックアップのリストア 単体でリストア可能 (mdf / ndf / ldf ファイルを復元)  リストア時にファイルを作成してくれる  瞬時初期化という設定はデータのリストア時にも有効 (今回は紹介のみ)  SQL Server におけるバックアップと復元のパフォーマンスの最適化 http://msdn.microsoft.com/ja-jp/library/ms190954.aspx バックアップに含まれるデータをログを含めてリストア  バックアップ中の変更は含まれているログを使用してロールフォワード データ バックアップ開始時点のデータ ログ バックアップ中の変更 37 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 38. 差分バックアップのリストア 単体でリストア不可。 差分バックアップ取得前の完全バックアップと組み 合わせてリストアをする 差分バックアップは前回の完全バックアップからの 差分になるため、複数の差分バックアップがあって も、最新の差分バックアップをリストアすれば、そ れまでのデータがリストアされる データ 前回完全バックアップからの変更分のデータ ログ バックアップ中の変更 38 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 39. トランザクションログ バックアップのリストア 単体でリストア不可 完全バックアップ / 差分バックアップと組み合わせてリ ストアする トランザクションログのバックアップを使用することで、 特定の時間に戻すことが可能となる  最小ログ記録操作の含まれるログバックアップでは特定の時間 に戻すことはできない データ 最小ログ記録で変更のあったデータ ログ 前回ログバックアップからの変更 39 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 40. 最小ログ記録時のログバックアップの比較 完全バックアップのログバックアップ  データベースTESTDB の2665 ページ、ファイル1 のファイルTESTDB_log を 処理しました。  BACKUP LOG により2665 ページが0.302 秒間で正常に処理されました(68.938 MB/秒)。 一括ログ のログバックアップ  データベースTESTDB の2608 ページ、ファイル1 のファイルTESTDB を処 理しました。  データベースTESTDB の117 ページ、ファイル1 のファイルTESTDB_log を処 理しました。  BACKUP LOG により2725 ページが0.633 秒間で正常に処理されました(33.621 MB/秒)。 バックアップのログから復旧モデルが一括ログの場合で 最小ログ記録操作があった場合はログバックアップ時に 変更のあったデータが取得されていることが確認できる 40 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 41. バックアップの内容から最小ログの有無を確認 HasBulkLoggedData 最小ログ記録の操作を含むかのフラグ41 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 42. リストアの基本手順1. (ログ末尾のバックアップを取得) 1. Denali CTP3 では SSMS からのリストア時に ログバックアップを取得することが可能2. 最新の完全バックアップをリストア3. 最新の差分バックアップをリストア4. 最新の差分バックアップ以降のトランザクションログ バックアップをリストア  完全バックアップ + ログバックアップのリストアでも可5. ログ末尾のバックアップをリストア 42 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 43. 43 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 44. 参考)2008 R2 と Denali CTP3 の違い 1/3 2008 R2 Denali CTP344 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 45. 参考)2008 R2 と Denali CTP3 の違い 2/3 2008 R2 Denali CTP345 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 46. 参考)2008 R2 と Denali CTP3 の違い 3/3 2008 R2 Denali CTP346 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net
  • 47. まとめ どの時点までデータを保証するかを検討 バックアップの種類と含まれる内容を把握 戻せるバックアップを取得47 SQLTO 第 1 回勉強会 2011/7/23 http://www.sqlto.net

×