Lucas's profileLucas Souza [MCP | MCTS ...PhotosBlogListsMore Tools Help

Blog


    September 20

    Alta disponibilidade no SQL Server

    A definição básica de Hight Availability (Alta-Disponibilidade) pode ser descrito de forma simples, ou seja, é a solução que permite o hardware ou software em caso de falha continue sendo executado ou melhor, funcionando. A solução de alta-disponibilidade é funcionável através da redundância de drivers, memória ou CPU no servidor.

    Particulamente quando definimos a redundância dos díscos rígidos em nossa aplicação geralmente aplicamos a tecnologia RAID (Redundant Array of Inexpensive Disks), ou seja, esta tecnologia tem por objetivo nos oferecer diversas opções relacionado á perfomance, segurança, alta-disponibilidade no sistema operacional (S.O), todos níveis de RAID requerêm pelo o menos dois discos rígidos dísponiveis, sendo que alguns é necessário termos três ou quatro.

    RAID 0: Aonde em todos os discos são escritos numa só vez. A parte superior deste nível RAID é bastante rápida e econômica, porém em caso de falha de hardware os díscos irão perder as informações processadas.

    RAID 1: Aqui é necessário ter pelo menos dois discos rígidos, os dados são escritos primeiramente ao disco um e também será escrito ao disco dois numa só vez, este level tem por objetivo nos garantir ótimo benefício com relação á alta-disponibilidade, ou seja, em caso de falha as informações não serão perdidas, com relação á perfomance não é uma boa escolha.

    RAID 5: É o mais comum usado, nos garante ambos as funcionalidades de RAID 0 e 1, porém tem o menor custo por gigabyte, o RAID 5 requer pelo o menos três díscos rígidos, este lével (RAID 5) é escrito em todos discos com exceção á um.

    RAID 6: É um novo level RAID dísponivel dentro no mundo de banco de dados, este level requer pelo o menos quatro dísco rígido, similar ao RAID 5 com exceção de que usa dois drivers separados.

    RAID 10: É o mais caro entre todos dísponiveis, possuí alta redundância e execução, requer pelo o menos quatro dísco rígido;

    Veja bem, acima mostra-se cinco tipos distintos de RAID, Uma das perguntas que sempre vem a mente é: Qual deles é o melhor¿ Esta resposta pode ser facilmente respondida: Qual objetivo de sua aplicação¿, perfomance¿, alta-disponibilidade¿  segurança¿, Se necessário for buscar sua resposta pergunta á si mesmo e adquira o que submeter a sua aplicação.

    Opções de Alta-Disponibilidade
    Existem diferentes opções de alta-disponibilidade que garante ao usuário confiabilidade em sua aplicação comercial e além disso, cada opção possuí objetivo distinto por mais que pareçam similares.

    Log Shipping (overview)
    Dísponivel em versões anteriores ao 2008, esta é uma das opções de alta-disponibilidade considerada mais antiga no SQL Server a qual tem por objetivo a efetuação de backup completo (full backup) do banco de dados e restaurá-lo em máquinas distintas.
    Vale lembrar que Log Shipping está dísponivel em todas edições do SQL Server 2008 cobradas, ou seja, Enterprise, Standard, WorkGroup, Web, e além disso, não requer hardware especial para funcionamento, no entanto é necessário termos dois servidores que estão usando hardwares iguais.
    OBS: SQL Server 2000 permite log-shipping apenas na versão Enterprise, já no SQL Server 2008 possuí em várias como foi descritas acima.

    Log Shipping é consistido por três operações:
    01) Backup do transaction log na instância do servidor primário;
    02) Cópia do arquivo transaction log para a instância do servidor secundário;
    03) Restaurar o backup do transaction log na instância do servidor secundário.

    Para utilizar o log-shipping siga os passos abaixo:

    01) Na janela Object-Explorer, clique com o botão direito encima do banco de dados desejado, em seguida Tasks, a imagem abaixo ilustra de forma clara.


    Figura 1.0 (Object Explorer – Tasks(Shipg Transaction Logs))

    Apartir de já podemos configurar/alterar algo referente na aplicação pelo qual utiliza o log shipping.

    Mirroring(overview)
    Relativamente é outra opção de alta-disponibilidade que foi introduzida no SQL Server 2005 que garante uma solução altamente confiável e robusta. Existe diversos caminhos para configurarmos o espelhamento (mirroring), um deles seria o modo assícrono (asyncrhronous mode), e / ou síncrono (syncrhronous mode).
    Ultimamente o modo síncrono
    (
    syncrhronous mode). tem sido mais utilizado em aplicações pelas quais existem apenas dois servidores de banco de dados, isto devido aos tipos de transações de um enviando para o outro, no caso ambos são isolados, ou seja, as mudanças criadas/alteradas no servidor primário são escritas também no servidor secundário (mirroring) e assim enviando o ‘agradecimento’ de que a aplicação sofreu alteração ou algo similar.
    Já em relação ao modo assícrono(asyncrhronous mode) os comandos são rodados primeiramento no servidor primário e em seguida é enviado o ‘agradecimento’  de volta ao cliente, depois que a transação for executa com sucesso rapidamente será posta ao servidor de espelhamento (mirror server).

    Benefícios:
    * Alto nível da proteção a dados;
    * Garante alta-disponibilidade de dados;
    * Garante dísponibilidade em banco de dados de produção durante atualizações.

    OBS:
    *
    Espelhamento de dados (Data Mirroring) pode ser utilizado apenas no modelo ‘recovery full’, ou seja, as opções de simple e bulk-logged não suporta espelhamento;
    * Não é possivel aplicar o espelhamento nos banco de dados master, msdb, tempdb ou model.

    Além disso o Data Mirroring pode ser utilizado com os seguintes componentes do SQL Server:
    * Replication;
    * Database snapshot;
    * Full-Text Catalogs;
    * Log-shipping.

    Para configurarmos o Data Mirroring clique com o botão direito no banco de dados desejado em seguida Tasks > Mirror como mostra a imagem abaixo.

     
    Figura 1.1 (Object Explorer – Tasks(Mirror))

    Desde já podemos iniciar nosso espelhamento no banco de dados desejado.

    Clustering
    Windows Clustering é viável ao Microsoft Cluster Service (MSCS), ou seja, é uma das tecnologias de alta-disponibilidade mais utilizada em aplicações de grande porte. O conceito de Windows Clustering é que você tenha únicamente configurado díscos rígidos para ambos os servidores de acesso, ou melhor, você instala e em seguida configura o Microsoft Cluster Service em ambos os servidores de cluster e após isto inicia a instalação do SQL Server utilizando a opção de Cluster como desejavelmente quer.

    O cluster está aplicado geralmente em dois ou mais servidores unidos mostrando-se como um único servidor, os servidores que estão conectados ao cluster permitem o compartilhamento de cargas de trabalho, permite unicamente um ponto de gerenciamento/operação e além disso nos garante um dirétorio altamente beneficiado e protegido, sendo assim o objetivo do Cluster é fornece um ambiente de Alta-disponibilidade.

    Para iniciar a instalação do Cluster juntamente com o SQL Server clique no link New SQL Server Stand-Alone Installation ou então abaixo dele, no link New SQL Server Failover Cluster Installation, a figura abaixo ilustra de forma mais viável.


    Figura 1.2 (SQL Server Installation Center – High-Availability)

    Apartir de então podemos escolher qual das opções acima satisfaz o nosso ambiente e  após isto aplicarmos.

    Links:

    Installing a SQL Server 2008 Failover Cluster:
    http://msdn.microsoft.com/en-us/library/ms179410.aspx

    White papers

    SQL Server 2008 Failover Clustering:
    http://sqlcat.com/whitepapers/archive/2009/07/08/sql-server-2008-failover-clustering.aspx

    SQL Server 2008 High Availability:
    http://www.microsoft.com/sqlserver/2008/en/us/high-availability.aspx

     

    []´s
    Lucas Souza