Configurando Database Mirroring em instâncias do SQL Server em Workgroup – Parte I

Pessoal, estive ocupado recentemente me preparando para prestar o exame 70-450 do SQL Server, e com isso obter a certificação MCITP (mission complete !), e por isso fiquei um pouco ausente no blog, mas agora vou poder dedicar mais tempo. E para esse “retorno”, vou falar de um assunto que é muito cobrado nesse exame: Database Mirroring.

O SQL Server oferece vários recursos de alta disponibilidade e o database mirroring provavelmente é o mais completo desses recursos (excluindo o failover clustering, que é um recurso de alta disponibilidade provido pelo sistema operacional Windows).
Database mirroring fornece um mecanismo de sincronização dos dados entre os databases, seja de forma síncrona ou assíncrona, oferecendo baixa latência dos dados, já que os mesmos são sincronizados entre os bancos de forma automática.

Como funciona

Para configurar um mirroring entre databases, são necessários ao menos 2 servidores (um terceiro servidor pode ser configurado como witness). Segue a descrição de cada função:

Principal -> instância que hospeda o database em produção.

Mirror -> instância que hospeda o database espelhado.

Witness -> instância que monitora o estado dos databases principal e mirror, realizando o failover automático, em caso de falha do database principal. Essa instância é opcional, não sendo mandatório e inserção da mesma na configuração do mirroring, porém se não houver uma instância com a função de Witness, o failover deverá ser manual. Para essa função pode-se utilizar a versão Express do SQL Server.

Abaixo segue um esquema do funcionamento do mirroring:

Como pode ser verificado pela imagem, o database principal duplica os dados no database mirror. Essa duplicação é realizada em 2 modos de operação: High Safety e High Performance.

High Safety -> nesse modo a duplicação dos dados ocorre de forma síncrona, ou seja, simultaneamente nos 2 servidores. Esse modo de operação garante o commit das transações nos databases, ao mesmo tempo que o SQL envia os resultados da transação para a aplicação. Como pode ser observado, esse modo gera perda de performance, porém garante a gravação das transações nos databases. Em uma configuração com um servidor witness, esse é o modo utlizado.

High Performance -> a duplicação dos dados ocorre de forma assíncrona. Quando uma transação é enviada para o database principal, o processo de commit é feito de forma padrão de um database standalone, primeiro gravando no principal e depois gravando no mirror. Nesse modo o tempo de resposta do database principal para a aplicação é menor, porém não há verificação se a transação foi gravada no mirror. Nesse modo de operação não é possível a utilização de uma instância witness.

A configuração do mirroring pode ser realizado de 2 formas; através da GUI ou de comandos T-SQL. Em servidores membros de um domínio do Active Directory, a configuração não é complexa, pois o protocolo Kerberos faz a criptografia das transações, garantindo a segurança, porém quando os servidores estão em workgroup, ou seja, não são membros de um domínio, o processo de configuração é mais complexo, pois há a necessidade de criação de certificados para que a comunicação entre os servidores seja confiável e segura.

Na parte 2 do artigo irei demonstrar como configurar o mirroring entre servidores SQL em workgroup.

Abraços e até a próxima.

Anúncios

5 comentários sobre “Configurando Database Mirroring em instâncias do SQL Server em Workgroup – Parte I

  1. Pingback: Implementando Espelhamento de Banco de Dados (Database Mirror) « Alex Souza

    • Olá Fábio. Havendo uma instância Witness o failover é automático, porém esse modo só é recomendado para mirroring em modo síncrono, pois o modo assíncrono é utilizado em instâncias com alta latência na rede, onde não é possível garantir 100% de sincronismo entre os bancos.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s