Shoeisha Technology Media

EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

AlwaysOn フェールオーバークラスターインスタンス(2)

edited by DB Online   2012/03/12 00:00

こんにちは。Premier Field Engineering 部の坂輪です。前回に引き続き、SQL Serverフェールオーバークラスターの新しい機能についてご紹介します。

SQL Server の正常性のチェック

 SQL Server 2012で新しくなった正常性チェックでは、sp_server_diagnosticsから返されるコンポーネントごとの正常性の状態をIsAliveがチェックします。このsp_server_diagnosticsから返された状態をユーザーが確認するには、新しく追加された診断ログを使用します。診断ログは既定ではSQL Serverのエラーログが出力されているフォルダに出力されています。ファイル名は次のとおりです。

 <ノードのコンピュータ名>_<インスタンス名>_SQLDIAG_<番号>_<時間>.xel

 このログ ファイルは拡張子がxelとなっていることからおわかりのように、拡張イベント形式のファイルです。そのため、ファイルを参照するにはSQL Server Management Studioやsys.fn_xe_file_target_read_fileを使用します。拡張イベントについてはこの連載の「トレースはもはや古い?SQL Server 2012 の拡張イベント」をぜひご参考にしてください。

 次の図はこのファイルを SQL Server Management Studioから開いた場合の図です。

 診断ログにはコンポーネントごとに1行のイベントが出力されています。

 イベントデータは次の表のとおりとなります。イベントデータのstate列が3の場合、正常性状態はエラーを表します。

概要
component  コンポーネント名
component_type コンポーネントの種類(現在は instance のみ)
creation_time  このイベントが生成された時間
data 診断データ
failure_condition_level 現在の failure_condition_levelプロパティの設定値
node_name  ノード名
state 正常状態の値
state_desc  正常状態の詳細

 フェールオーバーが発生した場合、診断ログを確認することでフェールオーバーが発生する原因となったコンポーネントを特定することができます。ではコンポーネントの正常性状態が“エラー”になったのは前回ご紹介したどの条件に合致したためでしょうか。これはdata列に含まれる診断データを確認します。data列はXML形式の情報が含まれており、その中で正常性状態が“エラー”となる条件に関連するタグと属性は次の表のとおりとなります。

コンポーネント タグ名 属性名 概要 正常状態
エラーの条件
system system sickSpinlockTypeAfterAv 孤立した spinlock の種類 “none” 以外
    writeAccessViolationCount メモリの不正な書き込みの発生回数  >3
    totalDumpRequests SQL Server が開始されてからのダンプ出力の回数 > 100 かつ intervalDumpRequests > 1
    intervalDumpRequests sp_server_diagnostics の repeat interval の間にダンプ出力が行われた回数   > 1 かつ totalDumpRequests > 100
resource resource processOutOfMemoryPeriod メモリ不足の状態が継続時間 >120秒
query_processing query processing   hasUnresolvableDeadlockOccurred 解決できないデッドロックの有無  =1
    hasDeadlockedSchedulersOccurred  デッドロック スケジューラの有無  =1

 フェールオーバーポリシーには関係しないio_subsystemとeventコンポーネントを含めdata列には様々な情報が含まれています。正常性状態の診断に必要なデータだけでなく、コンピュータやSQL ServerのCPU使用率やメモリの状態などパフォーマンスの情報も含まれています。今回全てをご紹介することはできませんが SQL Serverのエラーログと同様に有用なログとなります。この診断ログは既定で最大10個のファイルが保存され、その後再利用されます。各ファイルの最大サイズは100MBとなっています。これらの設定の変更はALTER SERVER CONFIGRATION SET DIAGNOSTICS LOGコマンドを使用します。このコマンドで診断ログの出力先や出力の有効/無効を設定することも可能です。

 ALTER SERVER CONFIGURATION (Transact-SQL)

 現在の設定値の確認は動的管理ビュー(DMV)sys.dm_os_server_diagnostics_log_configurationsを参照します。既定の設定値を含むこの DMV の参照結果は次のとおりとなります。

列名  概要 既定値
is_enabled

ロギングの有効/無効
1 - 有効
0 - 無効 

1
path 診断ログの出力先 <インスタンス ディレクトリ >\MSSQL\Log
max_size ログ ファイルの最大サイズ 100
max_files ログ 10

著者プロフィール

  • 坂輪貴行(サカワ タカユキ)

      日本マイクロソフトの Premier Field Engineering 部にて、SQL Server ユーザーの支援を行う。前職はシステム エンジニアであり、長く Sybase を使用したプロジェクトに従事。業界歴 14 年の月一ゴルファー。

バックナンバー

連載:あたらしいSQL Server/Denaliの世界

もっと読む

All contents copyright © 2007-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5