《Replication的犄角旮旯》系列导读

Replication的犄角旮旯(一)--变更订阅端表名的应用场景

Replication的犄角旮旯(二)--寻找订阅端丢失的记录

Replication的犄角旮旯(三)--聊聊@bitmap

Replication的犄角旮旯(四)--关于事务复制的监控

Replication的犄角旮旯(五)--关于复制identity列

Replication的犄角旮旯(六)-- 一个DDL引发的血案(上)(如何近似估算DDL操作进度)

Replication的犄角旮旯(七)-- 一个DDL引发的血案(下)(聊聊logreader的延迟)

Replication的犄角旮旯(八)-- 订阅与发布异构的问题

Replication的犄角旮旯(九)-- sp_setsubscriptionxactseqno,赋予订阅活力的工具

---------------------------------------华丽丽的分割线--------------------------------------------

最近经常被群里的朋友问到如何监控复制状态这样的问题;总结一下我自己的经验吧,仅供参考;

关于事务复制,一般监控的内容无外乎代理的状态(重试、失败)、复制延迟两类,而复制延迟又分为两个阶段(发布到分发、分发到订阅)

检测复制代理状态

MSdistribution_agents  --其中每个在本地分发服务器上运行的分发代理对应一行。此表存储在分发数据库中。

http://msdn.microsoft.com/zh-cn/library/ms174399%28v=sql.120%29.aspx

MSdistribution_history  --包含与本地分发服务器关联的分发代理的历史记录行。 此表存储在分发数据库中。

http://msdn.microsoft.com/zh-cn/library/ms179878%28v=sql.120%29.aspx

根据这两个系统表,可以查出近期分发代理的状态;

MSdistribution_agents中的id列与MSdistribution_history中的agent_id关联

MSdistribution_history中的runstatus列表示运行状态

运行状态:

1 = 启动。

2 = 成功。

3 = 正在进行。

4 = 空闲。

5 = 重试。

6 = 失败。

如果对MSdistribution_history表的time列取最近N分钟的记录,与MSdistribution_agents 做right join,则可以看出近N分钟内,是否存在不活动的分发代理;

检测复制延迟

sp_replmonitorhelpsubscription --返回发布服务器上属于一个或多个发布的订阅的当前状态信息,并为每个返回的订阅返回一行。 在分发服务器上对分发数据库执行此存储过程,用于监视复制。

http://msdn.microsoft.com/zh-cn/library/ms188073%28v=sql.120%29.aspx

用法如下:

EXEC distribution.dbo.sp_replmonitorhelpsubscription NULL,NULL,NULL,0,0,0,NULL,0

其中latency表示在事务发布中,由日志读取器代理或分发代理传播的数据更改的最长滞后时间(秒)

尽管这个值并不能明确的表示具体是哪个阶段发生的延迟(发布到分发、分发到订阅)

关于复制延迟进一步的判断

sp_replcounters    --为每个发布数据库返回有关滞后时间、吞吐量和事务计数的复制统计信息。 此存储过程在发布服务器的任何数据库中执行。

http://msdn.microsoft.com/zh-cn/library/ms190486%28v=sql.120%29.aspx

其中Replicated transactions列表示日志中等待传送到分发数据库的事务数;也就是logreader等待从日志中读取的事务数。如果这个值持续增长,说明logreader正处于繁忙状态。首要检查一下VLF是否过多,或者是否写入量较大;

具体的处理办法,可以参考一下高桑的《Replication--复制延迟的诊断和解决

msrepl_commands  --包含复制的命令行数。 该表存储在分发数据库中。

http://msdn.microsoft.com/zh-cn/library/ms178611.aspx

这个表是已经从发布库日志中读取到信息,转换为复制命令存储到此表中,每个命令对应一条记录;

如果这个表的记录数过大(前提是publication中immediate_sync为false,且刚刚执行过分发清除代理时),则表明当前有较多的复制命令未完成分发,说明分发代理繁忙。需要检查一下订阅端是否存在锁、或者较多的索引,导致分发代理效率低下;

关于publication中immediate_sync属性

在默认情况下,immediate_sync是关闭的,这个属性可以在创建publication时指定,也可以在创建完毕后修改。 如果immediate_sync为true, snapshot 文件和replicated transaction将一直保留到data retention.然后才会被删除。这会导致distribution 数据库增长,复制性能下降。 所以推荐设置为false. 需要注意的时,如果一个数据库有多个publication,只要其中有一个publication的immediate_sync为true,将会导致 这个数据库的所有publication的replicated transaction的保留期都延长至data retention.

http://blogs.msdn.com/b/sqlreplication/archive/2013/08/19/transactional-replication-immediate-sync.aspx

或者更准确一些,使用sp_replmonitorsubscriptionpendingcmds

sp_replmonitorsubscriptionpendingcmds  -- 返回有关对事务发布的订阅的等待命令数以及处理这些命令的粗略估计时间的信息。 此存储过程针对每个返回的订阅返回一行。 在分发服务器的分发数据库上执行此存储过程,用于监视复制。

使用方法:

sp_replmonitorsubscriptionpendingcmds [ @publisher = ] 'publisher' 
, [ @publisher_db = ] 'publisher_db' 
, [ @publication = ] 'publication' 
, [ @subscriber = ] 'subscriber' 
, [ @subscriber_db = ] 'subscriber_db' 
, [ @subscription_type = ] subscription_type 结果集

aaarticlea/png;base64,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" alt="" />


刚刚又被朋友问到,发生延迟的时候,是否能定位到是哪些表有频繁的事务;

下面这个脚本是检索当前msrepl_commands中命令涉及表的分布情况,基本可以定位到引起延迟的对象;

如果需要检索最近N分钟的情况,按照b.entry_time在CTE中取最近的N分钟即可;

--当前msrepl_commands表中命令涉及表的分布情况
WITH cte AS(SELECT  a.xact_seqno,b.entry_time,
REPLACE(CONVERT(NVARCHAR(1024),SUBSTRING(a.command,17,1024)),'[dbo].[sp_MS','') commands

FROM dbo.MSrepl_commands a(NOLOCK)
  JOIN MSrepl_transactions b(NOLOCK) ON a.xact_seqno=b.xact_seqno

)
SELECT SUBSTRING(commands,9,CHARINDEX(']',commands)-9),COUNT(1) FROM cte WHERE CHARINDEX(']',commands)>9
GROUP BY SUBSTRING(commands,9,CHARINDEX(']',commands)-9)
ORDER BY COUNT(1) DESC

欢迎拍砖;

Replication的犄角旮旯(四)--关于事务复制的监控的更多相关文章

  1. Replication的犄角旮旯(五)--关于复制identity列

    <Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Repli ...

  2. Replication的犄角旮旯(三)--聊聊@bitmap

    <Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Repli ...

  3. Replication的犄角旮旯(一)--变更订阅端表名的应用场景

    <Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Repli ...

  4. Replication的犄角旮旯(二)--寻找订阅端丢失的记录

    <Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Repli ...

  5. Replication的犄角旮旯(六)-- 一个DDL引发的血案(上)(如何近似估算DDL操作进度)

    <Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Repli ...

  6. Replication的犄角旮旯(七)-- 一个DDL引发的血案(下)(聊聊logreader的延迟)

    <Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Repli ...

  7. Replication的犄角旮旯(八)-- 订阅与发布异构的问题

    <Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Repli ...

  8. Replication的犄角旮旯(九)-- sp_setsubscriptionxactseqno,赋予订阅活力的工具

    <Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Repli ...

  9. 第四篇 Replication:事务复制-订阅服务器

    本篇文章是SQL Server Replication系列的第四篇,详细内容请参考原文. 订阅服务器就是复制发布项目的所有变更将传送到的服务器.每一个发布需要至少一个订阅,但是一个发布可以有多个订阅. ...

随机推荐

  1. Linux 安装git

    0.安装git前: 先去git 官网上看一眼,Linux怎么安装git , 原来非常简单,只需要输入命令即可,但是不同的linux 版本对应的命令不一样: 命令行查看Linux版本: $ cat /e ...

  2. android shape使用总结

    今天使用到shape,这个里面有很多属性,在这里我记录一下各个属性的使用的情况以及所代表的意思 <?xml version="1.0" encoding="utf- ...

  3. softmax分类器+cross entropy损失函数的求导

    softmax是logisitic regression在多酚类问题上的推广,\(W=[w_1,w_2,...,w_c]\)为各个类的权重因子,\(b\)为各类的门槛值.不要想象成超平面,否则很难理解 ...

  4. Git远程操作

    Git远程操作 // */ // ]]>   Git远程操作 Table of Contents 1 Git远程命令概览 2 Git远程仓库与本地仓库的关系图 3 git clone 4 git ...

  5. ncurses-devel

    :Install ncurses(ncurses-devel) and try again. 做一个简单的铺垫,ncurses是字符终端下屏幕控制的基本库.可能很多新开发的程序已经不再使用.假如要编译 ...

  6. win10下搭建QTP测试环境

    安装环境win 10 64位企业版 个人学习用1..net 3.5无法安装更新问题解决:打开windows update 服务2.win10 安装中提示为了对电脑进行保护,已经阻止此应用,请与管理员联 ...

  7. canvas beginPath()

    先举个简单的例子, var myCanvas = document.getElementById("myCanvas"); var context= myCanvas.getCon ...

  8. 如何用Tacker将NFV带入OpenStack?

    最初社区里很多人争论过NFV是否属于OpenStack,而后来可以确定的是OpenStack的确占据了NFV会话中的很大一部分,并且形象地反映在了下面的ETSI MANO概念架构图中,OpenStac ...

  9. jQuery与其他JS库共存

    * 事件 * jQuery与其他JS库共存 * 调用jQuery.noConflict()方法 * 表示jQuery将"$"符号的使用权交出 * 通过两种方式将"$&qu ...

  10. Maven仓库管理-Nexus

    Maven仓库管理-Nexus @import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style& ...