使用sp_dbmmonitorresults来监控镜像

使用sp_dbmmonitorresults来监控镜像


配置


首先,在msdb数据库执行存储过程sp_dbmmonitoraddmonitoring。这个系统存储过程在SQL Server代理新建一个定期更新镜像数据库信息的作业“Database Mirroring Monitor Job”。

使用以下脚本在每个镜像服务器上执行:

USE msdb;
GO
EXEC sp_dbmmonitoraddmonitoring;
GO

你可以指定更新间隔(分钟)。此值可以是介于 1 到 120 分钟之间的值。 默认值为 1 分钟。

完成后,你可以使用sp_dbmmonitorresults快速拉取镜像状态数据。你可以指定结果返回的行数。默认为最后1行。还可以指定返回结果前是否更新状态。

可以使用以下脚本返回镜像状态数据。

EXEC sys.sp_dbmmonitorresults
@database_name = ‘InsertDatabaseNameHere‘, -- sysname
@mode = 0, -- int
@update_table = 0 – int

当前镜像的状态


为了获取1个数据库当前镜像的状态,你可以查询mirror_state列的值。你可以根据该值来配置如果状态异常时发出告警。查询如下:

DECLARE @MonitorResults AS TABLE (
database_name VARCHAR(255),
role INT,
mirror_state TINYINT,
witness_status TINYINT,
log_generat_rate INT,
unsent_log INT,
sent_rate INT,
unrestored_log INT,
recovery_rate INT,
transaction_delay INT,
transaction_per_sec INT,
average_delay INT,
time_recorded DATETIME,
time_behind DATETIME,
local_time DATETIME);
INSERT INTO @MonitorResults
EXEC sp_dbmmonitorresults
@database_name = ‘InsertDatabaseNameHere‘,
@mode = 0,
@update_table = 0;
SELECT mirror_state
FROM @MonitorResults;

可以返回的值为:

  • 0=Suspended
  • 1=Disconnected
  • 2=Synchronizing
  • 3=Pending Failover
  • 4=Synchronized

如果你配置了一个告警,检查小于2的值,你就可以知道镜像下线。

数据库当前角色


在镜像配置后,你可以跟踪给定数据库的角色。如果你总是想让某台服务器为主,那你可以修改以下查询来检查角色:

DECLARE @MonitorResults AS TABLE (
database_name VARCHAR(255),
role INT,
mirror_state TINYINT,
witness_status TINYINT,
log_generat_rate INT,
unsent_log INT,
sent_rate INT,
unrestored_log INT,
recovery_rate INT,
transaction_delay INT,
transaction_per_sec INT,
average_delay INT,
time_recorded DATETIME,
time_behind DATETIME,
local_time DATETIME);
INSERT INTO @MonitorResults
EXEC sp_dbmmonitorresults
@database_name = ‘InsertDatabaseNameHere‘,
@mode = 0,
@update_table = 0;
SELECT role
FROM @MonitorResults;

该查询返回值为:

  • 1=Principal
  • 2=Mirror

根据你的监控计划,你可以跟踪到什么时候一个数据库从主切换了。

见证的状态


如果你配置了见证服务器,你也要时刻监控见证服务器的状态,如果见证服务器下线,对镜像数据库的可用性是有影响的。你可以修改以下查询:

DECLARE @MonitorResults AS TABLE (
database_name VARCHAR(255),
role INT,
mirror_state TINYINT,
witness_status TINYINT,
log_generat_rate INT,
unsent_log INT,
sent_rate INT,
unrestored_log INT,
recovery_rate INT,
transaction_delay INT,
transaction_per_sec INT,
average_delay INT,
time_recorded DATETIME,
time_behind DATETIME,
local_time DATETIME);
INSERT INTO @MonitorResults
EXEC sp_dbmmonitorresults
@database_name = ‘InsertDatabaseNameHere‘,
@mode = 0,
@update_table = 0;
SELECT witness_status
FROM @MonitorResults;

返回结果如下:

  • 0=Unknown
  • 1=Connected
  • 2=Disconnected

笔者使用的是异步镜像,没有配置见证,所以值为0。如果配置了见证,可以跟踪它的状态,配置告警,知道什么时候值不为1了。

数据还没有发送到镜像

你可以跟踪等待发送到镜像的数据量。常常被称为发送队列。可以修改如下脚本:

DECLARE @MonitorResults AS TABLE (
database_name VARCHAR(255),
role INT,
mirror_state TINYINT,
witness_status TINYINT,
log_generat_rate INT,
unsent_log INT,
sent_rate INT,
unrestored_log INT,
recovery_rate INT,
transaction_delay INT,
transaction_per_sec INT,
average_delay INT,
time_recorded DATETIME,
time_behind DATETIME,
local_time DATETIME);
INSERT INTO @MonitorResults
EXEC sp_dbmmonitorresults
@database_name = ‘InsertDatabaseNameHere‘,
@mode = 0,
@update_table = 0;
SELECT unsent_log
FROM @MonitorResults;

参考:

sp_dbmmonitoraddmonitoring

https://msdn.microsoft.com/zh-cn/library/ms403582.aspx

sp_dbmmonitorresults

https://msdn.microsoft.com/zh-cn/library/ms366320.aspx

时间: 2024-08-05 06:55:07

使用sp_dbmmonitorresults来监控镜像的相关文章

第三篇——第二部分——第六文 监控SQL Server镜像

原文:第三篇--第二部分--第六文 监控SQL Server镜像 原文出处:http://blog.csdn.net/dba_huangzj/article/details/26846203 要优化,首先要监控,看看是否有性能问题,如果有,在哪里.才能开始真正的优化,所以本文以监控为入口,在上一篇已经略微提供了一些监控方面的信息 针对监控部分,本文将介绍以下内容: 监控组件 警告阈值 数据库镜像监视器 关于镜像的系统存储过程 性能计数器 1.1. 监控组件: 数据库镜像状态表: 数据库镜像状态存

第三篇——第二部分——第三文 配置SQL Server镜像——域环境

原文:第三篇--第二部分--第三文 配置SQL Server镜像--域环境 原文出处:http://blog.csdn.net/dba_huangzj/article/details/28904503 本文将演示如何在域环境下部署镜像,在域中部署相对来说简单很多,但是很多企业并不真正使用域来管理服务器(本人所在的公司就是其一),所以有必要演示非域环境,并且重点放在非域环境下.但是作为实践经验和最佳建议,强烈使用域环境管理.非域环境将在第四文中演示:http://blog.csdn.net/dba

如何在GO语言中使用Kubernetes API?

Rancher Labs首席软件工程师Alena Prokharchyk受邀在2017年12月6-8日的CNCF主办的Kubernetes领域顶级盛会KubeCon + CloudNativeCon 2017北美峰会上进行演讲,本文由演讲内容整理而成. 随着Kubernetes越来越受欢迎,围绕它的集成和监控服务的数量也在不断增长.Golang编写的所有此类服务的关键组件是kubernetes / client-go--一个用于与Kubernetes集群API通信的软件包.在本文中,我们将讨论c

旁路镜像、端口镜像、旁路监控

常见的网络监控模式可以分为两种:一种是旁路监控模式,另一种是串联监控模式. "旁路监控模式"一般是指通过交换机等网络设备的"端口镜像"功能来实现监控,在此模式下,监控设备只需要连接到交换机的指定镜像端口,所以形象的称之为"旁路监控". 而串联模式一般是通过网关.网桥或者代理服务器的模式来进行监控,由于监控设备做为网关或者网桥串联在网络中,所以称之为"串联监控模式". 旁路模式的优缺点 优点: 旁路监控模式部署起来比较灵活方便,

监控SQL Server数据库异常镜像状态发告警邮件

监控SQL Server数据库异常镜像状态发告警邮件 在部署了数据库镜像之后,我们需要监控参与镜像的主数据库和镜像数据库的状态,如果状态异常,发送告警邮件.那么这个脚本需要在主和镜像服务器上都运行. 目录视图sys.database_mirroring对SQL Server实例上的每个数据库都包含一行(包括系统数据库和未配置镜像的数据库),当然也包含所有镜像数据库的状态信息.我们可以查询该目录视图,对于每个异常状态的镜像数据库触发告警邮件.笔者的环境配置的是异步镜像,依赖于手动故障转移. 前提条

linux镜像数据抓包监控

主要是用户监控和分析进出设备端口报文和数据,根据目的端口抓包对出现故障进行分析. 1.三层交换机划分vlan 区别不同网段 2.三层交换机做端口镜像vlan32监控端口 vlan31为被监控端口 3.Centos5.6平台把bssgate和bssgate.ini拷贝到/bin文件夹,打开bssgate.ini修改下配置脚本. 4.Centos5.6平台的bin文件里面执行./bssgate文件

SQLServer:镜像监控之oldest unsent transaction告警自愈

本文将介绍sqlserver镜像监控中出现Oldest Unsent Transaction Threshold告警如何自愈 镜像监控的数据及告警由Database Mirroring Monitor Job作业进行记录及触发,当Oldest Unsent Transaction超过Threshold时,触发代码为32040的错误信息. 告警的出现可能跟主体服务器实例和镜像服务器实例中的负载及它们的网络连接相关(博主在维护中遇到的情况大多是这样),但是在负载或网络连接恢复正常后,Oldest U

OneAPM NI 基于旁路镜像数据的真实用户体验监控

在这个应用无处不在的时代,一次网络购物,一次网络银行交易,一次网络保险的购买,一次春运车票的购买,一次重要工作邮件的收发中出现的延时,卡顿对企业都可能意味着用户忠诚度下降,真金白银的损失. 因而感知真实用户体验(Real User Experience),将用户访问量,每个页面访问量的变化,应用的错误率,平均响应时间等指标作为网站运营的基本KPI已经是势在必行.利用真实用户体验工具对应用.网站进行性能检测和业务分析已经成为运营一个对外提供服务的应用的基础要求.真实用户体验监测(Real User

SQL Server数据库镜像关键性能计数器

SQL Server数据库镜像关键性能计数器 监视数据库镜像基本有以下5种方法: 1. 配置数据库镜像监视器.设置告警阈值. 2. 配置WMI EVENT ALERT,配置镜像状态修改后的动作或告警. 3. 使用系统监视器查看关键性能计数器. 4. 部署作业监控异常镜像状态,发送告警. 5. 使用sp_dbmmonitorresults获取镜像数据. 当然,使用扩展事件和SQL Server Profiler也能监控到数据库事件中的数据库镜像状态修改.这种工具主要用于跟踪,而非监控的常规手段.