Criando backup do MySQL com o mysqldump
Neste artigo aprenderemos como utilizar o mysqldump para efetuar backup de tabelas e banco de dados do MySQL e também criaremos um script em PHP para automatizar este processo.
Introdução
O mysqldump é um utilitário para descarregar um banco
de dados ou uma coleção de bancos de dados para backup ou
transferência 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 criar a tabela e/ou popular a tabela.
As sintaxes para utilização do mysqldump são:
mysqldump [OPÇÕES] banco_de_dados [tabelas]
mysqldump [OPÇÕES] --databases [OPÇÕES] BD1 [BD2 BD3...]
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 para executar o backup de todas as suas DATABASES em um arquivo separado para cada uma delas:
A descarga irá conter instruções SQL para criar a tabela e/ou popular a tabela.
As sintaxes para utilização do mysqldump são:
mysqldump [OPÇÕES] banco_de_dados [tabelas]
mysqldump [OPÇÕES] --databases [OPÇÕES] BD1 [BD2 BD3...]
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 para executar o backup de todas as suas DATABASES em um arquivo separado para cada uma delas:
<?php
/**************************************************
autor : leo genilhu
email : leogenilhu@bol.com.br
data : 17/12/2003
descrição: criar arquivo de backup do banco mysql
**************************************************/
$host = ""; // host do banco
$user = ""; // usuário 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`;
?>
/**************************************************
autor : leo genilhu
email : leogenilhu@bol.com.br
data : 17/12/2003
descrição: criar arquivo de backup do banco mysql
**************************************************/
$host = ""; // host do banco
$user = ""; // usuário 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, normalmente crio um diretório de backup dentro do /user, mas se você já tem um diretório de backup, apenas edite o path.
Aqui mostrei um exemplo onde utilizo o comando SQL "SHOW DATABASES", para que seja criado um arquivo nomedobanco.sql para cada banco, mas é claro, você pode otimizar de sua maneira.
Salve este arquivo como backup_mysql.php. Agora e só colocá-lo no cron para que sua execução seja automatizada.
Bom, é isso! Espero que possa ter servido para alguém. Qualquer dúvida e só postar que estaremos respondendo.
leogenilhu@bol.com.br
Um abraço!