DMV和系统目录视图
这里主要介绍AlwaysON的动态管理视图,可以用来监控和排查你的AG。
在AlwaysOn Dashboard,你可以简单的配置的GUI显示很多可用副本的DMV和可用数据库通过右击各自的表头并且选择你要加入和隐藏的DMV。
更多关于DMV信息查看: AlwaysOn Availability Groups Dynamic Management Views and Functions (Transact-SQL).查看更多AG目录视图查看:AlwaysOn Availability Groups Catalog Views (Transact-SQL).
1.检查WSFC集群节点配置
use master
go
select * from sys.dm_hadr_cluster_members
go
结果集报告了每个成员节点的状态。quorum定义为节点和文件共享大多数。你可以看到每个节点的状态,包括每个节点投票的权重( number_of_quorum_votes值)。
2.集群网络
以下查询获取WSFC集群的网络配置:
select * from sys.dm_hadr_cluster_networks
这个结果,WSFC集群中的每个网络配置返回一样。比如双节点集群每个节点包含2个网络适配器,那么就返回4行。
3.可用组
以下语句获取AG信息。
select primary_replica, primary_recovery_health_desc, synchronization_health_desc from sys.dm_hadr_availability_group_states
go
select * from sys.availability_groups
go
select * from sys.availability_groups_cluster
go
DMV sys.dm_hadr_availability_group_states (Transact-SQL), sys.availability_groups (Transact-SQL), 和sys.availability_groups_cluster 返回WSFC集群中关于AG的所有信息。实际上sys.availability_groups (Transact-SQL), 和sys.availability_groups_cluster会返回相同的信息。
实际上, sys.availability_groups_cluster 返回保存在WSFC集群中AG的元数据。而sys.availability_groups (Transact-SQL) 返回SQL Server过程空间缓存的AG元数据信息。sys.dm_hadr_availability_group_states (Transact-SQL) 返回了当前AG的健康状态。
4.可用副本
以下查询返回Ag中的可用副本:
select replica_id, role_desc, connected_state_desc, synchronization_health_desc from sys.dm_hadr_availability_replica_states
go
select replica_server_name, replica_id, availability_mode_desc, endpoint_url from sys.availability_replicas
go
select replica_server_name, join_state_desc from sys.dm_hadr_availability_replica_cluster_states
go
类似于AG的DMV,有3个关于可用副本的DMV。sys.dm_hadr_availability_replica_states返回可用副本的当前状态, sys.dm_hadr_availability_replica_cluster_states 从WFSC中返回可用副本的状态。 sys.availability_replicas返回可用副本的配置信息。
5.可用副本健康
通过以下查询获取当前可用副本健康信息
select replica_id, role_desc, recovery_health_desc, synchronization_health_desc from sys.dm_hadr_availability_replica_states
go
比较primary副本和secondary副本,注意secondary副本,健康信息只报告AG内的可用副本。
6.可用数据库
以下信息获取可用副本内的数据库信息。你可以观察中断数据移动前后的可用数据库变化:
select * from sys.availability_databases_cluster
go
select group_database_id, database_name, is_failover_ready from sys.dm_hadr_database_replica_cluster_states
go
select database_id, synchronization_state_desc, synchronization_health_desc, last_hardened_lsn, redo_queue_size, log_send_queue_size from sys.dm_hadr_database_replica_states
go
有3个关于可用数据库的DMV,sys.availability_databases_cluster返回在WSFC中的可用数据库的信息。sys.dm_hadr_database_replica_cluster_states返回数据库中数据库副本的状态信息。包含了一些重要的信息,比如是否准备好副本转移。 sys.dm_hadr_database_replica_states是最详细,返回了关于每个可用数据库的状态信息,比如LSN处理进程。
7.可用数据库健康
一下信息获取每个可用数据库的健康信息。
select dc.database_name, dr.database_id, dr.synchronization_state_desc,
dr.suspend_reason_desc, dr.synchronization_health_desc
from sys.dm_hadr_database_replica_states dr join sys.availability_databases_cluster dc
on dr.group_database_id=dc.group_database_id
where is_local=1
go