災害時の復旧計画

SQL Server データベースの管理において重要になるのが、災害から復旧するための準備です。災害後にデータベースを復旧するには、SQL Server バックアップ用に十分に策定およびテストされたバックアップと復元の計画が必要です。詳細については、「SQL Server のバックアップと復元のストラテジの概要」を参照してください。さらに、自然災害が発生した場合にすべてのシステムおよびデータを短時間で通常の運用状態に復元できるようにするには、災害時の復旧計画を作成する必要があります。復旧計画を作成する場合は、業務に影響を与える可能性のあるさまざまな種類の災害を考慮に入れてください。このような災害には、火事などの自然災害や、RAID-5 アレイで 2 台のディスクが故障するなどの技術障害が含まれます。そのうえで、災害の種類ごとに必要な対処方法を決定し、万全の準備を整えておきます。また、各シナリオの復旧手順のテストも必要です。自然災害を想定したシミュレーションを使用して、災害復旧計画を確認することをお勧めします。

バックアップおよび復旧の計画を立てる場合は、特定の環境とビジネス ニーズに応じて、災害時の復旧計画を検討します。たとえば、24 時間稼働のデータ センターが火災で全焼したとします。確実に復旧できるでしょうか。システムを復旧して利用可能な状態にするまでに、どのくらい時間がかかるでしょうか。ユーザーが許容できるデータ損失はどの程度でしょうか。

災害復旧計画では、復旧にかかる時間と、ユーザーが期待できるデータベースの最終的な状態を示すことが望まれます。たとえば、指定されたハードウェアの入手後 48 時間で復旧が完了し、前の週の終わりまでしかデータの復旧が保証されないという判断になる可能性があります。

災害復旧計画はさまざまな方法で構成でき、次のような各種の情報を含めることができます。災害復旧計画の種類は次のとおりです。

  • ハードウェアの入手計画。

  • 通信計画。

  • 災害発生時に連絡する担当者の一覧。

  • 災害発生時の担当者への連絡方法。

  • 計画の管理責任者に関する情報。

  • 各復旧シナリオに必要な作業のチェック リスト。災害復旧の進捗状況確認を容易にするため、各作業の完了時にイニシャルで署名し、チェック リストに完了時刻を示します。

SQL Server の復旧モデル

SQL Server には、単純、完全、および一括ログという 3 つの復旧モデルが用意されています。復旧モデルは、データベースのバックアップおよび復元操作の基本動作を制御するデータベース プロパティです。バックアップおよび復元の方法を計画する際には、データベースごとに最適な復旧モデルを選択する必要があります。特定のデータベース用の復旧モデルの選択は、可用性と復旧の要件によって多少左右されます。復旧モデルの選択は、逆に、データベースの災害復旧の可能性にも影響を与えます。

復旧モデルの概要については、「復旧モデルの概要」を参照してください。

バックアップ メディアの管理

バックアップ計画では、次のように、バックアップ メディアの管理について考慮することをお勧めします。

  • バックアップ セットを保存して再利用するための追跡および管理計画

  • バックアップ メディアの上書きスケジュール

  • マルチサーバー環境で集中管理バックアップと分散型バックアップのどちらを使用するか

  • メディアの有効期間の追跡手段

  • バックアップ セットまたはテープなどのバックアップ メディアを紛失した場合の影響を最小限に抑えるための手順

  • バックアップをオンサイトとオフサイトのどちらに保存するか、およびこれが復旧時間に及ぼす影響

SQL Server でのバックアップ デバイスおよびメディアの使用方法については、「SQL Server でのバックアップ メディアの操作」を参照してください。

基本機能スクリプトの実行

通常は、すべてが意図したとおりに機能していることを確認するために、災害復旧計画の一部として基本機能スクリプトを含めます。基本機能スクリプトは、システム管理者やデータベース管理者が、エンド ユーザーによる確認に依存することなく、データベースが利用可能な状態に戻ったことを確認するための信頼性の高いツールです。

基本機能スクリプトはアプリケーションごとに異なり、さまざまな形式を取ります。たとえば、意思決定支援やレポート作成を目的とするシステムの場合、スクリプトは単に主要ないくつかのレポート クエリのコピーである可能性もあります。オンライン トランザクション処理 (OLTP) アプリケーションの場合、スクリプトは INSERT、UPDATE、および DELETE の各ステートメントを実行する一連のストアド プロシージャを実行する場合があります。たとえば、基本機能スクリプトは、バッチ化された SQL ステートメントを sqlcmd ユーティリティからサーバーに送信する .sql ファイルのように単純にできます。他に、bcp コマンドと sqlcmd コマンドの両方を含む .bat ファイルを使用する例もあります。

災害即応性の確保

災害への即応性を確保するため、次の作業を定期的に実行することをお勧めします。

  • 実際に障害が発生する前に、バックアップおよび復旧の手順を十分にテストします。テストによって、さまざまな障害から復旧するために必要なバックアップがあること、手順が明確に定義されて文書化されていること、および資格のあるオペレータであればだれでもすぐに問題なく手順を実行できることを確認できます。

  • データ損失を最小限に抑えるために、データベースとトランザクション ログを定期的にバックアップします。システム データベースおよびユーザー データベースの両方をバックアップすることをお勧めします。

  • システム ログを安全な方法で保管します。Microsoft Windows および SQL Server にインストールされているすべてのサービス パックの記録を保管します。使用するネットワーク ライブラリおよびセキュリティ モードの記録を保管します。また、SQL Server が混合モード認証 (SQL Server 認証モードと Windows 認証モード) で実行されている場合は、sa パスワードをセキュリティで保護された場所に記録します。詳細については、「セキュリティと保護 (データベース エンジン)」を参照してください。

    重要な注意事項重要

    Windows 認証は、SQL Server 認証よりもはるかに安全性に優れています。可能な場合は、Windows 認証を使用することをお勧めします。

  • 別のサーバーで、災害からの復旧に必要なステップを評価します。必要に応じて、ローカル サーバー環境に適合するようステップを修正し、その修正済みのステップをテストします。

  • 最小限の機能が実現されているかどうかをすばやく調べるための基本機能スクリプトをメンテナンスします。

障害の原因となる可能性があるユーザー エラーの監査と削減

より困難な復旧シナリオの 1 つとして、ユーザーが誤ってデータベース オブジェクトを削除した場合など、深刻なユーザー エラーからの復旧があります。ここでは、データベースに対する変更の監査と、場合によっては制御を支援するツールを紹介します。

  • データ定義言語 (DDL) トリガ

    これらのトリガは、データベース スキーマに対する特定の変更を監査および制御するために作成できます。DDL トリガにより、さまざまな DDL ステートメントに応答してストアド プロシージャが起動されます。DDL ステートメントは、主に、CREATE、ALTER、および DROP で始まるステートメントです。DDL トリガのスコープは、特定のデータベースまたはサーバー インスタンス全体のいずれかです。詳細については、「DDL トリガについて」を参照してください。

  • イベント通知

    イベント通知は、さまざまな Transact-SQL DDL ステートメントおよび SQL トレース イベントに応答して実行され、これらのイベントに関する情報を Service Broker サービスに送信します。

    イベント通知は、SQL トレースによってキャプチャされる同じイベントの多くに対してプログラミングできます。ただし、トレースの作成とは異なり、イベント通知は、イベントに応答して SQL Server のインスタンス内部でアクションを実行するために使用できます。イベント通知では、これらのアクションが非同期に実行されるので、即時トランザクションで定義されたリソースがすべて使用されるわけではありません。詳細については、「イベント通知 (データベース エンジン)」を参照してください。

    注意

    DDL トリガでは、すべての DDL イベントが使用できるわけではありません。トランザクション処理されない非同期ステートメントのみに対応したイベントもいくつかあります。たとえば、DDL トリガでは CREATE DATABASE イベントは使用できません。このようなイベントには、イベント通知を使用してください。

  • SQL Server エージェント

    SQL Server エージェントは、ジョブと呼ばれる管理タスクをスケジュールに従って実行する Windows サービスです。SQL Server エージェントは SQL Server を使用してジョブ情報を格納します。SQL Server エージェントでは、特定の重大度またはメッセージ番号が設定されているエラーが発生した場合など、特定のイベントに応じたジョブの実行が可能です。

    SQL Server エージェントの概要については、「管理タスクの自動化 (SQL Server エージェント)」を参照してください。イベントに対する SQL Server エージェントの使用方法については、「イベントの監視と応答」を参照してください。

  • SQL トレース

    SQL トレースは、SQL Server データベース エンジンのインスタンスでユーザーが選択したイベント クラスのトレースを作成する Transact-SQL システム ストアド プロシージャを提供します。これらのシステム ストアド プロシージャをユーザー独自のアプリケーションから使用して、トレースを手動で作成することができます。詳細については、「SQL トレースの概要」を参照してください。

    注意

    SQL Server Profiler は、データベース エンジンまたは Analysis Services のインスタンスを監視するための SQL トレースのグラフィカル ユーザー インターフェイスです。詳細については、「SQL Server Profiler の使用」を参照してください。