フェイルオーバーポリシー以外で可用性グループがフェイルオーバーした(フェイルオーバートラブル) : SQL Serverトラブルシューティング(34) (1/2 ページ)
本連載は、「Microsoft SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は「可用性グループでフェイルオーバーが発生した、SQL Server 2016に由来する原因の一例」を解説します。
連載バックナンバー
本連載では、「Microsoft SQL Server(以下、SQL Server)」で発生するトラブルについて、「なぜ起こったか」の理由とともに具体的な対処方法を紹介していきます。
「Windows Server 2012 R2」上に「SQL Server 2016 RTM」をインストールした環境を想定して解説します。
トラブルの実例 :SQL Serverの可用性グループ の中に複数の可用性データベースを作成している環境でフェイルオーバーが発生した。全てのインスタンスは正常に稼働しており、トラブル26 の事例を参考に、SQLDIAGの正常性チェック/Systemの項目も確認したが、エラーは発生しておらず、フェイルオーバーポリシーにも該当していなかった。
ただし、データベースが格納されている幾つかのドライブの1つに障害が発生していた。WindowsイベントビューアーでWindowsログの「Application」の項目を確認すると、「エラー9001」が記録されていた(図27-1)。
図27-1 Windowsイベントビューアーで「エラー9001」を確認
「エラー9001」と、それに関連するエラーログを深く検証します。
まずエラー9001には、「データベース 'DB2' のログは使用できません」と表示されています。また、この直後の「エラー41653」に、「データベース 'DB2' でエラー (エラーの種類: 2 'DB_SHUTDOWN') が発生し、可用性グループ 'AG' が失敗しました」と記録されていました(図27-2)。
図27-2 エラー9001に関連するエラーログ「エラー41653」も確認する
2017年1月時点の最新版であるSQL Server 2016では、新たに「データベースがオフラインになった場合でもフェイルオーバーするように、可用性グループを構成可能」となりました(*1)。可用性グループの設定ウィザードあるいはプロパティで「データベース レベルの正常性検出」を有効にすると、フェイルオーバーポリシーに加えて、データベースに障害が発生した場合にも自動的にフェイルオーバーさせるように設定できます(図27-3)。
図27-3 SQL Server 2016で追加された「データベース レベルの正常性検出」機能
今回のトラブル事例は、SQL Server 2016の新機能に由来するものと想定されます。ディスク障害の発生を原因とし、フェイルオーバーポリシーとは別のフェイルオーバーさせる条件と定義される、「データベース レベルの正常性検出」が該当したために発生したことになります。
「SQL Server 2016」に搭載される新たなセキュリティ対策を追う
パブリックプレビューが公開されているマイクロソフトのRDB次期版「SQL Server 2016」。特徴の1つとするセキュリティ対策機能のポイントと目指すところをキーパーソンに聞いた。
そもそも、リレーショナルデータベースとは何か?
データベースを基礎から勉強し理解を深めていくことは簡単なことではありません。本連載では、データベースに対するハードルを少しでも低くするために、初心者の方に必要なデータベースの基本から、障害対策やチューニングといった実践に即した内容までを幅広く解説していきます。今回は、データベースの役割と、それを管理するソフトウェアであるDBMSの基本機能について解説します。【更新】
データの登録を行うINSERT文
複数の条件を指定してSELECT文を実行する
前回は、SELECT文の初歩の初歩を解説しました。今回は、複数の条件を指定して、目的のデータを取り出す方法を解説します(編集部)
Oracle運用の基本「ログ」を理解しよう
本連載では、Oracle Database運用の鍵となるトラブル対処法について紹介していきます。第1回、第2回では情報収集の要となるログについて見ていきます。ログの出力情報は10gと11gとでは大きく異なる点がありますので、それぞれについても確認しておきましょう。
Copyright © ITmedia, Inc. All Rights Reserved.