「Microsoft SQL Server」が稼働するデータベースシステムを運用する管理者に向け、「動的管理ビュー」の活用を軸にしたトラブル対策のためのノウハウを紹介していきます。今回は、Always On 可用性グループにおけるデータベースの詳細情報の出力について解説します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載では、「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.