Log de espelho vazio no primário, mas bom no espelho


8

Temos dezenas de servidores principais e espelhos correspondentes, a maioria está funcionando bem, no entanto, um deles está agindo de forma estranha. Especificamente, o sp_dbmmonitorresultsproc retorna todas as colunas como NULL para um determinado banco de dados de princípios, enquanto sp_dbmmonitorresultsno espelho retorna informações válidas:

Histórico no Principle Server

Histórico no servidor espelho

Agora, tenho uma ideia aproximada de qual foi a causa; quando os servidores de princípio e de espelhamento foram configurados, as configurações regionais estavam incorretas no primário (a hora estava correta, mas estava usando uma região +4 (América etc.), a região de tempo foi corrigida para GMT +0 APÓS o espelhamento ter sido configurado (escola menino erro que eu sei, mas c'est la vie!)

Edição: 19/12/2012

Hoje eu removi o espelhamento, apaguei as cópias no espelho e reinstalei o espelhamento, porém isso não resolveu o problema! Vou dar uma recompensa nessa questão para tentar chegar ao fundo disso.

Para confirmar, se eu executar EXEC sp_dbmmonitorresults @database_name = 'ProScript'manualmente em cada servidor, ele retornará NULL para a maioria dos valores no primário, mas retornará bem no espelho, como mostrado:

Quando executado no primário:

insira a descrição da imagem aqui Zoom: clique para a versão em tamanho real

Quando correu no espelho:

insira a descrição da imagem aqui Zoom: clique para a versão em tamanho real

Como você pode ver, os horários são atuais e o banco de dados é sincronizado, mas o log_generation_rate, unsent_log, send_rate etc vendem todos NULL no primário?

Ambos os servidores têm o trabalho principal sendo executado a cada minuto, exec sys.sp_dbmmonitorupdatecomo uma etapa do trabalho etc.

Olhando para a fonte do sys.sp_dbmmonitorupdate, ele pega esses valores sys.dm_os_performance_counters- por isso, se eu executar o seguinte no espelho:

SELECT  counter_name ,
        cntr_value
FROM    sys.dm_os_performance_counters
WHERE   instance_name = 'ProScript'
        AND counter_name IN ( N'Log Send Queue KB', N'Log Bytes Sent/sec', N'Redo Queue KB', N'Redo Bytes/sec', N'Transaction Delay', N'Log Bytes Flushed/sec', N'Transactions/sec' )

Eu obtenho bons resultados:

insira a descrição da imagem aqui

No entanto, se eu executar o mesmo SQL no primário, não haverá linhas!

Isso sugere que a sys.dm_os_performance_counterstabela não está sendo preenchida para o espelhamento? O que causaria isso ??

Respostas:


5

Bem, demorou meses, mas finalmente encontrei o problema!

O sys.dm_os_performance_counters não estava sendo preenchido no servidor principal.

Acontece que os contadores onde não estavam instalados, consegui fazer isso manualmente da seguinte maneira:

C:\Windows\system32>lodctr "D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSS
QLSERVER\MSSQL\Binn\perf-MSSQLSERVERsqlctr.ini"

Reiniciei o SQL e o boom, agora a tabela está sendo preenchida - incluindo minhas estatísticas de espelhamento.


Isso deve ter sido divertido de rastrear.
Zane

0

Você tentou remover o trabalho de monitoramento de espelhamento de banco de dados na instância principal e recriá-lo?

Isso não envolve reinicializar a sessão de espelhamento de banco de dados, apenas eliminar e recriar o trabalho usando os mesmos procedimentos armazenados usados ​​pelo SSMS para gerenciar o monitor de espelhamento de banco de dados.

Aqui estão os links para as entradas dos Manuais Online:

E um pequeno exemplo de script:

    -- you'll need to be connected to the instance as a member
    -- of the sysadmin fixed server role, of course.

    -- delete the database mirroring monitoring job

    exec msdb.dbo.sp_dbmmonitordropmonitoring;
    go

    -- rebuild the database mirroring monitoring job
    -- the procedure accepts an optional parameter
    -- specifying the number of minutes between updates.
    -- the default is 1 minute.

    exec msdb.dbo.sp_dbmmonitoraddmonitoring;
    go

Oi Koz, esta foi uma das primeiras coisas que tentei, tenho medo, acabei de tentar novamente agora, sem alterações. Vou morder a bala e remover o espelhamento e adicioná-lo novamente.
HeavenCore 18/04/12
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.