mysql

PHP + MySQL + jQuery,Tutoriais

Trabalhando com o banco de dados MySQL (Backup)

26 mar , 2014  

Já aprendemos vários recursos do MySQL, agora vamos ensinar como você faz o backup do banco de dados pelo PHP e também pelo PhpMyAdmin.

Segue os links dos tutoriais relacionados ao MySQL:

1 – MySQL – Básico (Criação e utilização no PHP)
2 – MySQL – Intermediário (INNER JOIN, LEFT JOIN, RIGHT JOIN, GROUP BY, HAVING, UNION e Aliases)
3 – MySQL – Avançado (Relacionamentos de tabelas)
4 – MySQL – Backup (Realizar backup do banco de dados)
5 – MySQL – Segurança (Métodos de manter a segurança de informação)

PHP

Em muitos casos, você desenvolveu um sistema para um cliente que precisa de um backup do banco de dados, pode incluir esse script abaixo para gerar o arquivo sql de todo o banco de dados, inclusive com os relacionamentos criados.

<?php
//salva os dados do banco de dados
  $servidor = "localhost";
  $usuario = "usuario_do_banco";
  $senha = "senha_do_banco";
  $banco = "nome_do_banco";
  //cria uma pasta de backup para colocar o arquivo sql que vamos gerar
  $pasta =  "backup/";
  $arquivo_banco = $banco.".sql";
  if(!is_dir($pasta))
    mkdir($pasta, 0777);
  //faz a conexão com o banco de dados
  mysql_connect($servidor,$usuario,$senha) or die(mysql_error());
  mysql_select_db($banco) or die(mysql_error());
  //cria o arquivo
  $arquivo = fopen($pasta.$arquivo_banco,"w");
  //lista as tabelas do banco de dados
  $selecao_banco = mysql_list_tables($banco) or die(mysql_error());
  for($a=0; $a<mysql_numrows($selecao_banco); $a++){
    $item_banco = mysql_fetch_row($selecao_banco);
    $tabela = $item_banco[0];
    //mostra a estrutura da tabela
    $selecao_tabela = mysql_query("SHOW CREATE TABLE $tabela");
  	for($b=0; $b<mysql_numrows($selecao_tabela); $b++){
  		$item_tabela = mysql_fetch_row($selecao_tabela);
  		//escreve no arquivo gerado o cabeçalho em forma de comentário para a estrutura da tabela e também o dump dos dados.
    	fwrite($arquivo,"\n--\n--  Estrutura para tabela : $tabela\n--\n\n");
    	fwrite($arquivo,"$item_tabela[1] ;\n\n--\n-- Fazendo dump de dados para tabela : $tabela\n--\n\n");
    	fwrite($arquivo,"INSERT INTO `$tabela` (");
    	$colunas = '';
    	//seleciona as colunas da tabela
    	$selecao_coluna = mysql_query("SHOW COLUMNS FROM $tabela");
    	for($c=0; $c<mysql_numrows($selecao_coluna); $c++){
  			$coluna = mysql_fetch_row($selecao_coluna);
  			$colunas .= "`$coluna[0]`,";
  		}
  		$colunas = ereg_replace(",$", "", $colunas);
  		//escreve no arquivo gerado as colunas da tabela para fazer o dump dos dados
    	fwrite($arquivo,$colunas.") VALUES\n");
    	$sql = "";
    	//nesse loop abaixo esta inserindo em uma variavel chamada sql, todos os registros das tabelas, separadas por tabela e colunas.
      $selecao_campo = mysql_query("SELECT * FROM $tabela");
      for($d=0; $d<mysql_numrows($selecao_campo); $d++){
      	$item_campo = mysql_fetch_row($selecao_campo);
     		$sql .= "(";
   			for($e=0; $e<mysql_num_fields($selecao_campo);$e++){
         	if(!isset($item_campo[$e]))
           	$sql .= "'',";
         	else if($item_campo[$e] != ""){
         		if(is_numeric($item_campo[$e]))
         			$sql .= "".$item_campo[$e].",";
         		else
             	$sql .= "'".addslashes($item_campo[$e])."',";
         	}else
           	$sql .= "'',";
        }
        $sql = ereg_replace(",$", "", $sql);
        $sql .= "),\n";
      }
     	$sql = ereg_replace(",\n$", ";\n", $sql);
     	fwrite($arquivo,$sql);
   	}
  }
  //fecha o arquivo
  fclose($arquivo);
  //nessa parte estamos fazendo o navegador interpretar o iniciar o download do arquivo sql gerado no backup
  header("Content-Type: sql");
  header("Content-Length: ".filesize($pasta.$arquivo_banco));
  header("Content-Disposition: attachment; filename=".basename($pasta.$arquivo_banco));
  readfile($pasta.$arquivo_banco);
  exit;
?>

PhpMyAdmin

Agora se você tem acesso ao PhpMyAdmin, pode fazer o backup da seguinte forma.
Primeiro você seleciona o banco de dados que deseja realizar o backup e então clique no menu ‘exportar’.
9
Na próxima tela, aparece o formato que você quer exportar, no nosso caso SQL e clique no botão ‘executar’.
10
Lembrando que se o banco de dados for muito grande o PhpMyAdmin não é muito recomendável. Sendo assim, utilize o processo por linha de comando, segue abaixo os passos.

Linha de comando

Pelo seu Windows, se você utilizar um programa como o VertrigoServ que foi ensinado nesse link.

Abra o Prompt de Comando e entre na pasta ‘bin’, dentro da pasta ‘mysql’ que fica na raiz do VertrigoServ:

cd vertrigoserv/mysql/bin

Assim você vai acessar a pasta ‘bin’, onde se encontra o mysqldumb.exe, que vamos executar para fazer o backup do banco de dados.
Para fazer o backup de todos os bancos de dados:

mysqldump -u root -p --all-databases > c:/backups/nome_arquivo.sql

Para fazer o backup de algum banco de dados especifico:

mysqldump -u root -p nome_do_banco > c:/backups/nome_arquivo.sql

Para fazer a importação de um banco de dados:

mysql -u root -p nome_do_banco < c:/backups/nome_arquivo_backup.sql

Após cada comando o sistema pede para você inserir a senha do banco de dados, assim ele executa a ação.

No Linux o processo é mais simples, apenas através do terminal. Não precisa acessar nenhuma pasta, pode inserir os comandos assim que abrir.

Pronto, você tem três formas de realizar o backup do banco de dados, é muito importante para você migrar de servidores e realizar backup preventivo.

Espero que esse tutorial tenha sido útil. Continue postando seus comentários.

Abraço.

, , , , , , ,


Comments are closed.