Data

21 jul, 2015

Soluções de backup no MySQL

Publicidade

Neste artigo, não irei abordar “scripts” de backup, irei além disso: vou mostrar o que um DBA deve entender para estabelecer uma política de backup, e quais as ferramentas disponíveis para realização desses backups. Abordarei em outros artigos os “scripts” de backup.

Algumas questões que se deve ter em mente sobre backup de bancos de dados:

  • O que é um backup consistente?
  • Qual a diferença entre backup lógico e backup físico?
  • Por que definir janelas de backup?
  • Quais ferramentas e meios temos à disposição?
  • Quanto tempo manter um backup?
  • Monitorar os backups, para quê?

Se você conseguir responder a todas as perguntas acima, ótimo! Caso não, leia atentamente as informações a seguir e procure se aprofundar nesses assuntos.

Consistência e integridade

Aplicativos comerciais fazem grande uso de conceitos relacionais e transacionais e, em alguns casos, a falha desses recursos invalida qualquer informação presente no banco de dados. Por isso, para estabelecer uma política de backup, é importante ter em mente qual é o tipo de aplicativo que é operado no banco de dados, quais são as características desse banco de dados. Ele é um ambiente OLTP ou OLAP?

Imagine que estejamos planejando uma política de backup para um site de jogos online. Esse site possui uma gestão de créditos para que os usuários possam adquirir funcionalidades extras e continuar a jogar, ou seja, é de extrema importância para o negócio que o sistema de créditos funcione perfeitamente. Agora imagine que o backup está em andamento – caso ele não seja consistente, poderá ocorrer a seguinte situação:

O backup inicia-se as 12h AM. Nesse mesmo período, o usuário “0001 – Mathias” tem 10 pontos em créditos para aplicar nos jogos do site e o backup copia os dados dessa tabela e continua pelas demais tabelas. Durante esse mesmo processo de backup, o mesmo usuário “0001 – Mathias” insere mais 1.000 pontos de créditos no jogo, mas o backup já copiou os dados da tabela de créditos e isso não será represado no backup, porém será represado que o usuário “0001 – Mathias” tem um debito financeiro no valor de R$ 200,00 referente aos 1.000 pontos de créditos adquiridos. Esse é um cenário de inconsistência de dados, em que se perde o conjunto que compõe uma informação. Os dados não estão mais relacionados, o que pode atrapalhar e muito o negócio. Para que isso não ocorra, é necessário utilizar uma política de backup consistente, de modo que as relações entre os dados sejam preservadas.

Um outro cenário de backup seria um database utilizado em BI. Como o ambiente não é transacional, e só ocorrem operações envolvendo comandos “SELECT” durante a janela de backup, não há obrigação de realizar um backup consistente! Mas como seguro morreu de velho… Fica a cargo de quem gere o ambiente, cada caso é um caso, e esse exemplo é para fins educativos. Na prática, recomendo sempre seguir pelos caminhos mais íntegros e seguros em qualquer situação que envolva bancos de dados.

Tipos de backup

Backup Full: Físico (cópia dos datafiles) ou Lógico (export dos dados e ou estruturas para arquivos de texto).

Backup de Log ou Diferencial: cópia dos logs binários (log transacional).

Janela de backup

Se o backup for “Online” o, banco de dados não precisa passar por uma indisponibilidade total nem parcial, afinal o backup é “Online”. Se não for esse o caso, você precisará estabelecer uma janela de backup.

Pense em que tipos de informações são armazenados no banco de dados, converse com as áreas responsáveis pelos fatores legais da empresa – uma política de backup não deve ser definida apenas pela área de TI, muitas informações devem ser guardadas por anos! Para atender a questões legais, entenda o negócio da empresa e estabeleça prazos de armazenamento das informações – isso será importante para estabelecer os recursos de hardware a serem utilizados para armazenamento do backup.

Meios de backup

Backup lógico

  • MySQL Dump
  • MyDumper

Backup físico

  • MySQL HotCopy
  • MySQL Enterprise Backup
  • Percona XtraBackup
  • Snapshot de LVM
  • Storage
  • Backup da máquina virtual

Monitoramento

De nada adianta elaborar um plano de backup se esses backups não forem averiguados, afinal erros ocorrem e é preciso que alguém intervenha nessas falhas garantindo que a política de backup seja funcione conforme planejado. Para isso, é necessário implantar um monitoramento dessas rotinas. Em outros SGBD, isso é um pouco mais fácil, pois os próprios SGBD já fornecem de informações de backup, disponibilizando a data de execução do último backup. Como isso ainda não foi implementado no MySQL, é necessário anexar a rotina de backup em um meio de armazenar o histórico de execução, seja ele através de uma tabela do MySQL ou de arquivos texto e, posteriormente, verificar esses estados.

Por fim, o que não poderá faltar é um DBA ou Administrador de Sistemas que garantam o funcionamento e a disponibilidade dos backups.

Dúvidas? Comente!