AG扩展事件
SQL Server 2012定义了一些关于AlwaysOn的扩展事件。你可以监控这些扩展事件来帮助诊断AG的根本问题。你也可以使用以下语句查看扩展事件:
SELECT * FROM sys.dm_xe_objects WHERE name LIKE '%hadr%'
1.AlwaysOn健康(AlwaysOn_health)会话
AlwaysOn_health扩展会话当你在创建AG并捕获AlwaysOn相关事件的子集。这个会话被配置为有用的,方便的工具来帮助你开启调试AG。创建AG窗口在每个特定可用性副本配置窗口中自动启动会话。
如果你没有使用新建AG对话框,AlwaysOn_health会话可能不会自动启动,如果会话没有启动,不能再问题发生的时候捕获每个数据。你应该手动启动会话并且配置会话来自动会话。
通过查看AlwaysOn_health会话的定义:
1.SSMS,展开扩展事件,会话
2.右击AlwaysOn_health,然后创建脚本
更多关于ALwaysOn_health的信息查看:AlwaysOn Extended Events Reference.
2.调试扩展事务
如果要有额外的事件覆盖AlwaysOn_health会话,SQL Server定义了一大集合的调试事件。需要作一下步骤:
1.在SSMS,展开扩展事件,会话
2.右击创建时间,或者右击AlwaysOn_health,选择属性
3.选择事件页面
4.在library,目录列,选择alwayson并且清除所有目录
5.在Channel列,选择调试,所有相关事件,没有被选择的都会显示在event library
6.event library选中一个,然后点击”>”按钮
7.当完成会话,点击OK关闭。保证会话已经启动了。
3.AlwaysOn扩展事件引用
AlwaysOn扩展事件被用来跟踪AG
3.1 availability_replica_state_change
当AG的状态发生变化。AG的创建或者加入一个可用副本。可以用来诊断错误自动故障转移。可以用来跟踪转移步骤。
3.2 availability_gruop_lease_expired
当集群和可用组出现连接问题和租用过期。这个事件说明AG和WSFC集群连接断开。如果连接问题发生在primary副本。事件可能会自动转移或者导致AG offline。
3.3 availability_replica_automatic_failover_validation
当自动故障转移验证AG作为primary副本的必要性,显示是否目标可用副本已经做好了成为新primary副本的准备。比如,当并不是所有数据库都是被同步的,或者不是已被加入的,故障转移验证返回错误。这个事件被设计用来提供在故障转移的时候提供错误点。可以根据这个信息检查为什么自动故障转移发生。
3.4 error_reported:对于传输或链接问题
每个过滤事件说明一个连接问题发生,数据库镜像endpoint发生错误
3.5 data_movement_suspend_resume
当数据库副本movement挂起或者恢复的时候触发事件。
3.6 alwayson_ddl_executed
当发生AlwasOn DDL语句,包括Create,Alter,Drop语句。事件的主要目的说明AG中用户的行为,或者说明用户操作行为的开始点。事件可以跟踪手动故障转移,强制故障转移,中断和恢复数据移动。
3.7 alwayson_replica_manager_stat
当可用性副本管理状态修改触发。这个事件说明可用性副本管理的心跳。当可用性副本管理没有心跳状态,SQL Server实例中的所有可用性副本都会下线。
3.8 error_reported,数据库副本角色修改
这个过滤的,AG角色变化的时候,error_reported事件被异步触发。这个说明哪个可用性数据库在修改故障转移时修改角色失败。