Print
知

【MVS】SQLserver AG 集群查看系节点同步状态

4小时前 发表

问题描述

查看副本同步状态与健康(主副本执行)

解决方法

-- **通过标准**:3 行结果全部 `SYNCHRONIZED` + `HEALTHY`。

SET NOCOUNT ON;

SELECT ar.replica_server_name,             -- 副本服务器实例名(参与 AG 的节点名)

       ar.availability_mode_desc,          -- 可用性模式:SYNCHRONOUS_COMMIT(同步提交)/ ASYNCHRONOUS_COMMIT(异步提交)

       db.name AS database_name,           -- 可用性数据库名(通过 sys.databases 关联)

       CASE drs.is_primary_replica WHEN 1 THEN 'PRIMARY' ELSE 'SECONDARY' END AS role,

                                           -- 副本角色:PRIMARY=主副本 / SECOnDARY=辅助副本

       drs.synchronization_state_desc,     -- 数据移动状态:SYNCHRONIZED(已同步)/ SYNCHRONIZING(正在同步)/ NOT SYNCHRONIZING(未同步)等

       drs.synchronization_health_desc,    -- 同步健康状态:HEALTHY(正常)/ PARTIALLY_HEALTHY(部分正常)/ NOT_HEALTHY(不正常)

       drs.last_hardened_lsn,              -- 最后强化 LSN 所在日志块起点:辅助副本已持久化到磁盘的日志点(不是实际 LSN,为日志块 ID)

       drs.last_redone_lsn,                -- 最后重做日志的实际 LSN:辅助副本已重放应用的日志点(仅此列与 last_commit_lsn 为真实 LSN)

       drs.last_commit_time                -- 最后提交记录的时间:辅助副本上该时间与主副本一致;主副本上主/辅行时间差 ≈ 恢复点目标(RPO)

FROM sys.dm_hadr_database_replica_states drs

JOIN sys.availability_replicas ar       ON drs.replica_id = ar.replica_id

JOIN sys.databases db                   ON drs.database_id = db.database_id

WHERE db.name = N'QY'

ORDER BY ar.replica_server_name;