ログ配布の概要

ログ配布を使用すると、トランザクション ログ バックアップを、プライマリ サーバー インスタンスのプライマリ データベースから、別のセカンダリ サーバー インスタンスの 1 つ以上のセカンダリ データベースに自動的に送信できます。トランザクション ログ バックアップはセカンダリ データベースごとに個別に適用されます。オプションで用意する 3 台目のサーバー インスタンス (監視サーバー) では、バックアップ操作と復元操作の履歴と状態が記録されます。また、これらの操作がスケジュールどおりに実行されなかった場合に警告を通知することもできます。

ログ配布操作

ログ配布は、次に示す 3 つの操作から構成されます。

  1. プライマリ サーバー インスタンスでトランザクション ログをバックアップする。

  2. セカンダリ サーバー インスタンスにトランザクション ログ ファイルをコピーする。

  3. セカンダリ サーバー インスタンスでログ バックアップを復元する。

ログは、複数のセカンダリ サーバー インスタンスに配布できます。その場合、操作 2. と操作 3. が各セカンダリ サーバー インスタンスに対して繰り返し実行されます。

ログ配布構成は、自動的にはプライマリ サーバーからセカンダリ サーバーにフェールオーバーされません。プライマリ データベースが使用できなくなった場合は、任意のセカンダリ データベースを手動でオンラインにできます。

セカンダリ データベースをレポート作成に使用できます。詳細については、「クエリ処理でのセカンダリ サーバーの使用」を参照してください。

さらに、ログ配布構成の警告を構成できます。

プライマリ サーバーとプライマリ データベース

ログ配布構成のプライマリ サーバーは、実稼働サーバーである SQL Server データベース エンジンのインスタンスです。プライマリ データベースは、別のサーバーにバックアップするプライマリ サーバーのデータベースです。SQL Server Management Studio を使用したログ配布構成の管理は、すべてプライマリ データベースから実行されます。

プライマリ データベースでは、完全復旧モデルか一括ログ復旧モデルを使用する必要があります。単純復旧モデルにデータベースを切り替えると、ログ配布が機能しなくなります。

セカンダリ サーバーとセカンダリ データベース

ログ配布構成のセカンダリ サーバーは、プライマリ データベースのウォーム スタンバイ コピーを保持しておくサーバーです。セカンダリ サーバーには、複数の異なるプライマリ サーバーのデータベースのバックアップ コピーを格納できます。たとえば、1 つの部門で 5 台のサーバーを所有し、それぞれがミッション クリティカルなデータベース システムを運用しているものとします。この場合、5 台のセカンダリ サーバーを所有する必要はなく、セカンダリ サーバー 1 台で運用することができます。5 つのプライマリ システムのバックアップを 1 つのバックアップ システムに読み込むと、必要なリソースの数が減少し、経費を節約できます。複数のプライマリ システムで同時に障害が発生することはあまり考えられません。複数のプライマリ システムが同時に使用できなくなったとしても、セカンダリ サーバーの仕様をプライマリ サーバーよりも高く設定しておけば対処できます。

セカンダリ データベースは、プライマリ データベースの完全バックアップを復元することによって初期化する必要があります。復元は、NORECOVERY オプションと STANDBY オプションのいずれかを使用して完了できます。この操作は、手動で実行するか、または SQL Server Management Studio を使用して実行できます。

監視サーバー

オプションの監視サーバーでは、ログ配布に関する次の詳細情報がすべて追跡されます。

  • プライマリ データベースのトランザクション ログが最後にバックアップされた日時

  • セカンダリ サーバーでバックアップ ファイルが最後にコピーおよび復元された日時

  • バックアップ障害の警告に関する情報

監視サーバーは、プライマリ サーバーやセカンダリ サーバーとは別のサーバーに配置する必要があります。これは、プライマリ サーバーやセカンダリ サーバーに障害が発生した場合に、重要な情報の損失や監視の中断を回避するためです。また、1 台の監視サーバーで複数のログ配布構成を監視できます。その場合は、その監視サーバーを使用するすべてのログ配布構成で 1 つの警告ジョブを共有することになります。

重要な注意事項重要

監視サーバーは、一度構成すると、最初にログ配布を削除しない限り変更できません。

詳細については、「ログ配布の監視」を参照してください。

ログ配布ジョブ

ログ配布は、専用の SQL Server エージェント ジョブによって処理される 4 つのジョブから構成されます。この 4 つのジョブは、バックアップ ジョブ、コピー ジョブ、復元ジョブ、および警告ジョブです。

ユーザーは、ログ バックアップを取得する頻度、各セカンダリ サーバーにコピーする頻度、およびセカンダリ データベースに適用する頻度を管理できます。たとえば実稼働システムで障害が発生した後でセカンダリ サーバーをオンラインにする作業量を減らすため、トランザクション ログ バックアップを作成した直後にコピーし、復元することができます。あるいは、たとえば 2 番目のセカンダリ サーバーで、トランザクション ログ バックアップをセカンダリ データベースに適用するのを遅らせることができます。この遅延により、誤って重要なデータを削除してしまったなど、プライマリ サーバーでの失敗に気付いて対応する時間を確保できます。

バックアップ ジョブ

バックアップ ジョブは、各プライマリ データベースのプライマリ サーバー インスタンスで作成されます。このジョブでは、バックアップ操作の実行、ローカル サーバーと監視サーバーへの履歴ログの記録、および古いバックアップ ファイルと履歴情報の削除を行います。このジョブは既定では 15 分ごとに実行されますが、この間隔はカスタマイズできます。

SQL Server エージェント ジョブ カテゴリの "ログ配布のバックアップ" は、ログ配布を有効にしたときにプライマリ サーバー インスタンスで作成されます。

SQL Server 2008 Enterprise 以降のバージョンでは、バックアップの圧縮がサポートされています。ログ配布構成の作成時に、ログ バックアップのバックアップ圧縮動作を制御できます。詳細については、「バックアップの圧縮 (SQL Server)」を参照してください。

コピー ジョブ

コピー ジョブは、ログ配布構成の各セカンダリ サーバー インスタンスで作成されます。このジョブでは、プライマリ サーバーからセカンダリ サーバーの構成可能なコピー先にバックアップ ファイルをコピーし、セカンダリ サーバーと監視サーバーの履歴ログを記録します。コピー ジョブのスケジュールはカスタマイズ可能ですが、バックアップ スケジュールに近い設定にします。

SQL Server エージェント ジョブ カテゴリの "ログ配布のコピー" は、ログ配布を有効にしたときにセカンダリ サーバー インスタンスで作成されます。

復元ジョブ

復元ジョブは、各ログ配布構成のセカンダリ サーバー インスタンスで作成されます。このジョブでは、コピーされたバックアップ ファイルをセカンダリ データベースに復元します。この操作により、ローカル サーバーと監視サーバーの履歴ログが記録され、古いファイルと履歴情報が削除されます。SQL Server ジョブ カテゴリの "ログ配布のログ復元" は、ログ配布を有効にしたときにセカンダリ サーバー インスタンスで作成されます。

特定のセカンダリ サーバー インスタンスで、復元ジョブをコピー ジョブと同じ頻度にスケジューリングしたり、復元ジョブを遅延させたりすることができます。これらのジョブを同じ頻度でスケジューリングすることで、セカンダリ データベースをプライマリ データベースにできるだけ近い状態にし、ウォーム スタンバイ データベースを作成できます。

これに対して、復元ジョブをたとえば数時間遅延させることは、テーブルの削除や誤って行を削除してしまった場合など、重大なユーザー エラーが発生したときに有効な場合があります。エラーの時刻がわかる場合、セカンダリ データベースをエラーの直前まで戻すことができます。その後、失われたデータをエクスポートし、プライマリ データベースにインポートすることができます。

警告ジョブ

監視サーバーを使用すると、監視サーバー インスタンスで警告ジョブが作成されます。この警告ジョブは、この監視サーバー インスタンスを使用しているすべてのログ配布構成のプライマリ データベースとセカンダリ データベースによって共有されます。警告ジョブに変更 (ジョブのスケジュールの再設定、無効化、有効化など) を加えると、その監視サーバーを使用しているすべてのデータベースが影響を受けます。このジョブでは、バックアップと復元操作が指定したしきい値の範囲内で完了しなかった場合に、プライマリ データベースとセカンダリ データベースに対する警告 (警告番号を指定する必要があります) を通知します。これらの警告は、ログ配布の障害に関する通知をオペレーターが受信するように構成する必要があります。SQL Server エージェント ジョブ カテゴリの "ログ配布の警告" は、ログ配布を有効にしたときに監視サーバー インスタンスで作成されます。

監視サーバーを使用しない場合、警告ジョブは、プライマリ サーバー インスタンスと各セカンダリ サーバー インスタンスにローカルで作成されます。プライマリ サーバー インスタンスの警告ジョブは、指定されたしきい値の範囲内でバックアップ操作が正常に完了しなかった場合にエラーを通知します。セカンダリ サーバー インスタンスの警告ジョブは、指定されたしきい値の範囲内でローカルのコピー操作と復元操作が正常に完了しなかった場合にエラーを通知します。

通常のログ配布構成

次の図に、プライマリ サーバー インスタンス、3 台のセカンダリ サーバー インスタンス、および監視サーバー インスタンスを使用するログ配布構成を示します。この図に示されているバックアップ ジョブ、コピー ジョブ、および復元ジョブの実行手順は、次のようになります。

  1. プライマリ サーバー インスタンスがバックアップ ジョブを実行し、プライマリ データベースのトランザクション ログをバックアップします。このサーバー インスタンスは、次にログ バックアップをプライマリ ログ バックアップ ファイルに配置し、バックアップ フォルダーに送信します。この図では、バックアップ フォルダーは共有ディレクトリ (バックアップ共有) にあります。

  2. 3 台のセカンダリ サーバー インスタンスは、それぞれのコピー ジョブを実行し、プライマリ ログ バックアップ ファイルをローカルのコピー先フォルダーにコピーします。

  3. 各セカンダリ サーバー インスタンスは、それぞれの復元ジョブを実行し、ログ バックアップをローカルのコピー先フォルダーからローカル セカンダリ データベースに復元します。

プライマリ サーバー インスタンスおよびセカンダリ サーバー インスタンスは、それぞれの履歴および状態を監視サーバー インスタンスに送信します。

ジョブのバックアップ、コピー、復元を示す構成

ログ配布を有効にするには