本連載は、「Microsoft SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は「SQL Serverが正しく再起動しなくなった場合の対処方法」を解説します。
本連載では、「Microsoft SQL Server(以下、SQL Server)」で発生するトラブルについて、「なぜ起こったか」の理由とともに具体的な対処方法を紹介していきます。
「Windows Server 2012」のクラスタ環境上に「SQL Server 2016 RTM」をインストールした環境を想定して解説します。
Windowsのシステムログ(「イベントビューアー」→「Windows ログ」→「システム」)を確認すると、エラー1254の「クラスター化された役割’SQL Server(MSSQLSERVER)’がフェールオーバーのしきい値を超えました。割り当てられたフェールオーバー期間内に試行できる構成済みのフェールオーバー回数の上限に達したため、エラー状態のままとなります」というメッセージが記録されていました(図6-2)。
「構成済みのフェールオーバー回数の上限」について、フェールオーバー クラスター マネージャーから設定内容を確認してみます(図6-3)。
今回の例では、2ノードでクラスタを構築しています。そして上記の設定は、6時間に1回までのエラー(エラーテストの実施も含む)ならば、通常通り再起動を試みます。しかし、2回以上エラーが発生したら「もう無理(再起動するだけでは直らない)」とみなし、再起動をせずに「失敗した状態のままにする設定」となっていることが分かりました。
これは、意図したエラーテストであっても……1回とカウントされます。入念に準備したがゆえに発生してしまう、意外な落とし穴となるトラブルです。
この「もう無理」とみなす“しきい値”である「エラー回数」と「判定期間」を、図6-3のフェールオーバー クラスター マネージャーより変更します。テスト時には、エラー回数を少し多めにするか、期間を短めにしておくとよいでしょう。ちなみにエラー回数は、クラスターサービスを再起動することでもリセットできます。
なお、このトラブルは、フェールオーバー クラスターの機能を使う「AlwaysOn可用性グループ」でもよく発生するので、ご注意ください(*1)。
ユニアデックス株式会社所属。Microsoft MVP Data Platform(2011〜 )。OracleやSQL Serverなど商用データベースの重大障害や大型案件の設計構築、プリセールス、社内外の教育、新技術評価を行っていた。2016年4月よりIoTビジネス開発の担当となり、新しい仕事に奮闘中。ストレッチをして柔らかい身体を手に入れるのが当面の目標。
ユニアデックス株式会社所属。入社以来 SQL Serverの評価/設計/構築/教育などに携わりながらも、主にサポート業務に従事。SQL Serverのトラブル対応で社長賞の表彰を受けた経験も持つ。休日は学生時代の仲間と市民駅伝に参加し、銭湯で汗を流してから飲み会へと流れる。
Copyright © ITmedia, Inc. All Rights Reserved.