Espelhamento de banco de dados síncrono (modo de alta segurança)

Quando a segurança de transação é definida como FULL, a sessão de espelhamento de banco de dados é executada no modo de segurança alta e opera de forma síncrona depois de uma fase de sincronização inicial. Este tópico descreve os detalhes das sessões de espelhamento de banco de dados configuradas para operação síncrona. Esse tópico supõe que você esteja familiarizado com os conceitos fundamentais das operações de espelhamento de banco de dados. Para obter mais informações, consulte Sessões de espelhamento de banco de dados.

Para realizar a operação síncrona de uma sessão, o servidor espelho deve sincronizar o banco de dados espelho com o banco de dados principal. Quando a sessão é iniciada, o servidor principal começa a enviar seu log ativo ao servidor espelho. O servidor espelho grava todos os registros de log de entrada no disco o mais rápido possível. Assim que todos os registros de log recebidos são gravados no disco, os bancos de dados são sincronizados. Contanto que os parceiros permaneçam em comunicação, os bancos de dados permanecem sincronizados.

ObservaçãoObservação

Para monitorar alterações de estado em uma sessão de espelhamento de banco de dados, use a classe de evento Database Mirroring State Change. Para obter mais informações, consulte Classe de evento Database Mirroring State Change.

Depois de concluída a sincronização, toda transação confirmada no banco de dados principal também é confirmada no servidor espelho, garantindo a proteção dos dados. Isso é feito esperando a confirmação de uma transação no banco de dados principal, até o servidor principal receber uma mensagem do servidor espelho declarando que intensificou o log da transação no disco. Observe que a espera por essa mensagem aumenta a latência da transação.

O tempo necessário para a sincronização depende essencialmente do atraso do banco de dados espelho em relação ao banco de dados principal no início da sessão (medido inicialmente pelo número de registros de log recebido do servidor principal), da carga de trabalho no banco de dados principal e da velocidade do sistema espelho. Depois que uma sessão é sincronizada, o log intensificado que ainda precisar ser refeito no banco de dados espelho continuará na fila de restauração. Para obter mais informações, consulte Sessões de espelhamento de banco de dados.

Assim que o banco de dados espelho for sincronizado, o estado de ambas as cópias do banco de dados será alterado para SYNCHRONIZED.

A operação síncrona é mantida da seguinte maneira:

  1. Durante o recebimento de uma transação de um cliente, o servidor principal grava o log da transação no log de transações.

  2. O servidor principal grava a transação no banco de dados e, simultaneamente, envia o registro de log ao servidor espelho. O servidor principal espera uma confirmação do servidor espelho antes de confirmar qualquer uma das operações a seguir ao cliente: uma reversão ou uma confirmação de transação.

  3. O servidor espelho intensifica o log do disco e retorna uma confirmação ao servidor principal.

  4. Durante o recebimento da confirmação do servidor espelho, o servidor principal envia uma mensagem de confirmação ao cliente.

O modo de segurança alta protege seus dados exigindo a sincronização dos dados entre dois locais. Todas as transações confirmadas estão garantidas para serem gravadas no disco do servidor espelho.

Modo de segurança alta sem failover automático

A figura a seguir mostra a configuração do modo de segurança alta sem failover automático. A configuração consiste apenas nos dois parceiros.

Comunicação de parceiros sem uma testemunha

Quando os parceiros estão conectados e o banco de dados já está sincronizado, há suporte para failover manual. Se a instância de servidor espelho diminuir, a instância de servidor principal não será afetada e as execuções serão expostas (ou seja, sem espelhamento dos dados). Se o servidor principal estiver perdido, o espelho será suspenso, mas o serviço poderá ser forçado para o servidor espelho (com possível perda de dados). Para obter mais informações, consulte Serviço forçado (com possível perda de dados).

Modo de segurança alta com failover automático

O failover automático fornece alta disponibilidade, assegurando que o banco de dados ainda funcione depois da perda de um servidor. O failover automático exige que a sessão tenha uma terceira instância de servidor, a testemunha que, idealmente, reside em um terceiro computador. A figura a seguir mostra a configuração da sessão do modo de segurança alta que oferece suporte a failover automático.

A testemunha e dois parceiros de uma sessão

Ao contrário dos dois parceiros, a testemunha não atende o banco de dados. A testemunha simplesmente oferece suporte a failover automático verificando se o servidor principal está funcionando. O servidor espelho apenas iniciará o failover automático se o espelho e a testemunha permanecerem conectados um ao outro depois de serem desconectados do servidor principal.

Quando uma testemunha é definida, a sessão exige quorum — uma relação entre pelo menos duas instâncias de servidor que permite disponibilizar o banco de dados. Para obter mais informações, consulte Quorum: como uma testemunha afeta a disponibilidade do banco de dados e Failover automático. Para obter mais informações, consulte Testemunha de espelhamento de banco de dados.

O failover automático exige as seguintes condições:

  • O banco de dados já esteja sincronizado.

  • A falha ocorra quando todas as três instâncias de servidor estejam conectadas, e a testemunha e o servidor espelho permaneçam conectados.

A perda de um parceiro tem o seguinte efeito:

  • Se o servidor principal ficar indisponível nas condições anteriores, acontecerá o failover automático. O servidor espelho é alternado para a função principal e oferece seu banco de dados como banco de dados principal.

  • Se o servidor principal ficar indisponível quando essas condições não forem atendidas, será possível forçar o serviço (com possível perda de dados). Para obter mais informações, consulte Serviço forçado (com possível perda de dados).

  • Se apenas o servidor espelho ficar indisponível, o principal e a testemunha continuarão funcionando.

Se a sessão perder a testemunha, o quorum exigirá ambos os parceiros. Se qualquer parceiro perder quorum, ambos os parceiros perderão quorum e o banco de dados ficará indisponível até que o quorum seja restabelecido. Esse requisito de quorum garante que na ausência de uma testemunha o banco de dados nunca será executado exposto, ou seja, sem ser espelhado.

ObservaçãoObservação

Se você espera que a testemunha permaneça desconectada por um tempo significativo, recomendamos que você remova a testemunha da sessão até ela ficar disponível.