Always On 可用性グループの正常性情報を出力する:SQL Server動的管理ビューレファレンス(3)
「Microsoft SQL Server」が稼働するデータベースシステムを運用する管理者に向け、「動的管理ビュー」の活用を軸にしたトラブル対策のためのノウハウを紹介していきます。今回はAlways On 可用性グループの正常性情報を出力する「sys.dm_hadr_availability_group_states」を解説します。
本連載では、「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)。
この状況で動的管理ビューの「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)。
※本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.
関連記事
- SQL Serverの動的管理ビューとは?
「Microsoft SQL Server」が稼働するデータベースシステムを運用する管理者に向け、「動的管理ビュー」の活用を軸にしたトラブル対策のためのノウハウを紹介していきます。 - 「DMV(Dynamic Management View)」でパフォーマンス遅延の「原因」を調べる
本連載は、「Microsoft SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、「処理遅延の原因を追求する“DMVの使い方”」を説明します。 - SQL Serverの動きを制御する「トレースフラグ」とは何か
「Microsoft SQL Server」が稼働するデータベースシステムを運用する管理者に向け、「トレースフラグ」の活用を軸にしたトラブル対策のためのノウハウを紹介していきます。初回は「トレースフラグとはそもそも何か」を解説します。