Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

SQLServer

SQL ServerのAlwaysOn可用性グループ(Availability Groups)とは?

投稿日:2021年7月1日 更新日:

 

<目次>

(1) SQL ServerのAlwaysOn可用性グループ(Availability Groups)とは?
 (1-1) SQL ServerのAlwaysOnとは?
 (1-2) AG(可用性グループ)とFCI(フェイルオーバークラスターインスタンス)の違い
 (1-3) AlwaysOn AG(可用性グループ)の関連機能

(1) SQL ServerのAlwaysOn可用性グループ(Availability Groups)とは?

(1-1) SQL ServerのAlwaysOnとは?

「AlwaysOn」はSQL Server 2012より導入された「高可用性」(High Availability)と「災害復旧」(Disaster Recovery)のための機能です。

大きく分けると2つの技術から成り立っており、「AlwaysOn FCI(フェイルオーバークラスターインスタンス)」と「AlwaysOn AG(可用性グループ)」から成り立ちます。それぞれの機能の概要は次の通りです。
(表1)

名称 説明
【略称】
AlwaysOn FCI

【正式名称】
AlwaysOn Failover Cluster Instance

【日本語名称】
AlwaysOn フェイルオーバークラスターインスタンス

●概要
「高可用性(High Availability)」のための機能で、前のバージョンの「フェイルオーバー」機能に相当。

複数のノードから一つの「共有ディスク」にアクセスしており、ノード(サーバー)で障害が発生したら、他のノードに切り替えして処理を継続します。前のバージョンの機能では「フェイルオーバー」の機能に相当します。
⇒(図111)

●検知・起動
WSFCがサーバー間のネットワークやディスクI/Oを監視して、障害検知を行います。障害が検知されると、サービスの再起動やインスタンスの切替え(フェイルオーバー)がなされます。

【略称】
AlwaysOn AG

【正式名称】
AlwaysOn Availability Group

【日本語名称】
AlwaysOn 可用性グループ

●概要
「高可用性(High Availability)」及び「災害復旧(Disaster Recovery)」のための機能で、前のバージョンの「ミラーリング」機能に相当。

SQL Server2012からの機能で複数のSQL Serverグループ(可用性グループ)を「仮想的に1台に見せる」ことが出来ます。どれか1つのグループが正常に動作していれば、断絶なく業務継続が可能です。

「データレプリケーション機能」を持ち、共有ディスクを必要としないクラスター構成が可能です。前のバージョンの機能では「ミラーリング」に相当しています。

またデータは「同期」を選んだ場合は「同じデータセンター内」での「可用性向上」として利用でき、また「非同期」を選んだ場合は「遠隔地の災対環境用」として利用でき、HAとDRの両方の機能を提供します。
⇒(図112)

(図111)AlwaysOn FCIのイメージ図

(図112)AlwaysOn AGのイメージ図
 

目次にもどる

(1-2) AG(可用性グループ)とFCI(フェイルオーバークラスターインスタンス)の違い

両者のどちらが良いか?は実際の適用環境の条件によるもので、例えばネットワークのレイテンシーであったり、ディスク容量であったり、多くの観点からどちらが適合するか?や復旧要件等と照らし合わせながらの検討になりますが、その一つの参考として両者の違いを表に纏めています。
 
(表2)
●比較項目 ●Always on FCI
(Failover Cluster Instance)
●AlwaysOn AG
(可用性グループ)
WSFCの要否
——
WSFC(Windows Server Failover Cluster)上で動作します。各ノードは同一のWSFC内に属している必要があります。

——
WSFC(Windows Server Failover Cluster)上で動作します。SQL Server 2016以降は異なるWSFCを跨いだ「可用性グループ」の設定が可能となりました。
保護レベル インスタンス単位
(インスタンス単位でのフェールオーバー)
——
データベースファイルを共有しているため、インスタンス単位での切替えになる
データベース単位
(可用性グループ単位でのフェールオーバー)
——
FCIと比較して細かい保護単位です。前身機能であるミラーリングの際はインスタンス内の全てのデータベース1つ1つに対して設定が必要でしたが、AGでは可用性グループでグルーピングが可能で、全データベースを1グループに入れる事も可能(ミラーリングと比較して設定も簡素化する)
データベースファイル 各ノードで共有 各ノードで独立して保持

セカンダリの状態 スタンバイ=パッシブ アクティブ または スタンバイ
セカンダリの読み込み/書き込み 不可 可能
メリット ●メリット(「AlwaysOn AG」と比較して)
①復旧モデルの指定がない
(AlwaysOn AGは「完全モード」が必須)

②ストレージ容量の消費が少ない
(ディスクを共有しているため)

③トラブルシューディングがしやすい
(分散システムでないため)

●メリット(「AlwaysOn FCI」と比較して)
①データベースレベルの保護が可能
(より細かい単位での保護が可能)

②ディスク障害にも対応している
(ディスクも冗長化されている)

③災害対策として利用できる
ミラーリング相当の機能で、遠隔地に非同期等でコピーが出来る。

●デメリット
①ミラーリングを行うため、ネットワークの性能が高く、レイテンシーが低い事が求められる
⇒性能面に懸念がある場合は手段として取り難い

データベースの復旧モード 問わない 完全モード
Standard版の制限 ・2ノードまでの制限あり ・SQLServer 2016以降は「基本可用性グループ(Basic Availability Group)」という名前で、可用性グループの制約付き版が利用可能となった

(制約例)
・2ノードまでの制限あり(プライマリ/セカンダリ)
・可用性グループに含められる対象DBが1つのみ
複数DBをグループに入れられない、つまりグループ:DB=1:1対応といった制約ですが、単一DBのグループを複数作る事で、手間ではあるものの全てのDBをそれぞれのグループに所属させる事は可能

※詳細な制約事項については以下の公式サイトをご参照下さい
https://docs.microsoft.com/ja-jp/sql/database-engine/availability-groups/windows/basic-availability-groups-always-on-availability-groups?view=sql-server-ver15

備考   ・システムデータベースについて
「システムデータベース」は自動で同期されないため注意が必要

目次にもどる

(1-3) AlwaysOn AG(可用性グループ)の関連機能

また、AlwaysOn AG(可用性グループ)に関しては、SQL Server 2016より関連機能として「AlwaysOn BAG(基本可用性グループ)」と「AlwaysOn DAG(分散可用性グループ)」が利用できるようになりました。

特に「AlwaysOn BAG(基本可用性グループ)」はStandard版にて利用可能で、Enterprise版の「AlwaysOn AG(可用性グループ)」を制限付きで利用できるような機能になっています。

それぞれの概要は次の通りです。
 
(表3)
名称 説明
【略称】
AlwaysOn BAG

【正式名称】
AlwaysOn Basic Availability Group

【日本語名称】
AlwaysOn 基本可用性グループ

SQLServer 2016 Standard Editionより導入された機能で、Enterprise版の「AlwaysOn AG」を制限付きで利用できる機能で、前のバージョンの「ミラーリング」機能に相当。

(制約例)
・レプリカの数はプライマリとセカンダリの2つのみ限定
・セカンダリの読み込みは不可
・セカンダリのバックアップは不可
・可用性グループに含められる対象DBが1つのみ(グループ:DB=1:1対応)
⇒複数DBをグループに入れられない、つまり複数DBを保護したい場合はそのDBの数だけグループを作る必要あり。

詳細はこちらの公式ドキュメントを参照
https://docs.microsoft.com/ja-jp/sql/database-engine/availability-groups/windows/basic-availability-groups-always-on-availability-groups?view=sql-server-ver15

AlwaysOn Distributed Availability Group (DAG)

【略称】
AlwaysOn DAG

【正式名称】
AlwaysOn Distributed Availability Group

【日本語名称】
AlwaysOn 分散型可用性グループ

SQLServer 2016より導入された機能で、2つの独立した可用性グループを跨がる特殊なAG(可用性グループ)を設定する事が出来ます(いうなれば、可用性グループを束ねる可用性グループ)。

それぞれの可用性グループはこの機能により疎結合されており、それぞれ別のWSFC配下に存在できるため、本番環境と災対環境とを別のWSFC・可用性グループに入れて、それらを「分散可用性グループ」として結合させる事で、本番と遠隔地にある災対をネットワーク的には切り離す事が出来るため、災対が本番環境のパフォーマンスに影響を与えるリスクが減る等のメリットがあります。

(図131)AlwaysOn DAG(分散型可用性グループ)のイメージ

 

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-SQLServer

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

SQLServerの復旧モデルの「単純」と「完全」と「一括ログ」の違いについて

<目次> (1) SQLServerの復旧モデルの「単純」と「完全」と「一括ログ」の違いについて  (1-1) 復旧モデルの概要  (1-2) 復旧モデルの比較表  (1-3) トランザクションログが …

SQL Serverで起きる「ハンドシェイクエラー」の原因について

<目次> (1) SQL Serverで起きる「ハンドシェイクエラー」の原因について  (1-1) 発生状況・エラーメッセージ  (1-2) 原因  (1-3) 参考:SSPIとは? (1) SQL …

データベースのインデックスの基本と種類とOracleやSQL Serverでの特長について

(0)目次&概説 (1) データベースのインデックスとは (2) インデックスはどのような場面で使う? (3) インデックスの主要な方式  (3-1) B木  (3-2) B+木  (3-3) ビット …

SQLServerのインスタンスとは?インスタンス名の取得方法も併せてご紹介

<目次> (1) SQLServerのインスタンスとは?インスタンス名の取得方法も併せてご紹介  (1-1) インスタンスの概要  (1-2) インスタンスの種類  (1-3) インスタンスの確認方法 …

SQLServerでテーブルを作成する方法+主キーや外部キーの指定方法も

<目次> (1) SQLServerでテーブルを作成する方法  (1-1) 構文  (1-2) 実際の例  (1-3) SQLServerの操作例 (1) SQLServerでテーブルを作成する方法 …

  • English (United States)
  • 日本語
Top