Always On 可用性グループのデータベースの詳細情報を出力するSQL Server動的管理ビューレファレンス(11)

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

» 2021年05月25日 05時00分 公開
[伊東敏章@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

SQL Server動的管理ビュー一覧

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

概要

 Always On 可用性グループにおいて、レプリカの役割(プライマリ、セカンダリ)の変更は可用性レプリカごとに行われますが、同期処理は可用性データベースごとに行われます。

 「sys.dm_hadr_database_replica_states」動的管理ビューを出力することで、可用性データベースの状態や同期に関する詳細な情報の出力が可能です。

出力内容

列名 データ型 説明
database_id int ローカルインスタンスでのデータベースID
sys.databases の database_id と同値
group_id uniqueidentifier 可用性グループID
replica_id uniqueidentifier 可用性レプリカID
group_database_id uniqueidentifier 可用性データベースID
データベースの全てのレプリカで同値
is_local bit ローカルインスタンス上の可用性データベースかどうか
 0 = ローカルでない
 1 = ローカル
is_primary_replica bit プライマリレプリカかどうか
 0 = プライマリレプリカでない
 1 = プライマリレプリカ
synchronization_state tinyint 可用性データベースの同期状態
 0 = 同期されていない
 1 = 同期中
 2 = 同期済み
 3 = 元に戻している
 4 = 初期化中
synchronization_state_desc nvarchar(60) synchronization_state の説明
 NOT SYNCHRONIZING
 SYNCHRONIZING
 SYNCHRONIZED
 REVERTING
 INITIALIZING
is_commit_participant bit トランザクションのコミットの同期状態
 0 = 同期されていない
 1 = 同期されている
synchronization_health tinyint 可用性レプリカのデータベースの同期状態
 0 = 同期が停止されているデータベースが存在する
 1 = 部分的に正常な状態 (一部が同期中)
 2 = 正常な状態
synchronization_health_desc nvarchar(60) synchronization_health の説明
 NOT_HEALTHY
 PARTIALLY_HEALTHY
 HEALTHY
database_state tinyint 可用性データベースの状態
 0 = オンライン
 1 = 復元
 2 = 回復する
 3 = 復旧保留
 4 = 問題あり
 5 = 緊急
 6 = オフライン
database_state_desc nvarchar(60) database_state の説明
 ONLINE
 RESTORING
 RECOVERING
 RECOVERY_PENDING
 SUSPECT
 EMERGENCY
 OFFLINE
is_suspended bit 可用性データベースの中断状況
 0 = 再開
 1 = 中断
suspend_reason tinyint 中断の理由
 0 = ユーザーが手動でデータ移動を中断
 1 = 強制フェールオーバー
 2 = REDOフェーズ中のエラー
 3 = ログキャプチャー中のエラー
 4 = ログ書き込み中のエラー
 5 = データベースの再起動
 6 = UNDOフェーズ中のエラー
 7 = ログの不一致を再接続時に検出
 8 = セカンダリレプリカの同期ポイントの計算エラー
suspend_reason_desc nvarchar(60) suspend_reason の説明
 SUSPEND_FROM_USER
 SUSPEND_FROM_PARTNER
 SUSPEND_FROM_REDO
 SUSPEND_FROM_APPLY
 SUSPEND_FROM_CAPTURE
 SUSPEND_FROM_RESTART
 SUSPEND_FROM_UNDO
 SUSPEND_FROM_REVALIDATION
 SUSPEND_FROM_XRF_UPDATE
recovery_lsn numeric(25,0) プライマリレプリカでの復旧後またはフェールオーバー後、レプリカが新しいログレコードを書き込む前のトランザクションログの末尾
truncation_lsn numeric(25,0) プライマリレプリカの最小のログ切り捨て値
last_sent_lsn numeric(25,0) プライマリレプリカによって送信された全てのログブロックの最後のポイント
last_sent_time datetime ログブロックが最後に送信された時刻
last_received_lsn numeric(25,0) セカンダリデータベースをホストするセカンダリレプリカによって受信された全てのログブロックの最後のポイント
last_received_time datetime 最後に受信されたメッセージのログブロックがセカンダリレプリカで読み取られた時刻
last_hardened_lsn numeric(25,0) セカンダリレプリカのディスクにフラッシュされた全てのログレコードの最後のポイント
last_hardened_time datetime セカンダリレプリカでログコードに最後に書き込まれたログブロックが受信された時刻
last_redone_lsn numeric(25,0) セカンダリレプリカで最後に再実行されたログレコードの実際のLSN
last_redone_time datetime セカンダリデータベースでログレコードが最後に再実行された時刻
log_send_queue_size bigint セカンダリデータベースに送信されていない、プライマリデータベースのログレコードの量 (KB 単位)
log_send_rate bigint ログレコードがセカンダリレプリカに配布される速度 (KB/秒 単位)
redo_queue_size bigint まだ再実行されていないセカンダリレプリカのログファイル内のログレコードの量 (KB 単位)
redo_rate bigint ログレコードがセカンダリレプリカで再実行される速度 (KB/秒)
filestream_send_rate bigint FILESTREAMファイルがセカンダリレプリカに配布される速度 (KB/秒)
end_of_log_lsn numeric(25,0) プライマリレプリカおよびセカンダリレプリカのログキャッシュ内の最後のログレコードに対応する実際のログシーケンス番号 (LSN)
last_commit_lsn numeric(25,0) トランザクションログの最終コミットレコードに対応する実際のLSN
last_commit_time datetime 最終コミットレコードに対応する時刻
low_water_mark_for_ghosts bigint プライマリデータベースでのゴーストクリーンアップで使用される低レベルのウオーターマークを示す単調に増加する数値
secondary_lag_seconds bigint セカンダリレプリカがプライマリレプリカから遅れている秒数

動作例

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。