Ir para conteúdo
Fórum Script Brasil
  • 0

Restore De Backup Mysql


Guest Eduardo Assis

Pergunta

Guest Eduardo Assis

Utilizo essa função para fazer backup, retirada da internet:

function backupmysql() {

require ('./banco.php');

$file_time = date("d-m-Y,H:i:s");

$file = "../backup/backup_" . $file_time . ".sql";

$back = fopen($file,"w");

$version = "1.0";

$link = mysql_connect($host,$my_user,$password) or die("erro connectando: " . mysql_error());

mysql_select_db($banco,$link) or die("erro selecionando: " . mysql_error());

$tables = mysql_list_tables($banco) or die("erro no list_tables: " . mysql_error());

########################

# CABECALHO DO ARQUIVO #

########################

$timebkp = date("d/m/Y, H:i:s",time());

$mysql_version = mysql_get_server_info();

$php_version = phpversion();

fwrite($back,"-- bacteria_(PHP/MySQL/Dump)

-- version: $version

--

-- Servidor: $host

-- Horario de backup: $timebkp

-- Versao do MySQL: $mysql_version

-- Versao do PHP: $php_version

--

-- Bando de dados: `$banco`

--

-- --------------------------------------------------------

");

while ($row = mysql_fetch_row($tables)) {

$table = $row[0]; // cada uma das tabelas

mysql_query("OPTIMIZE TABLE `boletos`;") or die("erro otimizando tabelas: " . mysql_error());

$res2 = mysql_query("SHOW CREATE TABLE $table");

while ($lin = mysql_fetch_row($res2)) { // para cada tabela

fwrite($back,"--\n");

fwrite($back,"-- Estrutura da tabela `$table`\n");

fwrite($back,"--\n\n");

fwrite($back,"DROP TABLE IF EXISTS `$table`;\n");

$new_lin = str_replace("CREATE TABLE `","CREATE TABLE IF NOT EXISTS `",$lin[1]);

fwrite($back,"$new_lin ;\n\n");

fwrite($back,"--\n");

fwrite($back,"-- Extraindo dados da tabela `$table`\n");

fwrite($back,"--\n\n");

$res3 = mysql_query("SELECT * FROM $table");

if (mysql_num_rows($res3) == 0) {

break;

};

$fields = mysql_list_fields($banco,$table);

$columns = mysql_num_fields($fields);

$nc = $columns;

$nc--;

$fiel = NULL;

fwrite($back,"INSERT DELAYED IGNORE INTO `$table` (`");

for ($i = 0; $i < $columns; $i++) {

$fiel .= mysql_field_name($fields, $i);

if ($i < $nc) {

$fiel .= ";";

};

};

$newfiel = explode(";",$fiel);

fwrite($back,implode("`, `",$newfiel));

fwrite($back,"`) VALUES ");

$i=1;

$rt = mysql_num_rows($res3);

$ft = mysql_num_fields($res3);

while ($r=mysql_fetch_row($res3)) {

fwrite($back,"(");

for ($x=0; $x < $ft; $x++) {

if (mysql_field_type($res3,$x) == 'int' || mysql_field_type($res3,$x) == 'real') {

if (empty($r[$x])) {

$valor = 0;

} else {

$valor = $r[$x];

}

fwrite($back,"$valor");

} else {

fwrite($back,"\"$r[$x]\"");

};

$nft = $ft;

$nft--;

if ($x < $nft) {

fwrite($back,", ");

};

};

fwrite($back,")");

if ($i < $rt) {

fwrite($back,",\n");

} else {

fwrite($back,";\n");

};

$i++;

};

fwrite($back,"\n-- --------------------------------------------------------\n\n");

};

};

fclose($back);

if (gzip($file)) {

print "<font size=1> </font><br>\n";

} else {

die("erro na compactacao do arquivo!<br>\n");

};

};

function gzip($src, $level = 9, $dst = false){

if($dst == false){

$dst = $src.".zip";

};

$old_src = $src;

if(file_exists($src)){

$filesize = filesize($src);

$src_handle = fopen($src, "r");

if(!file_exists($dst)){

$dst_handle = gzopen($dst, "w$level");

while(!feof($src_handle)){

$chunk = fread($src_handle, 2048);

gzwrite($dst_handle, $chunk);

}

fclose($src_handle);

gzclose($dst_handle);

unlink($old_src);

return true;

} else {

error_log("$dst already exists");

}

} else {

error_log("$src doesn't exist");

}

return false;

}

Gostaria de saber como proceder para fazer o Restore desse backup gerado, sendo que o servidor onde hospedo sites tem uma segurança para utilizar dump, shell_exec ...

Abraços.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
Guest Eduardo Assis

É que estou desenvolvendo para outra pessoa usar e ele não tem conhecimento para usar o phpmyadmin ...

Mas obrigado pela resposta ...

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

Hunn... mas isso não tem galho... basicamente o restore nada mais é do que um upload do arquivo de backup pro servidor e logo após um insert into com os valores lidos no arquivo, seria bom que o seu backup fosse um cvs, pois no PHP5 a leitura de (e por consequencia inserção dos dados no BD) CVSs é bem simples...

» http://www.imasters.com.br/artigo/3746/mys..._csv_para_mysql (mas é pra cvs)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,1k
×
×
  • Criar Novo...