在MYSQL服务器中,通过查看“第二次落后于主服务器”的值,就可以知道从服务器落后于其主服务器的程度。那么,在MSSQL中有没有类似的东西,这样就可以知道主服务器是如何落后于从服务器的呢?
发布于 2015-01-13 23:37:52
在这个问题上有一些争议,但我喜欢使用定期发布的跟踪标记。也就是说,您在发布服务器上调用sp_posttracertoken过程,它将一直向订阅服务器发送一个令牌。您可以查看分发服务器数据库中所有令牌的历史记录。为了让数据更容易理解,我编写了以下视图:
create view [dbo].[tokens] as
select
ps.name as [publisher],
p.publisher_db,
p.publication,
ss.name as [subscriber],
da.subscriber_db,
t.publisher_commit,
t.distributor_commit,
h.subscriber_commit,
datediff(second, t.publisher_commit, t.distributor_commit) as [pub to dist (s)],
datediff(second, t.distributor_commit ,h.subscriber_commit) as [dist to sub (s)],
datediff(second, t.publisher_commit, h.subscriber_commit) as [total latency (s)]
from mstracer_tokens t
inner join MStracer_history h
on t.tracer_id = h.parent_tracer_id
inner join mspublications p
on p.publication_id = t.publication_id
inner join sys.servers ps
on p.publisher_id = ps.server_id
inner join msdistribution_agents da
on h.agent_id = da.id
inner join sys.servers ss
on da.subscriber_id = ss.server_id另一种方法是使用通常所说的金丝雀表。这个想法是,您有一个专门用于监视复制的表,该表通常只有一行带有datetime字段。在发布服务器上更新列,然后通过查看该列在订阅服务器上的值来监视该列在订阅服务器上的落后程度。
最后,您可以查看一些perfmon计数器。根据我的经验,它们不是很好;未完成命令的数量是一个准确的数字,但是将延迟作为持续时间的度量通常是非常不准确的。
https://stackoverflow.com/questions/27917933
复制相似问题