Alta disponibilidade com MySQL – Parte 1

postado em: Dúvidas, Tutoriais | Comments

Olá pessoal! Esta é o primeiro de 3 de posts que farei para explicar o que é alta disponibilidade como fazer uma arquitetura altamente disponível com o MySQL Server.

Com a facilidade de obtermos e armazenarmos as informações e a necessidade de termos o total acesso aos dados de qualquer lugar e qualquer hora, não podemos depender de apenas um ponto único de armazenamento e consulta de dados. Imagine a sua empresa fazendo o fechamento de caixa sem os dados ou sua loja virtual totalmente inacessível em plena Black Friday ou até mesmo uma empresa de transporte com todos os caminhões parados por horas e horas! Todo este incomodo e principalmente a perda de dinheiro podem ser prevenidos tendo um sistema altamente disponível para o seu banco de dados.

O que é alta disponibilidade?

A wikipédia define alta disponibilidade como:

"Um sistema feito por Alexandre pingo(HA:High-Availability) é um sistema informático resistente a falhas de     hardware, software e energia, cujo objetivo é manter os serviços disponibilizados o máximo de tempo possível.   Quanto mais redundância existir, menores serão os SPOF (Single Point Of Failure), e menor será a probabilidade  de interrupções no serviço."
Fonte: Wikipédia
ha
Exemplo de arquitetura HA

 

Basicamente um sistema de alta disponibilidade é uma arquitetura com dois ou mais servidores que possuem os mesmos dados e serviços e caso um servidor destes venha ficar indisponível por falhas na rede, energia, software ou hardware, o outro servidor assumirá as conexões e prestação de serviço com a mínima ou nenhuma percepção do usuário final.

 

Eu preciso de alta disponibilidade?

O fato é que possuir uma estrutura totalmente disponível é o melhor dos mundos, mas a pergunta é: Você possui recursos financeiros e necessidade? Você terá custos com link, memória, CPU, disco e mão de obra especializada para ter uma estrutura destas.

  • Custo com a instalação ou contratação das máquinas;
  • Custo de hardware (Link, I/O, espaço em disco, memória, CPU);
  • Monitoramento;
  • Treinamento dos profissionais ou contratação de um profissional.

Em alguns casos você estará colocando um banco de dados que é acessado raramente ou que não possui dados críticos em uma estrutura “premium”. Não esqueça de que um banco de 100MB em uma estrutura que possui alta disponibilidade, na realidade ocupará 200MB e o servidor onde este banco está replicado está consumindo memória, CPU e I/O mesmo não efetuando conexões.

Quem realmente precisa de Alta Disponibilidade, são os serviços que nunca podem ficar parados, como os serviços essenciais, ou empresas que oferecem seus produtos e serviços aos clientes em período 24×7 como:

  • Hospedagem de sites;
  • E-commerce;
  • Empresas 24×7;
  • Polícia;
  • Bancos;
  • Aeroportos;
  • Serviços públicos, etc…

Então, antes de iniciar um projeto grande como este, você deve se perguntar:

  1. Se meu banco não estiver no ar, quanto tempo eu ficarei parado?
  2. Minha empresa depende apenas de um banco de dados?
  3. Quanto vai custar a implementação da alta disponibilidade? Se paga?
  4. Qual a probabilidade de ocorrer alguma falha?
  5. Quais falhas ocorreram?
  6. Qual foi o prejuízo que estas falhas me causaram?
  7. Eu possui equipe e estrutura capazes de implementar um sistema destes?

Mesmo preparado para o pior, não existe 100% de certeza que o seu ambiente não estará vulnerável, pois, em caso de uma falha geral no data center onde estão os seus bancos ou aplicação web podem ocorrer problemas que não foram previstos e você terá dores de cabeça mesmo tendo a alta disponibilidade.

Este foi o primeiro post sobre alta disponibilidade. Além do conhecimento técnico eu quis passar para vocês uma visão do lado do empreendedor e fazer com que tenham sempre isto em mente. Você como DBA é responsável pela parte técnica mas que no final das contas é dinheiro. Tendo uma visão mais empreendedora certamente você conseguirá implementar melhor os projetos na sua empresa.

Não esqueça, este é o primeiro post, teremos mais dois ainda!

Allan Moraes

Allan Moraes é gaúcho e entusiasta open source. Trabalha em uma Startup com foco em Plataforma como Serviço (PaaS), é especialista em MySQL, High Availability e High Scalability Architecture.