Artigos Banco de Dados Alta disponibilidade com Database Mirroring - Revista SQL Magazine 98
A alta disponibilidade está relacionada com ambientes críticos, de modo que a operação em uma empresa não seja prejudicada em caso de falhas, permitindo continuidade do negócio, mantendo-se estável/operacional. Alguns segmentos de mercado onde encontramos ambientes com essa característica podem ser instituições financeiras e fábricas, por exemplo.
Neste artigo são explorados conceitos sobre o funcionamento do espelhamento de banco de dados, observando pontos a favor e contra, identificando os modos de configuração do mirroring com base nas exigências de uma empresa. Além disso, são evidenciadas algumas boas práticas quanto à configuração do Database Mirroring no SQL Server 2008. Por último, apresentamos um guia com as etapas para a criação de um cenário de contingência usando o mirroring.
Nesse contexto, cabe ao DBA sugerir alternativas eficazes para que exista transparência no acesso aos dados por parte dos sistemas existentes na empresa em caso de problemas no servidor, evitando paradas e descontentamentos dos mais variados tipos, permitindo que o trabalho prossiga regularmente.
Dentro das alternativas de alta disponibilidade disponíveis no Microsoft SQL Server, falaremos sobre um recurso chamado Database Mirroring, ou espelhamento de banco de dados, apresentando conceitos sobre o funcionamento do mirroring e a estrutura que o suporta, bem como um guia prático detalhado para implantação desta tecnologia a partir da concepção de uma nova base de dados até a realização de um failover.
A tecnologia de espelhamento de banco de dados, ou Database Mirroring, existe desde a versão 2005 do SQL Server e faz parte de uma das quatro opções de alta disponibilidade existentes, que inclui também log shipping, failover clustering e peer-to-peer replication. Ele consiste numa estrutura básica composta por três elementos: Principal, Mirror e Witness (opcional). Principal é o servidor utilizado de forma on-line, acessado por usuários e aplicações diversas, e é responsável por enviar as transações confirmadas para o servidor espelho. O Mirror, ou espelho, é o servidor destino, o qual mantém uma cópia fiel das bases de dados que estão no Principal. Por último, o Witness, usado para monitorar e realizar failover em caso de falha. As funções de cada servidor serão detalhadas mais adiante. A Figura 1 exibe uma ilustração da estrutura do espelhamento e seus componentes.
Figura 1. Componentes do Database Mirroring (Fonte: Book´s On-line SQL Server 2008).
Visando o aumento da segurança dos dados e do desempenho do ambiente, a partir da versão 2008 do SQL Server importantes recursos foram introduzidos na tecnologia. Um deles é o chamado Log Stream Compression, que consiste na compressão dos logs de dados gerados a partir da base principal. Possibilita que ao trafegar os logs pela rede WAN, os arquivos sejam extremamente compactados, reduzindo possíveis gargalos de rede como ocorria na versão anterior. Outro recurso importante existente na atual versão é o Automatic recovery from corrupted pages, ou Recuperação automática de páginas corrompidas, fazendo com que o próprio SQL, ao detectá-las, substitua os dados existentes na página defeituosa pelos dados íntegros, através de uma cópia dos dados atuais.
Para que a escolha do Database Mirroring como recurso de alta disponibilidade seja realizada sem arrependimentos, é importante ressaltar alguns benefícios e desvantagens quanto à sua utilização. Podemos citar, como vantagens: o aumento quanto à proteção dos dados por conta da existência de uma base idêntica em outro servidor; o aumento da disponibilidade da base, através do recurso de failover em casos de falha; e a possibilidade da realização de upgrades, mantendo a operação em pleno funcionamento por conta da troca de papéis (Role Switching) entre os servidores. Role Switching é o momento em que uma base troca da função de Principal para Mirror, e vice e versa.
Como desvantagens, citamos a não possibilidade de espelhar as bases de sistema master, msdb, tempdb e model. Como deverá haver duas instâncias do SQL Server para montar o mirroring, estas bases serão independentes em cada instalação. Outra questão são os ambientes com arquitetura de 32-bits, os quais suportam até dez bases de dados em cada instância, por causa donúmero de threads de trabalhoque são consumidaspor cadasessão de espelhamento. Por fim, a base espelhada não poderá ser acessada de nenhuma forma, nem ao menos como leitura por parte dos usuários. A única opção para leitura é criar um Database Snapshot da mesma.
O espelhamento serve como excelente recurso de contingência para manter a operação em uma ou mais bases dentro de uma empresa, fazendo com que uma base idêntica, chamada Mirror, seja mantida em ...