Cowork Arcetec

O que acontece quando uma atualização do SQL Server fica pela metade

O que acontece quando uma atualização do SQL Server fica pela metade

Uma atualização cumulativa do SQL Server não é uma instalação: é uma migração do mecanismo e dos seus bancos de dados do sistema. Quando termina bem, ninguém fica sabendo. Quando é interrompida no meio —porque o serviço reiniciou, porque um disco encheu, porque um banco ficou em um estado que o script não esperava— o mecanismo inicia, começa a aplicar a mudança sobre o master, não consegue concluí-la e para. Visto de fora, tudo parece um serviço fora do ar. Visto de dentro, o mecanismo está fazendo exatamente o que lhe pediram: não deixar pela metade uma mudança estrutural.

Vivemos isso em um cliente do setor farmacêutico, em plena operação. A história completa está resumida em um caso publicado: o serviço voltou em quarenta minutos e o ambiente original foi reconstruído naquela mesma noite. O que segue é como se chega a essa decisão.

Primeiro: ler, não reiniciar

O primeiro impulso —reiniciar o serviço para ver se ele sobe— é o pior. Cada reinicialização volta a lançar o mesmo script de atualização, que volta a falhar no mesmo ponto e, de quebra, acrescenta ruído ao diagnóstico. Antes de tocar em qualquer coisa, é preciso ir ao log do servidor, o ERRORLOG do mecanismo, que fica na pasta LOG da instância e pode ser lido com qualquer editor mesmo que o serviço não esteja no ar.

Ali aparece a frase que organiza todo o resto. Uma atualização que não termina costuma deixar uma mensagem sobre o nível de script do banco master, com o número da etapa em que parou e o erro que a interrompeu. Esse número é o que importa: diz se o mecanismo ficou esperando espaço, se tropeçou em um objeto que alguém modificou à mão anos atrás ou se um banco de usuário ficou em recuperação e bloqueia o resto.

O que se verifica, em ordem

Segundo: decidir contra o relógio, não contra o orgulho

Com o diagnóstico em mãos aparece a pergunta real, e ela não é técnica: quanto vale cada minuto deste banco parado? Reparar o mecanismo no lugar pode levar vinte minutos ou três horas, e essa incerteza é o problema. Um diagnóstico honesto não diz “eu resolvo”; diz “ainda não sei quanto tempo leva”.

Por isso, quando existe uma réplica sincronizada e a operação está rodando, a decisão certa quase sempre é a mesma: fazer o failover. O serviço volta em um tempo delimitado e conhecido, a pressão desaparece, e o reparo do nó original deixa de ser uma emergência para se tornar um trabalho de janela noturna, com calma e com evidências.

É isso que faz uma réplica valer o que custa. Ela não está ali para um desastre de cinema: está ali para a terça-feira em que uma atualização fica pela metade.

Terceiro: reconstruir e deixar registrado

Com o serviço no ar na réplica, o nó original é reconstruído sem usuários: a atualização é concluída ou revertida, a integridade dos bancos é validada, a sincronização é restabelecida e se confirma que o conjunto voltou a ter dois nós saudáveis. O que não pode faltar depois é a análise do evento por escrito, com a causa, o tempo real de indisponibilidade e o que muda para a próxima vez.

O que evita que aconteça de novo

Nenhuma dessas quatro coisas é cara. A que sai cara é a outra: descobrir no meio do incidente que a réplica existia, mas que ninguém nunca tinha feito o failover para ela.

Se você quiser revisar como está a sua plataforma de dados, escreva para nós: o diagnóstico é delimitado e dele sai um mapa, não uma proposta de quarenta páginas.

Artigos relacionados

Tema: Microsoft Azure