Backup de base MYSQL pelo PHP
Publicado por mauro 09/02/2009
[ Hits: 21.820 ]
Este script é usado para gerar um backup de um banco de dados MySQL.
A saída ainda é compactada em formato ZIP, a classe que utilizei para compactar o aquivo foi a zip.lib.php.
<?php // dados de conexão com o banco de dados $usuario = "usuariodobanco"; $senha = "senhadobanco"; $dbname = "basededados"; // conectando ao banco mysql_connect("localhost",$usuario,$senha) or die(mysql_error()); mysql_select_db($dbname) or die(mysql_error()); // gerando um arquivo sql. Como? // a função fopen, abre um arquivo, que no meu caso, será chamado como: nomedobanco.sql // note que eu estou concatenando dinamicamente o nome do banco com a extensão .sql. $back = fopen($dbname.".sql","w"); // aqui, listo todas as tabelas daquele banco selecionado acima $res = mysql_list_tables($dbname) or die(mysql_error()); //Em seguida, vamos, verificar quais são as tabelas daquela base, lista-las, e em um laço for, vamos mostrar cada uma delas, e resgatar as funções descriação da tabela, para serem gravadas no arquivo sql mais adiante. // resgato cada uma das tabelas, num loop while ($row = mysql_fetch_row($res)) { $table = $row[0]; // usando a função SHOW CREATE TABLE do mysql, exibo as funções de criação da tabela, // exportando também isso, para nosso arquivo de backup $res2 = mysql_query("SHOW CREATE TABLE $table"); // digo que o comando acima deve ser feito em cada uma das tabelas while ( $lin = mysql_fetch_row($res2)){ // instruções que serão gravadas no arquivo de backup fwrite($back,"\n#\n# Criação da Tabela : $table\n#\n\n"); fwrite($back,"$lin[1] ;\n\n#\n# Dados a serem incluídos na tabela\n#\n\n"); //Teremos então de pegar os dados que estão dentro de cada campo de cada tabela, e abri-los também para serem gravados no nosso arquivo de backup. // seleciono todos os dados de cada tabela pega no while acima // e depois gravo no arquivo .sql, usando comandos de insert $res3 = mysql_query("SELECT * FROM $table"); while($r=mysql_fetch_row($res3)){ $sql="INSERT INTO $table VALUES ("; //Agora vamos pegar cada dado do campo de cada tabela, e executar tarefas como, quebra de linha, substituição de aspas, espaços em branco, etc. Deixando o arquivo confiável para ser importado em outro banco de dados. // este laço irá executar os comandos acima, gerando o arquivo ao final, // na função fwrite (gravar um arquivo) // este laço também irá substituir as aspas duplas, simples e campos vazios // por aspas simples, colocando espaços e quebras de linha ao final de cada registro, etc // deixando o arquivo pronto para ser importado em outro banco for($j=0; $j<mysql_num_fields($res3);$j++) { if(!isset($r[$j])) $sql .= " '',"; elseif($r[$j] != "") $sql .= " '".addslashes($r[$j])."',"; else $sql .= " '',"; } $sql = ereg_replace(",$", "", $sql); $sql .= ");\n"; fwrite($back,$sql); } } } //E finalmente, vamos fechar (internamente, no servidor) o arquivo que geramos, dando um nome para o mesmo, e gerando o arquivo que será então disponibilizado para download. // fechar o arquivo que foi gravado fclose($back); // gerando o arquivo para download, com o nome do banco e extensão sql. $arquivo = $dbname.".sql"; ob_start(); require('zip.lib.php'); //Gera o objeto $zipfile = new zipfile($dbname.".zip",'', ''); //Adiciona o diretorio corrente com todos arquivos //$zipfile->addDirContent('./'); //Adicionado o aquivo criado $zipfile->addFileAndRead($arquivo); //Saida do aquivo compactado echo $zipfile->file(); ?>
Executar arquivos do mysql por meio do php
Retornando aniversariantes do mês
Testando servidor MySQL e base de dados
Nenhum comentário foi encontrado.
Atenção a quem posta conteúdo de dicas, scripts e tal (1)
Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
Como Atualizar Fedora 39 para 40
Instalar Google Chrome no Debian e derivados
Consertando o erro do Sushi e Wayland no Opensuse Leap 15
Instalar a última versão do PostgreSQL no Lunix mantendo atualizado
Flathub na sua distribuição Linux e comandos básicos de gerenciamento
erro ao clonar repo github (5)
Problema Envio email GLPI Versao 10.0.15 (1)
Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel... (25)
[Shell Script] Script para desinstalar pacotes desnecessários no OpenSuse
[Shell Script] Script para criar certificados de forma automatizada no OpenVpn
[Shell Script] Conversor de vídeo com opção de legenda
[C/C++] BRT - Bulk Renaming Tool
[Shell Script] Criação de Usuarios , Grupo e instalação do servidor de arquivos samba