Banco de Dados - MySQL

Criar backup do banco mysql usando mysqldump

Nesse artigo vamos aprender como criar e otimizar backup de banco de dados mysql usando o utilitário mysqldump.

por Leo Genilhu



Nesse artigo vamos aprender como criar e otimizar backup de banco de dados mysql usando o utilitário mysqldump

O mysqldump é um utilitário para descarregar um banco de dados ou uma coleção de bancos de dados para backup ou transferencia para outro servidor SQL (Não necessariamente um servidor MySQL) ou ainda apenas um backup em arquivo. A descarga irá conter instruções SQL para cria a tabela e/ou popular a tabela.

A sintaxe para ultilização do mysqldump é:

PROMPT>> mysqldump [OPÇÕES] banco_de_dados [tabelas]
OR     mysqldump [OPÇÕES] --databases [OPÇÕES] BD1 [BD2 BD3...]
OR     mysqldump [OPÇÕES] --all-databases [OPÇÕES]

Se você não fornecer nenhuma tabela ou utilizar o --databases ou --all-databases, todo(s) o(s) banco(s) de dados será(ão) descarregado(s).

Para melhores informações você ainda pode obter uma lista das opções que sua versão do mysqldump suporta executando mysqldump -help.

Agora veja como seria um exemplo em php:

<?php
/******************************************************************
  autor    : leo genilhu
  email    : leogenilhu@bol.com.br
  data     : 17/12/2003
  descricao: criar arquivo de backup do banco mysql
*****************************************************************/
$host = "";//host do banco
$user = "";//usuario do banco
$senha = "";//senha do banco 
$dbc = mysql_connect($host,$user,$senha);
$m   = mysql_select_db("test", $dbc);
$sql = "show databases";
$sts = mysql_query($sql,$dbc) or die (mysql_error());
$data = date("d-m-y");
while($row = mysql_fetch_array($sts)){
  $nome = $row[0];
  $NARQUIVO = $nome."-".$data;
$resp = `mysqldump --host=$host --user=$user --password=$senha --databases $nome
 > /home/user/public_html/$NARQUIVO.sql` ;
}
$arquivo = "mysql_".$data;
//criar os pacotinhos com todos os arquivos.sql
$resp = `tar -cvzf /usr/backup/$arquivo.tar.gz /home/user/public_html/*.sql`;
$resp = `rm *.sql`;

?>

OBS.: lembre sempre que o usuário citado no código deve ter ALL PRIVILEGES para que o script funcione normalmente.

Para criar os pacotinhos eu normalmente crio um diretorio de backup dentro do /user mas se vc já tem um diretório de backup apenas edite o path.

Aqui eu usei um exemplo onde ultilizo o sql SHOW TABLES isso para criar um arquivo nomedobanco.sql para cada banco mas você claro pode otimizar de sua maneira.

Salve este arquivo com backup_mysql.php. Agora é só colocá-lo no cron para que a execução seja automaizada.

Bom é isso espero que possa ter servido para alguém.

Qualquer dúvida é só postar que estarei respondendo.

Um abraço,

Leo Genilhu
leogenilhu@bol.com.br

Leo Genilhu

Leo Genilhu - Atua como consultor de desenvolvimentos e aplicações em web/wireless, sendo analista de uma empresa de desenvolvimento.
Além disso participa de comunidades de linux e software livre. Mantedor de lista de discussão em php e linux.