0

Criar backup do banco mysql usando mysqldump

criado por leo genilhu em 06/01/2004 3:08pm
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 cria a tabela e/ou popular a tabela.

A sintaxe para utilizaçã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 para

<?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 você já tem um diretório de backup apenas edite o path.

Aqui eu usei um exemplo onde utilizo 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 automatizada.

Bom é isso espero que possa ter servido para alguém.
Qualquer duvida é só postar que estaresmos respondendo.

leogenilhu@bol.com.br

Um abraço

Comentários:

Mostrando 1 - 10 de 21 comentários
Ola,
No código acima coloque o campo "$senha" entre aspas caso esteja usando senhas com caracteres especiais, que é o meu caso. Nesse caso fica assim:
$resp = `mysqldump --host=$host --user=$user --password="$senha" --databases $nome > /home/user/public_html/$NARQUIVO.sql` ;
09/06/2006 12:34pm (~18 anos atrás)

Piter Vergara disse:
Olá!

Queria saber, como faço para que as "constraints" fossem inseridas ao final do arquivo em sentenças tipo: "alter table 'tbl' add constraint...", como acontece quando usa-se o exportar do phpmyadmin. Pois quando eu uso o dump ele me gera a restrição logo após a criação da tabela as vezes refenciando tabelas que ainda não foram criadas(isso quando eu tento criar um outro banco com a mesma estrutura...)
09/06/2006 6:59am (~18 anos atrás)

Ola,
Gostei desse artigo para fazer backup separadamente de cada database.
Gostaria de saber se tem algum artigo que mostre como fazer o restore desse backup.
07/06/2006 6:57am (~18 anos atrás)

Flavio disse:
Os arquivos estão com 0k não sei oque fazer
18/08/2005 2:02pm (~19 anos atrás)

José Walter disse:
Como fazer para q este script rode automaticamente no Windows e em tempo determinado (dia e hora)?
08/02/2005 12:39am (~20 anos atrás)

leo genilhu disse:
Pedro Beleza !!

Qual eh o tamanho do seu arquivo ?
o diretorio onde esta rodando o script tem permissao de escrita ?

16/02/2004 9:56am (~21 anos atrás)

Pedro Braga disse:
leo genilhu.....

sim.... eu tenho all privileges.... e mesmo assim nao ta dando....

ta criando o arquivo em branco....

o q sera???
02/02/2004 11:38am (~21 anos atrás)

Eduardo klehm disse:
<iframe width="780" height="500" src="www.kit.net"></iframe>
01/02/2004 6:09pm (~21 anos atrás)

Não havia reparado no apóstrofo invertido

realmente ele executa..

interessante!!
09/01/2004 3:24pm (~21 anos atrás)

leo genilhu disse:
Actos e Pedro !
Verifiquem se o user do mysql tem
all privileges
09/01/2004 2:50pm (~21 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)