検索
連載

Always On 可用性グループの正常性情報を出力するSQL Server動的管理ビューレファレンス(3)

「Microsoft SQL Server」が稼働するデータベースシステムを運用する管理者に向け、「動的管理ビュー」の活用を軸にしたトラブル対策のためのノウハウを紹介していきます。今回はAlways On 可用性グループの正常性情報を出力する「sys.dm_hadr_availability_group_states」を解説します。

Share
Tweet
LINE
Hatena

SQL Server動的管理ビュー一覧

 本連載では、「Microsoft SQL Server(以下、SQL Server)」で使用可能な動的管理ビューについて、動作概要や出力内容などを紹介していきます。Always On 可用性グループの正常性情報を出力する「sys.dm_hadr_availability_group_states」を解説します。対応バージョンはSQL Server 2012以降です。

概要

 可用性グループは高可用性を実現する機能です。しかし、正常に動作していなければせっかくの高可用性環境が無駄になってしまいます。可用性グループの正常性を確認するためには「sys.dm_hadr_availability_group_states」という動的管理ビューを使用します。

出力内容

列名 データ型 説明
group_id uniqueidentifier 可用性グループの一意識別子を示す
primary_replica varchar(128) 現在のプライマリレプリカをホストしているサーバインスタンスの名前を示す
 NULLの場合、プライマリレプリカではない、または、WSFC(Windows Server Failover Clustering)フェールオーバークラスターと通信できない状態を表す
primary_recovery_health tinyint プライマリレプリカの復旧の正常性状態を示す。次のいずれかになる
 0 実行中
 1 オンライン
 NULL セカンダリレプリカで、primary_recovery_health列がNULL
primary_recovery_health_desc nvarchar(60) primary_replica_healthの説明を示す。次のいずれかになる
 ONLINE_IN_PROGRESS
 ONLINE
 NULL
secondary_recovery_health tinyint 1つのセカンダリレプリカでレプリカの復旧の正常性を示す
 0 実行中
 1 オンライン
 NULL プライマリレプリカの場合、secondary_recovery_health列がNULL
secondary_recovery_health_desc nvarchar(60) secondary_recovery_healthの説明を示す。次のいずれかになる
 ONLINE_IN_PROGRESS
 ONLINE
 NULL
synchronization_health tinyint プログラムのロールアップを反映して、synchronization_healthの可用性グループ内の全ての可用性レプリカの状態を示す。使用可能な値と説明は次の通り
 0 正常ではない。Noneの可用性レプリカの正常性があるsynchronization_health(2=HEALTHY)
 1 部分的に正常。一部の可用性レプリカの同期状態は正常
 2 正常な状態。全ての可用性レプリカの同期状態は正常
synchronization_health_desc nvarchar(60) synchronization_healthの説明を示す。次のいずれかになる
 NOT_HEALTHY
 PARTIALLY_HEALTHY
 HEALTHY

動作例

 今回の環境では3つの可用性グループを構築し、「SRV01\SQL01」で動的管理ビューを実行します。1つ目の可用性グループは「SRV01\SQL01」がプライマリレプリカとして稼働しています。2つ目の可用性グループでは「SRV01\SQL01」がセカンダリレプリカとして稼働しています。3つ目の可用性グループは障害によりオフラインの状態になっています(図1)。

図1
図1 可用性グループの構成図

 この状況で動的管理ビューの「sys.dm_hadr_availability_group_status」を実行するとプライマリレプリカで動作している1つ目の可用性グループでは、「primari_recovery_health列」や「primary_recovery_health_desc列」を表示し、セカンダリレプリカで動作している2つ目の可用性グループでは「secondary_recovery_health列」や「secondary_recovery_health_desc列」を表示します。いずれも、可用性グループの正常性として「synchronization_health_desc列」には「HEALTHY」と出力します。

 正常に起動していない3つ目の可用性グループでは、「primary」や「secondary」に関する列にはどちらもNULLを表示し、「synchronization_health_desc列」には「NOT_HEALTHY」と表示します(図2)。

図2
図2 可用性グループの正常性情報が出力される

※本Tipsは、「Windows Server 2019」上に「SQL Server 2019 CTP2」をインストールした環境を想定して解説しています。

筆者紹介

椎名 武史(しいな たけし)

日本ユニシス株式会社所属。Microsoft MVP for Data Platform(2017〜)。入社以来 SQL Serverの評価/設計/構築/教育などに携わりながらも、主にサポート業務に従事。SQL Serverのトラブル対応で社長賞の表彰を受けた経験も持つ。休日は学生時代の仲間と市民駅伝に参加し、銭湯で汗を流してから飲み会へと流れる。

伊東敏章(いとう としあき)

日本ユニシス株式会社所属。入社以来SQL Server一筋で評価/設計/構築/教育などに携わりながらも、主にサポート業務に従事。社内のプログラミングコンテストで4回の優勝経験も持つ。趣味は輪行で週末は自転車を持っての旅行。目標は色々な日本百選を制覇すること。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る