MSSQL Server 2008R2 Falha na replicação, sem latência, sem erros, dados ausentes no assinante

1

Esta manhã, depois de executar uma implantação de banco de dados de rotina de duas novas tabelas, notei que a replicação transacional havia parado por mais de três horas. Quando a replicação foi retomada, ela pegou 3 ou mais horas depois, como se nada tivesse acontecido, deixando uma lacuna de mais de 3 horas nos dados do assinante. Por exemplo, a replicação parou às 3h30 e, em seguida, foi retomada às 6h30, mas nenhum dado foi replicado entre 3h30 e 6h30.

Nenhum erro de replicação foi encontrado, nenhum erro de banco de dados / servidor e o monitor de replicação mostrou latência zero. O log de transações era muito grande (61% da capacidade), mas, caso contrário, não havia erros a serem encontrados. Durante o período de 3 horas em que nada estava sendo replicado sp_replmonitorsubscriptionpendingcmds mostrou que não havia transações pendentes.

Consegui determinar que os dados pararam de funcionar porque temos uma tabela que registra continuamente os eventos do aplicativo. O único trabalho em execução durante este período foi uma reconstrução do índice de uma grande tabela de aproximadamente 1 bilhão de linhas. O trabalho começou 30 minutos antes da replicação parar e durou 40 minutos em duração total.

Nosso ambiente consiste em dois grandes bancos de dados configurados para replicação transacional peer-to-peer. Nós não utilizamos o ambiente como seria de se esperar. Em vez de ler e gravar em ambos os bancos de dados, um banco de dados é nosso principal cliente voltado para o banco de dados e o secundário é para relatórios em tempo real. Originalmente, considerávamos peer-to-peer uma solução barata de recuperação de desastres se o banco de dados principal se tornasse corrompido. Até o momento, não a usamos como tal e, em retrospectiva, deveria ter usado uma replicação transacional simples.

Depois que a replicação começou a fluir novamente entre os bancos de dados do editor e do assinante, o monitor de replicação mostrava a latência e sp_replmonitorsubscriptionpendingpendingcmds mostrava transações pendentes. Após cerca de 90 minutos, houve latência zero e tudo voltou ao normal, mas havia uma diferença de mais de 3 horas nos dados do assinante.

Eu não entendo como isso acontece sem que haja algum erro? Eu imagino que, se a replicação parasse de repente, isso aconteceria por causa de uma exceção. Fiz algumas pesquisas e encontrei algumas informações sobre Replication Agent Stalls, mas foi inconclusivo. Eu não tenho ideia do que aconteceu e não há muito para continuar. Alguém sabe a melhor maneira de solucionar isso? Alguém já experimentou isso no passado? Alguém pode me ajudar a apontar na direção certa? Qualquer ajuda seria muito apreciada.

    
por acatala 09.10.2014 / 13:58

0 respostas