Failover automático
O failover automático possui suporte somente em sessões de espelhamento de banco de dados executadas com uma testemunha em modo de segurança alta (modo de segurança alta com failover automático). No modo de segurança alta com failover automático, depois de sincronizado o banco de dados, se o banco de dados principal ficar indisponível, ocorrerá um failover automático. Um failover automático faz com que o servidor espelho assuma a função de servidor principal e torne sua cópia do banco de dados online como o banco de dados principal. A exigência de sincronização do banco de dados evita a perda de dados durante o failover, pois toda transação confirmada no banco de dados principal também está confirmada no banco de dados espelho.
Para o failover automático melhorar a confiabilidade, o espelho e os bancos de dados principais devem residir em computadores diferentes.
Condições exigidas para um failover automático
O failover automático exige as seguintes condições:
A sessão de espelhamento de banco de dados deve ser executada em modo de segurança alta e deve possuir uma testemunha. Para obter mais informações, consulte Espelhamento de banco de dados síncrono (modo de alta segurança).
O banco de dados espelho já deve estar sincronizado. Isso garante que todo o conteúdo do log enviado ao servidor espelho foi gravado no disco.
O servidor principal perdeu comunicação com o restante da configuração de espelhamento de banco de dados, enquanto o espelho e a testemunha retêm quorum. Entretanto, se todas as instâncias de servidor perderem comunicação, e a testemunha e o servidor espelho recuperarem comunicação posteriormente, não ocorrerá failover automático.
Observação Para obter mais informações, consulte Quorum: como uma testemunha afeta a disponibilidade do banco de dados.
O servidor espelho detectou a perda do servidor principal.
A forma como o servidor espelho detecta uma falha do servidor principal depende do tipo de falha: rígida ou suave. Para obter mais informações, consulte Possíveis falhas durante espelhamento de banco de dados.
Como o failover automático funciona
Nas condições anteriores, o failover automático inicia a seguinte seqüência de ações:
Se o servidor principal ainda estiver em execução, o estado do banco de dados principal será alterado para DISCONNECTED e todos os clientes do banco de dados principal serão desconectados.
A testemunha e os servidores espelho registram que o servidor principal está indisponível.
Se algum log estiver esperando na fila de restauração, o servidor espelho efetuará o rolling forward do banco de dados espelho.
Observação A quantidade de tempo exigida para aplicar o log depende da velocidade do sistema, da carga de trabalho recente e da quantidade de log na fila de restauração.
O banco de dados espelho anterior é movimentado online como o novo banco de dados principal, e a recuperação limpa todas as transações não confirmadas revertendo-as o mais depressa possível. Os bloqueios isolam essas transações.
Quando o servidor principal anterior retomar a sessão, ele reconhecerá que agora seu parceiro de failover possui a função principal. O servidor principal anterior assume a função de espelho, tornando seu banco de dados o banco de dados espelho. O novo servidor espelho sincroniza o banco de dados espelho novo com o banco de dados principal o mais rápido possível. Assim que o servidor espelho novo tiver sincronizado novamente os bancos de dados, o failover será novamente possível, mas na direção inversa.
A ilustração a seguir mostra uma única instância de failover automático.
Inicialmente, todos os três servidores estão conectados (a sessão tem quorum completo). Partner_A é o servidor principal e Partner_B é o servidor espelho. Partner_A (ou o banco de dados principal em Partner_A) fica indisponível. A testemunha e o Partner_B reconhecem que o principal não está mais disponível na sessão que retém quorum. O Partner_B se torna o servidor principal e disponibiliza sua cópia do banco de dados como o novo banco de dados principal. Por fim, o Partner_A se reconecta à sessão e descobre que agora o Partner_B possui a função principal. O Partner_A assume a função de espelho.
Após o failover, os clientes devem se reconectar ao banco de dados principal atual. Para obter mais informações, consulte Conectando clientes a um banco de dados espelhado.
Observação |
---|
As transações que foram preparadas usando o Coordenador de Transações Distribuídas da Microsoft , mas que ainda não estiverem confirmadas quando ocorrer um failover, serão consideradas anuladas depois da falha do banco de dados. |
Desabilitando failover automático usando o SQL Server Management Studio
Para desabilitar o failover automático, abra a página Espelhamento das Propriedades do Banco de Dados e altere o modo de operação, selecionando uma das seguintes opções:
Segurança alta sem failover automático (síncrono)
Nesse modo, o banco de dados continua sendo sincronizado, e o failover manual continua sendo possível. Para obter mais informações, consulte Espelhamento de banco de dados síncrono (modo de alta segurança).
Alto desempenho (assíncrono)
Nesse modo, o banco de dados espelho pode ficar um pouco atrasado em relação ao banco de dados principal, e o failover manual não seria mais possível. Para obter mais informações, consulte Espelhamento de banco de dados assíncrono (Modo de alto desempenho).
Para alterar o modo de operação
Desabilitando o failover automático usando o Transact-SQL
Em qualquer momento da sessão de espelhamento de banco de dados, o proprietário de banco de dados pode desabilitar o failover automático desativando a testemunha.
Para desativar a testemunha
Como remover a testemunha de uma sessão de espelhamento de banco de dados (Transact-SQL)
Observação A desativação da testemunha enquanto retém a segurança de transação completa faz com que a sessão fique em modo de segurança alta sem failover automático.