quarta-feira, 3 de julho de 2013

Fazendo backup da base de dados do MySQL

As base de dados do MySQL, nas atuais distribuições do linux, são salvas dentro de /var/lib/mysql. Existem duas formas de gerar um backup dessas bases, a primeira e criando um arquivo tar.gz do conteúdo das pasta /var/lib/mysql, a segunda é usar um próprio método do mysql, o mysqldump. Na primeira opção existe alguns problemas, como: os dados podem serem inconsistente, caso o banco seja usado no momento em que a backup esteja sendo executado. Para garantir a integridade é necessário para o MySQL, o que é outro problema. pois o serviço vai ficar fora do ar durando o backup. O mysqldump, provavelmente é a opção mais usada, pois faz o backup online e garante a integridade, pois ele lê as informações armazenadas nas bases de dados.


  1. Método tar.gz
    • /etc/init.d/mysql stop
    • tar -zcvf mysql.tar.gz /var/lib/mysql/
    • /etc/init.d/mysql start
  2. mysqldump
    • mysqldump -u root -p -x -e -A > backup.sql
      • -u: especifica o usuário que usado para acessar o banco de dados
      • -p: senha do usuário 
      • -x: bloqueia as bases de dados no momento em que cada uma é copiada
      • -e: opção de otimização, que permite ao mysqldump combinar argumentos INSERT dentro das tabelas, o que torna tanto o backup quanto a restauração mais rápido
      • -A: especifica o backup de todas as bases de dados
    • mysqldump -u root -p -x -e -A | gzip > backup.sql.gz
      • gera o arquivo compactado. para descompactar use o comando: gunzip backup.sql.gz
    • mysqldump -u root -p12345 -x -e -A | gzip > backup.sql.gz
      • essa opção deve ser usada em scripts, pois a senha já e passada no próprio comando, é extremamente importante restringir as permissões
    • mysqldump -u root -p -x -e -B diego > diego.sql
      • -B: substitui a opção "-A", deve ser informado qual base de dados deve ser backupeadas
    • mysql -u root -p --database=diego < diego.sql
      • Forma de restaurar a base de dados backupeada. Um erro será mostrado no momento da restauração, informando que não existe a base que está sendo restaura. Existe duas formas de resolver esse problema, a primeira é criar o base antes de restaurar e a segunda e gerar o backup já com as instruções para que as bases sejam excluídas e recriadas automaticamente durante a restauração. O comando para usado é: mysqldump --add-drop-table -u root -p -x -e -B diego > diego.sql
    • mysql -u root -p < backup.sql
      • Restaura todas as bases de dados

Nenhum comentário:

Postar um comentário