2015-01-13 4 views
0

MYSQL 서버에서 "second behind master"값을 살펴봄으로써 슬레이브 서버가 마스터에 얼마나 뒤쳐져 있는지 알 수 있습니다. 그래서, MSSQL에서 이와 유사한 것이 있습니까? 그렇다면 슬레이브 서버가 마스터에 비해 어떻게 뒤떨어져 있는지 알 수 있습니까?SQL Server에서 복제 지연을 찾는 방법은 무엇입니까?

+0

나는 [데이터베이스 관리자 StackExchange 사이트] (http://dba.stackexchange.com/help/on-topic)에서 좀 더 행운이있을 것이라고 생각한다. 평가자에게 '운영자주의'로 플래그를 지정하여 질문을 이전하도록 요청할 수 있습니다. – Pred

답변

0

이 주제에 대해 논쟁의 여지가 있지만 정기적으로 게시 된 추적 프로그램 토큰을 사용하고 싶습니다. 즉, 게시자에서 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 

또 다른 방법은 일반적으로 카나리아 테이블이라고 무엇을 사용하는 것입니다 : 내가 grok 수에 데이터를 좀 더 쉽게하기 위해 다음과 같은보기를 썼다. 일반적으로 datetime 필드가있는 행이 하나 뿐인 복제를 모니터링하는 테이블이 있습니다. 게시자에서 열을 업데이트 한 다음 구독자에서 해당 열 값이 무엇인지 확인하여 구독자가 얼마나 뒤쳐져 있는지 모니터링합니다.

마지막으로 살펴볼 수있는 성능 모니터 카운터가 있습니다. 내 경험에 비추어 볼 때 그들은 그렇게 크지 않다. 미해결 명령의 수가 정확한 숫자이지만 지연 시간 측정은 일반적으로 매우 부정확합니다.

관련 문제