SQL Serverの高可用性と冗長化:AlwaysOn 可用性グループの基本構成(プライマリ・セカンダリレプリカの設定)

データベースの高可用性(High Availability, HA)と冗長化は、ビジネス継続性の観点から非常に重要です。特に、SQL Serverを運用する環境では、システム障害や災害発生時に備えて、可用性の高い構成が求められます。その中でも AlwaysOn 可用性グループ は、SQL Serverにおいて主要な高可用性ソリューションの一つです。

本記事では、 AlwaysOn 可用性グループ(Availability Groups, AG) を活用した基本構成について、以下の内容を詳しく解説します。

  • AlwaysOn 可用性グループとは何か
  • プライマリレプリカとセカンダリレプリカの役割
  • SQL Server環境の前提条件とセットアップ手順
  • 基本的な構成の設定と動作確認

また、記事の最後には 演習問題 も用意していますので、実際に手を動かしながら学習を進めてみましょう。


AlwaysOn 可用性グループとは?

AlwaysOn 可用性グループの概要

AlwaysOn 可用性グループ(AG)は、SQL Serverの高可用性とディザスターリカバリー(DR)のための機能です。SQL Server 2012 以降で導入され、データベース単位で冗長性を提供します。

主要構成要素は以下のとおりです。

  • プライマリレプリカ(Primary Replica): 現在アクティブなデータベースが配置されるインスタンス。
  • セカンダリレプリカ(Secondary Replica): データの複製を保持し、フェイルオーバー時にプライマリとして昇格するインスタンス。
  • リスナー(Listener): クライアント接続の負荷分散を行い、フェイルオーバー後もシームレスに接続を継続できるようにする仮想ネットワーク名。

主な特徴は以下のとおりです。

  • データベース単位の可用性向上:複数のSQL Serverインスタンスにレプリカを作成し、フェイルオーバーが可能。
  • プライマリ / セカンダリレプリカの構成:データの同期・非同期レプリケーションを利用し、複数のコピーを保持。
  • リスナーを使用した接続の自動切り替え:アプリケーションは可用性グループリスナーを通じて、常に最新のプライマリレプリカに接続可能。
  • 同期/非同期のデータレプリケーションが選択可能:システムのパフォーマンスと耐障害性に大きな影響を与える。

プライマリレプリカとセカンダリレプリカの役割

プライマリレプリカの役割

  • 読み書きのトランザクションを受け付けるメインのレプリカ。
  • セカンダリレプリカに対し、データの同期または非同期でレプリケーションを実施。

セカンダリレプリカの役割

  • プライマリレプリカから受け取ったトランザクションを適用し、データの整合性を維持。
  • 読み取り専用クエリの処理が可能(レポート用途に適用)。
  • フェイルオーバー時にプライマリとして昇格可能。

AlwaysOn 可用性グループの基本構成

必要な前提条件

AlwaysOn 可用性グループを設定する前に、以下の環境が必要です。

  • Windows Server Failover Clustering (WSFC) の構成
  • SQL Server Enterprise Edition のインストール
  • 可用性グループを構成するデータベースのフルバックアップ
  • 全レプリカにおいてSQL Server の「AlwaysOn 高可用性」機能を有効化

AlwaysOn 可用性グループの設定手順

WSFC クラスタの作成

  1. Windows Serverの「Failover Cluster Manager」を開く。
  2. クラスターを作成し、対象のSQL Serverノードを追加する。
  3. クラスタ内で クォーラム設定 を適切に構成。

AlwaysOn 可用性グループの有効化

  1. 各SQL Serverインスタンスで、SQL Server Configuration Manager を開く。
  2. SQL Serverサービスのプロパティを開き、「AlwaysOn 可用性グループ」を有効化。
  3. サーバーの再起動を実施。

可用性グループの作成

  1. SQL Server Management Studio (SSMS) を開き、「AlwaysOn 可用性グループウィザード」を起動。
  2. プライマリレプリカを選択し、データベースを追加。
  3. セカンダリレプリカを追加し、同期モードを選択(同期 / 非同期)。
  4. 可用性グループリスナーの作成(クライアント接続用の仮想ネットワーク名とIPを設定)。
  5. 設定を確認し、可用性グループを作成。

動作確認

  • 可用性グループの状態を確認:「sys.dm_hadr_availability_replica_states」 DMV を使用。
  • フェイルオーバーテスト:SSMSの「フェイルオーバー操作」を使用して、手動で切り替えを実施。
  • セカンダリレプリカの読み取り専用クエリテスト:「ApplicationIntent=ReadOnly」オプションを指定。

演習問題と解答例

問題 1

AlwaysOn 可用性グループで、プライマリレプリカがダウンした場合、セカンダリレプリカが自動的に昇格するために必要な設定はどれか?

  1. 非同期コミットモードを設定する
  2. 自動フェイルオーバーを有効にする
  3. 手動フェイルオーバーのみを使用する
  4. クラスタークォーラムを無効にする

解答: 2. 自動フェイルオーバーを有効にする


問題 2

可用性グループのリスナーを利用する主なメリットとして 適切でない ものはどれか?

  1. アプリケーションがフェイルオーバーを意識せずに接続できる
  2. 可用性グループのプライマリレプリカに自動的にルーティングされる
  3. セカンダリレプリカへの書き込み操作が可能になる
  4. 仮想ネットワーク名を使用して接続が統一される

解答: 3. セカンダリレプリカへの書き込み操作が可能になる(セカンダリレプリカは通常、読み取り専用)


まとめ

本記事では、SQL Serverの AlwaysOn 可用性グループ の基本構成について解説しました。実際に構築を試してみることで、高可用性の概念をより深く理解できるでしょう。

次回は、より高度なフェイルオーバー戦略や監視手法 について解説する予定です!