SQL Serverにおける自動フェイルオーバーとは
データベースサーバーの障害発生時、停止時間の1秒1秒が損失につながります。SQL Serverの自動フェイルオーバーは高可用性(HA) 機能の一つで、プライマリサーバーに障害が発生した際、手動操作なしで同期完了済みのセカンダリレプリカを自動的にプライマリに昇格させます。
アプリケーションの通信先をシームレスに新しいプライマリへ切り替え、同期コミット構成で運用することでデータ損失を防ぎます。
ハードウェアクラッシュ、停電、サービス異常など重大な障害がプライマリサーバーで発生した場合、フェイルオーバークラスターが異常を検知し、セカンダリレプリカを新プライマリに昇格させます。
SQL Serverの自動フェイルオーバー動作原理
自動フェイルオーバーはバックグラウンドで常時稼働する2つの処理(正常性監視とデータ同期)に依存します。障害発生後、処理は5段階で進行します。
プライマリレプリカが正常稼働 :プライマリサーバーは通常通りアプリからの読み書きリクエストを処理します。
セカンダリレプリカへデータ複製 :トランザクション実行と同時にリアルタイムでデータがセカンダリへ送信されます。自動フェイルオーバーには同期コミットモードが必須で、プライマリがトランザクション完了を応答する前にセカンダリへデータが書き込まれるため、データ損失を防止できます。
クラスターが障害を検知 :Windows Serverフェイルオーバークラスター(WSFC)がサーバーの正常性を常時監視し、ネットワーク切断やサービスクラッシュなど重大な異常を検知すると、プライマリを障害状態と判定します。
セカンダリレプリカがプライマリに昇格 :クラスターは同期完了済みのセカンダリレプリカをプライマリ役割に昇格させ、配下のデータベースをオンライン化して業務負荷を引き継ぎます。
アプリケーションが自動再接続 :可用性グループリスナー経由で接続するアプリは一時的な切断が発生するものの、接続文字列の変更なしで自動的に新プライマリへ再接続します。
補足: フェイルオーバー全体の処理は通常数秒で完了します。完了時間はネットワーク速度や障害発生時の実行中トランザクション数に左右されます。
SQL Serverの自動フェイルオーバー実装技術
SQL Serverには複数の自動フェイルオーバー実装手法が存在します。サーバーインスタンス全体を保護するか、特定データベースを保護するかによって適切な技術を選択します。
Always On可用性グループ(AG)
現在SQL Serverの高可用性における標準的な手法です。サーバーインスタンス全体ではなく、任意のデータベースグループ単位でフェイルオーバーを実行できます。共有ストレージが不要なため、レプリカを物理的に離れた拠点に配置可能です。
Always Onフェイルオーバークラスターインスタンス(FCI)
可用性グループと異なり、FCIはSQL Serverインスタンス全体を保護します。SANやStorage Spaces Direct(S2D)といった共有ストレージを利用し、アクティブノードに障害が発生するとインスタンスがクラスター内の別ノードへ移行します。
データベースミラーリング
マイクロソフトが廃止推奨している旧来機能です。自動フェイルオーバーに対応するものの、単一データベースのみ対応、複数レプリカの運用や柔軟な構成に対応しておらず、最新のAlways On環境への移行が推奨されます。
各フェイルオーバー技術の比較
機能項目
Always On可用性グループ
Always On FCI
データベースミラーリング
フェイルオーバー単位
データベースグループ
サーバーインスタンス
単一データベース
ストレージ要件
ローカルストレージ(共有不要)
共有ストレージ(SAN/S2D)
ローカルストレージ
自動フェイルオーバー
対応(同期モード時)
対応
対応(監視サーバー必須)
読み取り可能なセカンダリ
対応
非対応
非対応
推奨運用環境
高可用性・災害復旧両方
インスタンス単位の保護
旧来システムのみ
Always On AGによるSQL Server自動フェイルオーバー設定手順
SQL Serverで自動フェイルオーバーを構築するには事前計画が不可欠です。最も汎用的なAlways On可用性グループを用いた段階的な設定手順を記載します。
手順1:Windows Serverフェイルオーバークラスターを構成
WSFCはサーバー正常性監視の基盤となるため、SQL Server設定前に構築します。
クラスターに参加する全サーバーにフェイルオーバークラスタリング 機能をインストール
クラスター検証 ツールを実行し、ネットワーク・ストレージが要件を満たすか確認
クラスター作成を完了してから次の手順へ進む
手順2:Always On可用性グループを有効化
クラスターの準備完了後、SQL Server側でAlways On機能を有効にします。
SQL Server構成マネージャー を起動
SQL Serverサービスを右クリックし、プロパティ を開く
Always On高可用性 タブへ移動し、チェックボックスにチェックを入れて有効化
設定を反映させるためSQL Serverサービスを再起動
手順3:セカンダリレプリカを追加
SQL Server管理スタジオ(SSMS ) を使用して可用性グループを作成し、セカンダリサーバーを登録します。
SSMSの新しい可用性グループ ウィザードを起動
プロンプトに従いセカンダリサーバーをレプリカとして追加
SQL Serverサービスアカウントに、全ノード間のネットワーク通信権限を付与
手順4:レプリカを同期コミットに設定
同期コミットはセカンダリレプリカがプライマリと完全に同期することを保証し、自動フェイルオーバーの必須条件です。
可用性グループのプロパティ を開く
自動フェイルオーバーに参加させるレプリカの可用性モード を同期コミット に設定
手順5:自動フェイルオーバーを有効化
最後にフェイルオーバーモードを切り替え、クラスターが手動操作なしで障害対応できるようにします。
可用性グループプロパティ内でフェイルオーバーモード を自動 に設定
これによりクラスターは障害検知時、自動でセカンダリレプリカをプライマリに昇格させます
ヒント: 必ず可用性グループリスナー を作成してください。単一の接続ポイントとして機能し、フェイルオーバー後もアプリが接続文字列の変更なしで新プライマリに自動接続できます。
SQL Server向け簡易型無停止自動フェイルオーバー:i2Availability
SQL Serverには標準の高可用性ツールが搭載されていますが、大規模・複雑なインフラでこれらの設定を管理するには追加の運用負荷が発生します。
Always On可用性グループと異なり、i2Availability はWSFCクラスターへの依存を完全に排し、大規模SQL Server自動フェイルオーバー環境で課題となる単一点障害、リソース競合、管理複雑さを解消します。
i2Availabilityの主な機能
自動高可用性保証 :複数のハートビート回線検知とノード・ディスク調停機構により、誤切り替えやスプリットブレインを防止。サービス自動起動/停止用カスタムスクリプトと仮想IPドリフトに対応し、サブ秒単位のフェイルオーバーを実現。
無遅延レプリケーション :バイト単位のリアルタイム複製で全書き込み処理を捕捉し、目標復旧ポイントをゼロに近づけます。バックアップサーバーのデータは復元作業なしで即時利用可能、業務ロールバック用の逆同期にも対応。
最適化されたデータ転送 多段階圧縮とマルチスレッド並列処理で帯域幅消費を削減、非重要ファイルをフィルタリングし業務データを優先転送。帯域制限や中断再開転送機能で不安定なネットワーク環境に対応。
エンタープライズ級データセキュリティ :AES・SM4暗号化によりデータ通信を保護。管理システムに強固なパスワードポリシーと総当たり攻撃防止機構を搭載し、アクセスを保護。
上記機能が連携することで高可用性管理を簡素化し、予期せぬ障害発生時もSQL Server環境の業務継続を支えます。
VIDEO
SQL Server自動フェイルオーバー運用ベストプラクティス
自動フェイルオーバーを構築するだけでは不十分で、安定稼働させるには継続的な運用管理が必要です。順守すべき重要な運用ルールを記載します。
ネットワークレイテンシを監視 :同期コミットモードでは、プライマリがトランザクションを完了する前にセカンダリへデータを確実に送信する必要があります。レプリカ間の通信回線が低速・不安定な場合、プライマリ側のデータベースパフォーマンスが直接低下します。
全レプリカ間に高速・低遅延の通信回線を導入
複製レイテンシを定期的に監視し、異常を早期検知
クォーラム監視ノードを構成 :フェイルオーバークラスターは過半数の投票権がないとオンライン状態を維持できません。監視ノードがない場合、1台のノード障害でクラスター全体が停止する恐れがあります。
決断投票用としてディスク監視ノード またはクラウド監視ノード を設置
2台のノードが双方プライマリと認識するスプリットブレイン状態を防止
定期的にフェイルオーバー試験を実施 :一度も試験を実施していないフェイルオーバー環境は信頼できません。メンテナンス時間帯に手動フェイルオーバーを定期実行し、切り替え処理とアプリの再接続動作が正常か検証します。
ハードウェア・ソフトウェア環境を統一 :セカンダリレプリカのCPU、メモリ、SQL Serverパッチバージョンをプライマリと統一してください。セカンダリのリソースが不足していると、フェイルオーバー後に本番業務負荷を処理できなくなります。
トランザクションログの肥大化を監視 :同期コミットモードでセカンダリレプリカが停止すると、セカンダリがデータ受信完了を応答するまでログ切り捨てが保留され、プライマリのトランザクションログが肥大化し続けます。放置するとプライマリサーバーのディスク容量が枯渇する恐れがあります。
トランザクションログ使用率のアラートを設定
セカンダリが長時間停止した際の対応手順を事前作成
まとめ
SQL Serverの自動フェイルオーバーは、予期せぬデータベース停止から環境を守る最も有効な手段の一つです。正常性監視、同期複製、レプリカ自動昇格まで一連の仕組みを理解することで、手動操作なしで障害に対応する環境を構築できます。
多くの運用環境ではAlways On可用性グループが推奨手法で、レプリカの柔軟な配置、読み取り可能なセカンダリ、同期コミット構成による安定した自動フェイルオーバーを実現します。本ガイドで紹介した定期フェイルオーバー試験、ログ肥大化監視、レプリカ間の統一されたハードウェア環境などのベストプラクティスを順守することで、長期的に安定した環境を維持できます。
大規模・複雑なインフラを管理する企業はi2Availabilityのような専用ソリューションを活用することで、高可用性の管理工数を削減し、SQL Server環境に追加の保護層を構築できます。