Início > Uncategorized > XtraBackup: backup no MySQL “no quente”, sem read lock

XtraBackup: backup no MySQL “no quente”, sem read lock

O MySQL tem um utilitário muito utilizado para backups, sendo bastante versátil para bases pequenas, que é o mysqldump. Mas quando se tem uma base grande e de alta criticidade, ou seja, não pode parar de maneira alguma, aí aparecem os problemas com o utilitário mysqldump. Podemos contar alguns de seus principais problemas:

  • Lento para fazer backup de grandes bases;
  • Lento para efetuar restore, principalmente quando se usa InnoDB;
  • O conteúdo do backup, como o próprio nome da ferramenta sugere, é um DUMP, é todo em texto ASCII, o que o torna inseguro e pesado, já que a leitura e gravação de dados em ASCII é bem mais lenta do que em binários;
  • E o principal: trava as tabelas durante o backup, tornando partes do banco temporariamente indisponíveis.

Existe uma ferramenta paga, conhecida como MySQL Enterprise Backup, que realiza os backups “no quente”, sem travamentos e garante sua consistência. O grande problema, é que essa ferramenta é paga e cara, nem todo mundo está disposto a pagar.

Mas, para a felicidade de todos, existe um clone Open Source do MySQL Enterprise Backup chamado de XtraBackup desenvolvido pela Percona, uma empresa especializada em consultoria  de banco de dados MySQL. O mesmo está disponível para uma variedade de distribuições Linux, bastando acessar o site do produto para obter informações de instalação.

Neste artigo não irei abordar a instalação do produto, pois a mesma pode variar de acordo com sua plataforma.

Mãos à Obra

Uma vez instalado, tomaremos como base o comando abaixo para a realização do backup:

# innobackupex –stream=tar –defaults-file=/etc/my.cnf –user=usuario –password=senha ./ | gzip -c -9 > $BDIR/backup.`date +%m%d%Y%H%M%S`.tar.gz

Agora aguarde o resultado, se tudo ocorrer bem, seu backup será executado como previsto.

Abaixo, um pequeno script para ajudar a automatizar as coisas, podendo ser inclusive agendado no crontab para sua execução automática:

#!/bin/bash

# 19022012 – Written by Ramon Gadelha
# This script uses xtrabackup utility to hot backup mysql databases in a non-halt mode

BDIR=”/home/backup/mysql”
USER=”xtrabackup”
PASSWORD=”xtrabackup”
CONFIG=”/etc/my.cnf” 

# Run backup

innobackupex –stream=tar –defaults-file=$CONFIG –user=$USER –password=$PASSWORD ./ | gzip -c -9 > $BDIR/backup.`date +%m%d%Y%H%M%S`.tar.gz

# Remove backups older than 7 days
find $BDIR -name backup.\* -ctime +7 -exec rm {} \;

Espero que esse artigo tenha lhe sido útil.

Anúncios
Categorias:Uncategorized
  1. fevereiro 22, 2012 às 12:36 pm

    Muito legal mas faltou uma explicação de como recuperar o backup. 🙂 Tudo bem que a documentação tá aí pra isso mas vejo que ficou incompleto o seu artigo.

    • fevereiro 22, 2012 às 1:07 pm

      A proposta do artigo em sí, é apenas a realização do backup, pois como você mesmo disse existe a documentação completa da Percona que explica inclusive o restore. Mas nada me impede de complementar este com outro artigo explicando sobre como realizar o restore, vou tomar seu comentário como uma sugestão, muito grato!

  2. Lqmello
    fevereiro 22, 2012 às 4:11 pm

    Otimo artigo. Mas vale lembrar que este “backup” consome muita CPU, estou testnado em uma maquina e a mesma esta simplesmente sendo ‘estuprada’ pelo processo.

    Mas mesmo assim vale a pena. Vou testar e uma maquina muti-core.

    Att

    • fevereiro 22, 2012 às 4:48 pm

      Os testes que realizei, foram em máquinas multi-core de 8 e 16 nucleos, então não tive muito problemas com utilização de CPU. Mas acredito que mesmo provocando um alto consumo de CPU e consequentemente causando algum problema de performance temporário, seja melhor do que um travamento das tabelas provocado pelo mysqldump.

  3. fevereiro 23, 2012 às 11:24 am

    Parabéns pelo artigo, mas também senti falta da recuperação do backup, abraço!

  1. fevereiro 22, 2012 às 9:27 am

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

%d blogueiros gostam disto: