Partilhar via


Quorum: como uma testemunha afeta a disponibilidade do banco de dados

Sempre que uma testemunha é definida para uma sessão de espelhamento de banco de dados, é necessário usar o quorum. Quorum é a relação criada quando duas ou mais instâncias do servidor na sessão de espelhamento de banco de dados são conectadas entre si. Normalmente, o quorum envolve três instâncias do servidor interconectadas. Quando uma testemunha é definida, o quorum é exigido para tornar o banco de dados disponível. Desenvolvido para o modo de segurança alta com failover automático, o quorum verifica o banco de dados pertence a somente um parceiro por vez.

Se uma determinada instância do servidor for desconectada da sessão de espelhamento, aquela instância perderá o quorum. Se nenhuma instância do servidor estiver conectada, a sessão perderá quorum e o banco de dados ficará indisponível. Há três tipos possíveis de quorum:

  • O quorum cheio inclui parceiros e a testemunha.

  • O quorum testemunha a parceiro consiste na testemunha e em qualquer parceiro.

  • O quorum parceiro a parceiro consiste em dois parceiros.

A figura a seguir mostra esses tipos de quorum.

Quorums: completo; testemunha e parceiro; ambos os parceiros

Enquanto o servidor principal atual tiver quorum, o servidor deterá a função de principal e continuará a servir o banco de dados, a menos que o proprietário do banco de dados execute um failover manual. Se o servidor principal perder quorum, deixará de atender o banco de dados. O failover automático só será possível se o banco de dados principal perder quorum, garantindo que não está mais servindo o banco de dados.

Uma instância de servidor desconectada salva sua mais recente função na sessão. Normalmente, uma instância do servidor desconectada é reconectada à sessão ao ser reiniciada e ao recuperar quorum.

Observação importanteImportante

A testemunha só deverá ser definida quando você pretender usar o modo da segurança alta com failover automático. Em modo de alto desempenho, para o qual uma testemunha nunca é requerida, recomendamos definir a propriedade WITNESS como OFF. Para obter mais informações sobre como uma testemunha afeta a disponibilidade do banco de dados em uma sessão de modo de alto desempenho, consulte Espelhamento de banco de dados assíncrono (Modo de alto desempenho).

Quorum em sessões de modo de segurança alta

No modo de segurança alta, o quorum permite o failover automático ao fornecer um contexto no qual as instâncias do servidor com quorum arbitram o parceiro que detém a função de principal. O servidor principal atenderá o banco de dados, se o banco de dados tiver quorum. Se o servidor principal perder quorum quando o servidor espelho sincronizado e a testemunha retiverem quorum, ocorrerá o failover automático.

Os cenários de quorum para modo da segurança alta são os seguintes:

  • O quorum cheio que consiste em parceiros e a testemunha.

    Normalmente, todas as três instâncias do servidor participam de um quorum de três modos, chamado quorum cheio. Com quorum cheio, os servidores principal e espelho continuam executando as suas respectivas funções (a menos que ocorra um failover manual).

  • Um quorum testemunha a parceiro consiste na testemunha e em qualquer parceiro.

    Se a conexão de rede entre os parceiros for perdida porque um dos parceiros foi perdido, há dois casos possíveis:

    • O servidor espelho é perdido e o servidor principal e testemunha retêm quorum.

      Neste caso, o servidor principal define o seu banco de dados como DISCONNECTED e é executado com espelhamento no estado SUSPENDED. (Isso é chamado execução exposta, porque o banco de dados não está sendo espelhado no momento.) Quando o servidor espelho se une novamente à sessão, recupera o quorum como espelho e começa a sincronizar novamente a cópia do banco de dados.

    • O servidor principal é perdido, e o servidor testemunha e espelho retêm quorum.

      Nesse caso, ocorre o failover automático. Para obter mais informações, consulte Failover automático.

    Raramente, a conexão de rede entre parceiros de failover é perdida enquanto ambos os parceiros permanecem conectados à testemunha. Nesse evento, há dois quoruns testemunha a parceiro individuais, sendo que a testemunha é o contato. A testemunha informa ao servidor espelho que o servidor principal ainda está conectado. Então, o failover automático não acontece. Ao contrário, o servidor espelho retém a função espelho e aguarda para reconectar-se ao servidor principal. Nesse momento, se a fila de restauração contiver os registros de log, o servidor espelho continuará a efetuar o roll forward do banco de dados espelho. Durante a reconexão, o servidor espelho sincronizará o banco de dados espelho novamente.

  • O quorum parceiro a parceiro consiste em dois parceiros.

    Enquanto os parceiros retiverem o quorum, o banco de dados continuará no estado SYNCHRONIZED e será possível executar o failover manual. Sem a testemunha, o failover automático não pode ser executado. Porém, quando a testemunha readquire o quorum, a sessão reinicia a operação regular e o failover automático pode ser executado novamente.

  • A sessão perde quorum.

    Se todas as instâncias do servidor forem desconectadas uma das outras, será considerado que a sessão perdeu quorum. Conforme as instâncias de servidor são reconectadas, elas readquirem quorum entre si.

    • Se o servidor principal se reconectar a qualquer uma das outras instâncias do servidor, o banco de dados ficará disponível.

    • Se o servidor principal permanecer desconectado, mas o espelho e a testemunha forem reconectados, não será possível executar o failover automático, pois pode haver perda de dados. Por isso, o banco de dados permanecerá indisponível até que o servidor principal una-se novamente à sessão.

    • Quando todas as três instâncias do servidor forem reconectadas, o quorum cheio será readquirido e a sessão continuará sua operação regular.

Observação importanteImportante

Quando uma sessão tiver o quorum parceiro a parceiro, se qualquer parceiro perder quorum, a sessão perderá quorum. Conseqüentemente, caso pretenda deixar a testemunha desconectada por muito tempo, recomendamos a remoção temporária da testemunha da sessão. Ao remover a testemunha, os requisitos de quorum serão removidos. Então, se o servidor espelho for desconectado, o servidor principal poderá continuar atendendo o banco de dados. Para obter mais informações sobre como adicionar ou remover uma testemunha, consulte Testemunha de espelhamento de banco de dados.

Como o quorum afeta a disponibilidade do banco de dados

A ilustração a seguir mostra como a testemunha e os parceiros cooperam para garantir que, em um determinado momento, somente um parceiro detenha a função de principal e apenas o servidor principal atual possa colocar o seu banco de dados online. Ambos os cenários iniciam com quorum completo, Partner_A na função principal e Partner_B na função espelho.

Como a testemunha e os parceiros cooperam

O cenário 1 mostra como, depois que o servidor principal (Partner_A) falha, a testemunha e o espelho concordam que o principal, Partner_A, não está mais disponível e formam quorum. Então, o espelho, Partner_B, assume a função principal. O failover automático ocorre e o Partner_B coloca a sua cópia do banco de dados online. Em seguida, o Partner_B deixa de funcionar e o banco de dados fica offline. Posteriormente, o antigo servidor principal, Partner_A, reconecta-se à testemunha readquirindo quorum. Porém, ao comunicar-se com a testemunha, o Partner_A toma conhecimento de que não pode colocar a sua cópia do banco de dados online porque o Partner_B agora detém a função principal. Quando o Partner_B se une novamente à sessão, coloca o banco de dados online novamente.

No cenário 2, a testemunha perde quorum, enquanto os parceiros, Partner_A e Partner_B, retêm quorum entre si e o banco de dados permanece online. Então, os parceiros também perdem quorum e o banco de dados fica offline. Mais tarde, o servidor principal, Partner_A, reconecta-se à testemunha, recuperando quorum. A testemunha confirma se o Partner_A ainda derém a função principal, e o Partner_A coloca o banco de dados online.