ミラーリングの状態の監視

サーバー インスタンス上の 1 つ以上のミラー化されたデータベースの監視を設定および管理するには、データベース ミラーリング モニタまたは dbmmonitor システム ストアド プロシージャを使用します。ミラーリング セッション中にミラー化されたデータベースを監視すると、データ フローが発生しているかどうかや、データ フローがどの程度適切に行われているかを確認することができます。

ミラー化されたデータベースを監視した場合、具体的には次のことを行えます。

  • ミラーリングが機能していることを確認する。

    基本状態には、2 つのサーバー インスタンスが動作しているかどうかを判断するための情報や、それらのサーバーが接続されており、ログがプリンシパルからミラーへ移動中であることを示す情報が含まれています。

  • ミラー データベースがプリンシパル データベースから遅延していないかどうかを特定する。

    高パフォーマンス モードでは、プリンシパル サーバーからミラー サーバーへ送信する必要がある未送信のログ レコードのバックログをプリンシパル サーバーで作成できます。さらに、どの動作モードの場合も、ログ ファイルに書き込まれ、かつ、ミラー データベースに復元する必要がある、復元されていないログ レコードのバックログをミラー サーバーで作成できます。

  • 高パフォーマンス モードにおいて、プリンシパル サーバー インスタンスが使用できなくなった場合に、損失したデータ量を特定する。

    未送信のトランザクション ログ (存在する場合) の量と、失われたトランザクションがプリンシパルでコミットされた時間間隔を調べることによって、データ損失を特定できます。

  • 現在のパフォーマンスを過去のパフォーマンスと比較する。

    問題が発生した場合、データベース管理者は、ミラーリング パフォーマンスの履歴を表示することで、現在の状態の理解に役立てることができます。履歴を調べると、パフォーマンスの傾向を検出することや、パフォーマンス上の問題のパターン (ネットワークが低速な時間帯やログに入力されるコマンド数が非常に多い場合など) を特定することができます。

  • ミラーリング パートナー間のデータ フローが減少した原因のトラブルシューティングを行う。

  • 主要なパフォーマンス基準に警告しきい値を設定する。

    しきい値を超える値が新しい状態行に含まれている場合、情報イベントが Windows イベント ログに送信されます。その場合、システム管理者は、それらのイベントに基づいて手動で警告を構成できます。詳細については、「ミラーリング パフォーマンス基準の警告しきい値および警告の使用」を参照してください。

データベース ミラーリングの状態を監視するためのツール

ミラーリングの状態は、データベース ミラーリング モニタまたは sp_dbmmonitorresults システム ストアド プロシージャを使用して監視できます。これらのツールを使用すると、どちらのシステム管理者も、ローカル サーバー インスタンス上でミラー化されたデータベースのデータベース ミラーリングを監視できます。この場合のシステム管理者は、sysadmin 固定サーバー ロールのメンバ、およびシステム管理者によって msdb データベースの dbm_monitor 固定データベース ロールに追加されたユーザーです。どちらのツールを使用した場合も、システム管理者はミラーリングの状態を手動で更新することもできます。

注意

システム管理者は主要なパフォーマンス基準の警告しきい値を構成および表示することもできます。詳細については、「ミラーリング パフォーマンス基準の警告しきい値および警告の使用」を参照してください。

  • データベース ミラーリング モニタ

    データベース ミラーリング モニタは、システム管理者が状態を表示および更新し、いくつかの主要なパフォーマンス基準の警告しきい値を構成できるグラフィカル ユーザー インターフェイス ツールです。また、dbm_monitor 固定データベース ロールのメンバは、状態テーブルを更新することはできませんが、データベース ミラーリング モニタを使用して、ミラーリング状態テーブルの最新の行を表示できます。

    データベース ミラーリング モニタでは、選択したデータベースの状態 (パフォーマンス基準を含む) が [状態] タブ ページに表示されます。このページには、プリンシパル サーバー インスタンスとミラー サーバー インスタンスの両方から取得された情報が表示されます。状態はプリンシパル サーバー インスタンスとミラー サーバー インスタンスへの別個の接続を使用して収集されるので、このページの値は非同期に設定されます。データベース ミラーリング モニタでは、30 秒間隔で状態テーブルの更新を試行します。更新が成功するのは、状態テーブルが 15 秒以内に更新されず、ユーザーが sysadmin 固定サーバー ロールのメンバである場合だけです。[状態] ページで報告される情報の概要については、後の「データベース ミラーリング モニタに表示される状態」を参照してください。

    データベース ミラーリング モニタのインターフェイスの概要については、「データベース ミラーリング モニタの概要」を参照してください。データベース ミラーリング モニタの起動方法については、「データベース ミラーリング モニタを起動する方法」を参照してください。

  • システム ストアド プロシージャ

    sp_dbmmonitorresults システム ストアド プロシージャを実行することによって、現在の状態を取得または更新することもできます。他の dbmmonitor ストアド プロシージャを使用すると、監視の設定、監視パラメータの変更、現在の更新期間の表示、およびサーバー インスタンスの監視の削除を行えます。

    次の表では、データベース ミラーリング モニタとは別にデータベース ミラーリングの監視を管理および使用するためのストアド プロシージャについて説明します。

    プロシージャ

    説明

    sp_dbmmonitoraddmonitoring

    サーバー インスタンス上のミラー化されたデータベースごとに、定期的に状態情報を更新するジョブを作成します。

    sp_dbmmonitorchangemonitoring

    データベース ミラーリング監視パラメータの値を変更します。

    sp_dbmmonitorhelpmonitoring

    現在の更新期間を返します。

    sp_dbmmonitorresults

    監視対象のデータベースの状態行を返すので、このプロシージャで事前に最新の状態を取得するかどうかを選択できます。

    sp_dbmmonitordropmonitoring

    サーバー インスタンス上のすべてのデータベースに対するミラーリング モニタのジョブを停止し削除します。

    dbmmonitor システム ストアド プロシージャは、データベース ミラーリング モニタを補完するものとして使用できます。たとえば、sp_dbmmonitoraddmonitoring を使用して監視が構成されていても、データベース ミラーリング モニタを使用して状態を表示できます。

監視のしくみ

ここでは、データベース ミラーリングの状態テーブル、データベース ミラーリング モニタのジョブとモニタ、データベース ミラーリングの状態の監視方法、および監視ジョブの削除方法について説明します。

データベース ミラーリング状態テーブル

データベース ミラーリングの状態は、msdb データベース内部の、文書化されていないデータベース ミラーリング状態テーブルに格納されます。この状態テーブルは、ミラーリングの状態がサーバー インスタンス上で最初に更新されたときに自動的に作成されます。

状態テーブルは、システム管理者が自動または手動のいずれかの方法で更新でき、最小更新間隔は 15 秒です。最小更新間隔である 15 秒を設定すると、状態の要求によってサーバー インスタンスが過負荷になるのを防ぐことができます。

状態テーブルは、データベース ミラーリング モニタと、実行されている場合にはデータベース ミラーリング モニタのジョブの両方によって自動的に更新されます。[データベース ミラーリング モニタのジョブ] では、既定により 1 分間に 1 回、状態テーブルを更新します (システム管理者は更新間隔として 1 ~ 120 分を指定できます)。これに対しデータベース ミラーリング モニタでは、30 秒ごとに自動的に状態テーブルを更新します。これらの更新では、[データベース ミラーリング モニタのジョブ] およびデータベース ミラーリング モニタによって sp_dbmmonitorupdate が呼び出されます。

sp_dbmmonitorupdate を最初に実行したときに、データベース ミラーリング状態テーブルと dbm_monitor 固定データベース ロールが msdb データベースに作成されます。sp_dbmmonitorupdate では、通常、サーバー インスタンス上のミラー化されたデータベースごとに、新しい行を状態テーブルに挿入することによってミラーリングの状態を更新します。詳細については、このトピックの「データベース ミラーリング状態テーブル」を参照してください。また、このプロシージャは、新しい行のパフォーマンス基準を評価して、現在の保有期間 (既定では 7 日) よりも古い行を切り捨てます。詳細については、「sp_dbmmonitorupdate (Transact-SQL)」を参照してください。

注意

状態テーブルは、[データベース ミラーリング モニタのジョブ] が存在し、SQL Server エージェントが実行されている場合にのみ、自動的に更新されます。ただし、データベース ミラーリング モニタが sysadmin 固定サーバー ロールのメンバによって使用中の場合は除きます。

データベース ミラーリング モニタのジョブ

データベース ミラーリング モニタのジョブである [データベース ミラーリング モニタのジョブ] の動作は、データベース ミラーリング モニタとは独立した動作です。[データベース ミラーリング モニタのジョブ] は、SQL Server Management Studio を使用してミラーリング セッションを開始した場合にのみ、自動的に作成されます。常に ALTER DATABASE database_name SET PARTNER コマンドを使用してミラーリングを開始している場合、このジョブは、システム管理者が sp_dbmmonitoraddmonitoring ストアド プロシージャを実行した場合にのみ存在します。

[データベース ミラーリング モニタのジョブ] が作成されると、SQL Server エージェントが実行されている場合、このジョブは既定により 1 分間に 1 回呼び出されます。次に、このジョブによって sp_dbmmonitorupdate システム ストアド プロシージャが呼び出されます。

SQL Server エージェントでは、既定により [データベース ミラーリング モニタのジョブ] を 1 分間に 1 回呼び出し、このジョブによって sp_dbmmonitorupdate が呼び出され、状態テーブルが更新されます。システム管理者は、sp_dbmmonitorchangemonitoring システム ストアド プロシージャを使用して更新間隔を変更し、sp_dbmmonitorchangemonitoring システム ストアド プロシージャを使用して現在の更新間隔を表示できます。詳細については、「sp_dbmmonitoraddmonitoring (Transact-SQL)」と「sp_dbmmonitorchangemonitoring (Transact-SQL)」を参照してください。

データベース ミラーリングの状態の監視 (システム管理者の場合)

sysadmin 固定サーバー ロールのメンバは、状態テーブルの表示と更新を行えます。

  • データベース ミラーリング モニタの使用

    データベース ミラーリング モニタを使用すると、システム管理者は [状態] ページ、ナビゲーション ツリー、または [履歴] ページを手動で更新できます。手動で更新した場合も、前回の更新から 15 秒以内に更新されていない限り、状態テーブルが更新されます。

    システム管理者は、サーバー インスタンスの [状態] ページにある [履歴] ボタンをクリックして、特定のサーバー インスタンスのミラーリングの状態の履歴を表示することもできます。履歴は、[データベース ミラーリングの履歴] ダイアログ ボックスに表示されます。システム管理者はこのダイアログ ボックスで、サーバー インスタンスの状態テーブルに含まれている一部またはすべての行を表示できます。

    [状態] ページの基準に関する詳細については、後の「データベース ミラーリング モニタに表示されるパフォーマンス基準」を参照してください。

  • sp_dbmmonitorresults の使用

    システム管理者は、sp_dbmmonitorresults システム ストアド プロシージャを使用して状態テーブルを表示できます。また、前回の更新から 15 秒以内に更新が行われていない場合には、必要に応じて状態テーブルを更新できます。このプロシージャは、sp_dbmmonitorupdate プロシージャを呼び出し、プロシージャ コールでの要求数に応じて 1 つ以上の履歴行を返します。返される結果セットの状態に関する詳細については、「sp_dbmmonitorresults (Transact-SQL)」を参照してください。

データベース ミラーリングの状態の監視 (dbm_monitor メンバの場合)

既に説明したように、sp_dbmmonitorupdate を初めて実行したときに、dbm_monitor 固定データベース ロールが msdb データベースに作成されます。dbm_monitor 固定データベース ロールのメンバは、データベース ミラーリング モニタまたは sp_dbmmonitorresults ストアド プロシージャを使用して既存のミラーリングの状態を表示できます。ただし、これらのユーザーは状態テーブルを更新できません。表示された状態の古さを調べるには、[状態] ページで [プリンシパル ログ (<time>)] ラベルと [ミラー ログ (<time>)] ラベルで時刻を確認できます。

dbm_monitor 固定データベース ロールのメンバは、[データベース ミラーリング モニタのジョブ] を使用して定期的に状態テーブルを更新します。ジョブが存在しない場合や SQL Server エージェントが停止している場合、状態が急速に古くなり、ミラーリング セッションの構成を反映しなくなることがあります。たとえば、フェールオーバー後、パートナーがプリンシパルまたはミラーなどの同じロールを共有しているように見えたり、現在のプリンシパル サーバーがミラー サーバーとして表示され、その一方で現在のミラー サーバーがプリンシパルとして表示されたりすることがあります。

データベース ミラーリング モニタのジョブの削除

データベース ミラーリング モニタのジョブである [データベース ミラーリング モニタのジョブ] は、削除するまでなくなりません。監視ジョブは、システム管理者が管理する必要があります。[データベース ミラーリング モニタのジョブ] を削除するには、sp_dbmmonitordropmonitoring を使用します。詳細については、「sp_dbmmonitordropmonitoring (Transact-SQL)」を参照してください。

データベース ミラーリング モニタに表示される状態

データベース ミラーリング モニタの [状態] ページには、パートナーと、ミラーリング セッションの状態が表示されます。この情報には、トランザクション ログの状態、フェールオーバーを完了するために必要な時間を推測するのに役立つその他の情報、データ損失の可能性 (セッションが同期されていない場合) などのパフォーマンス基準が含まれます。さらに、[状態] ページには、ミラーリング セッションに関する一般的な状態と情報が表示されます。

注意

データベース ミラーリング モニタと [状態] ページの概要については、前の「データベース ミラーリングの状態を監視するためのツール」を参照してください。

次のセクションでは、このページに表示される情報の概要を示します。

パートナー

[状態] ページには、次の情報がパートナーごとに表示されます。

  • サーバー インスタンス

    [状態] 行に状態が表示されているサーバー インスタンス名。

  • 現在のロール

    サーバー インスタンスの現在のロール。表示される状態は次のとおりです。

    • [プリンシパル]

    • [ミラー]

  • ミラーリング状態

    表示される状態は次のとおりです。

    • [不明]

    • [同期中]

    • [同期済み]

    • [中断状態]

    • [接続解除]

  • ミラーリング監視サーバーの接続

    ミラーリング監視サーバーの接続状態。表示される状態は次のとおりです。

    • [不明]

    • [接続されました。]

    • [接続解除されました。]

プリンパル サーバーへのログオン

[状態] ページには、表示された時点での、プリンシパル サーバーへのログオンの状態に関する次の情報が表示されます。

  • 未送信のログ

    送信キューで待機中のログの量 (KB 単位)。

  • 最も古い未送信のトランザクション

    送信キュー内で最も古い未送信トランザクションの経過期間。このトランザクションの経過期間は、トランザクションがミラー サーバー インスタンスに何分間送信されていないのかを示します。この値は、データ損失の可能性を時間の観点から測定するのに役立ちます。

  • ログの送信時間 (推定)

    プリンシパル サーバー インスタンスが、現在送信キューに格納されているログをミラー サーバー インスタンスに送信するのに必要な時間 (分)。現在の送信速度に基づく推定値です。ログの送信にかかる実際の時間は、受信トランザクションの速度の影響を受け、大きく異なることがあります。ただし、[ログの送信時間 (推定)] の値は、手動フェールオーバーに必要な時間を大まかに推定する際に役立つことがあります。

  • 現在の送信率

    トランザクションをミラー サーバー インスタンスに送信しているときの速度 (KB/秒)。

  • 新しいトランザクションの現在の比率

    受信トランザクションをプリンシパルのログに入力しているときの速度 (KB/秒)。ミラーリングで遅延、待機、遅延の解消が発生しているかどうかを特定するには、この値を [ログの送信時間 (推定)] の値と比較します。

ミラー サーバーへのログオン

[状態] ページには、表示された時点での、ミラー サーバーへのログオンの状態に関する次の情報が表示されます。

  • 復元されていないログ

    再実行キューで待機中のログの量 (KB 単位)。

  • ログの復元時間 (推定)

    現在再実行キューに格納されているログをミラー データベースに適用するために必要な時間の概算値 (分)。

  • 現在の復元比率

    トランザクションをミラー データベースに復元するときの速度 (KB/秒)。

ミラーリング セッション

さらに、[状態] ページには、ミラーリング セッションについて次の情報が表示されます。

  • ミラー コミットのオーバーヘッド

    1 トランザクションあたりの平均遅延時間 (ミリ秒単位)。高い安全性モードのみに関連します。この遅延は、ミラー サーバー インスタンスがトランザクションのログ レコードを再実行キューに書き込むまでプリンシパル サーバー インスタンスが待機しているときに発生するオーバーヘッドの量です。

  • 現在のすべてのログを送信して復元する時間 (推定)

    プリンシパルでコミットされていないすべての未送信ログを送信して、現在再実行キューに格納されているすべてのログを復元するために必要な時間の推定値。送信と復元が並行して実行される可能性があるので、この推定値は、[ログの送信時間 (推定)] フィールドの値と [ログの復元時間 (推定)] フィールドの値の和よりも小さい場合があります。

  • ミラーリング監視アドレス

    ミラーリング監視サーバー インスタンスのネットワーク アドレス。このアドレスの形式については、「サーバー ネットワーク アドレスの指定 (データベース ミラーリング)」を参照してください。

  • 動作モード

    データベース ミラーリング セッションの動作モード。

    • [高パフォーマンス (非同期)]

    • [自動フェールオーバーを伴わない高い安全性 (同期)]

    • [自動フェールオーバーを伴う高い安全性 (同期)]