Foros del Web » Programando para Internet » PHP »

Como hacer un backup de una BD MySQL

Estas en el tema de Como hacer un backup de una BD MySQL en el foro de PHP en Foros del Web. Hola amigos: Alguien tiene algún script o una idea de como desde una página php, generar automáticamente el contenido de una base de datos MySQL ...
  #1 (permalink)  
Antiguo 07/01/2006, 19:39
 
Fecha de Ingreso: diciembre-2004
Mensajes: 103
Antigüedad: 13 años
Puntos: 0
Como hacer un backup de una BD MySQL

Hola amigos:
Alguien tiene algún script o una idea de como desde una página php, generar automáticamente el contenido de una base de datos MySQL en un archivo ej....tablas.sql o smilar y que se descargue?. Creo que el PHP-NUKE tiene un boton que lo hace.
Gracias!!
  #2 (permalink)  
Antiguo 07/01/2006, 19:45
 
Fecha de Ingreso: junio-2005
Ubicación: Edo. Mex
Mensajes: 725
Antigüedad: 12 años, 6 meses
Puntos: 5
No se si en tu servidor tengas phpmyadmin, desde ahi la puedes exportar facilmente y te genera un archivo .sql

Saludos¡
  #3 (permalink)  
Antiguo 08/01/2006, 19:30
 
Fecha de Ingreso: diciembre-2004
Mensajes: 103
Antigüedad: 13 años
Puntos: 0
Por supuesto que se puede generar con phpadmin, por eso mi post se refiere a la posibilidad de hacerlo desde algun codigo generado con php desde la web.
El sentido es que un mismo cliente pueda generarse su propio backup sin acceder a phpadmin.
Gracias
  #4 (permalink)  
Antiguo 08/01/2006, 20:07
 
Fecha de Ingreso: abril-2003
Mensajes: 201
Antigüedad: 14 años, 7 meses
Puntos: 0
Esta classe te puede ayudar :
http://www.phpclasses.org/browse/package/2811.html

salu2
  #5 (permalink)  
Antiguo 09/01/2006, 01:23
 
Fecha de Ingreso: diciembre-2004
Mensajes: 103
Antigüedad: 13 años
Puntos: 0
Cita:
Iniciado por 4sc1r
Esta classe te puede ayudar :
http://www.phpclasses.org/browse/package/2811.html

salu2
Probe de mil formas y no me funcionó, la tienes implementada??, existe alguna otra idea o codigo?
GRACIAS
  #6 (permalink)  
Antiguo 09/01/2006, 01:57
 
Fecha de Ingreso: abril-2003
Mensajes: 201
Antigüedad: 14 años, 7 meses
Puntos: 0
La probé y funciono bien ,

Edita el ejemplo : mysql_dump_test.php
Código PHP:
<?php
    
require_once("mysql_dump.inc.php");
    
    
/**
     * Create class object 
     */
    
$dbhost "localhost";
    
$dbuser "root";
    
$dbpwd "";
    
    
$mysql_dump = new MYSQL_DUMP($dbhost,$dbuser,$dbpwd);
    
    
//$sql = $mysql_dump->dumpDB(); //Takes all database backups
    
$sql $mysql_dump->dumpDB("test");  //Takes backup of particular database
    
    
if($sql==false)
        echo 
$mysql_dump->error();
    

    
//$mysql_dump->save_sql($sql);
    
    //To force sql to download
    // To save sql 

    
$mysql_dump->download_sql($sql,"dump.sql");
    
    
// Print SQL
    //echo nl2br($sql);
    
    //To restore sqlfile
    /*if($mysql_dump->restoreDB("dump.sql")==false)
        echo $mysql_dump->error();*/
    
    
?>

Última edición por 4sc1r; 09/01/2006 a las 02:05
  #7 (permalink)  
Antiguo 09/01/2006, 02:08
 
Fecha de Ingreso: agosto-2005
Mensajes: 109
Antigüedad: 12 años, 3 meses
Puntos: 0
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
 <HEAD>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Dump y Download la Base de Datos</title>
    <!-- no cache headers -->
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="no-cache">
    <meta http-equiv="Expires" content="-1">
    <meta http-equiv="Cache-Control" content="no-store">
    <meta http-equiv="Cache-Control" content="no-cache">
    <meta http-equiv="Cache-Control" content="must-revalidate">
    <!-- end no cache headers --> 
 </HEAD>
<BODY
    bgcolor="#D5D5D5" 
    text="#000000" 
    id="all" 
    leftmargin="25" 
    topmargin="25" 
    marginwidth="25" 
    marginheight="25" 
    link="#000020" 
    vlink="#000020" 
    alink="#000020">
    <center><h1>Dump y Download la Base de Datos</h1></center>
    <strong>
<?php
//---------------------------------------------------------------------------------------------------
    
define'Str_VERS'"v09/01/2006 shockly AT gmail DOT com" );
    
error_reportingE_ALL );
    @
set_time_limit);
//---------------------------------------------------------------------------------------------------


    // Mysql Database Information:
  
$db_name            "test_db";
  
$db_username        "user"
  
$db_password        "pass"

  
$backup_db_save_as  "test_base";


//---------------------------------------------------------------------------------------------------


    
function Display_dbs$nombre ) {
        
        
// read this directory 
        
$thisDir "./"
        
$cntFile 0// start file counter, names that have an extension 
        
$cntDir 0// start directory counter, names with no extension 
        
$dlist ''// build the resulting list and then echo the final results 

        
if ($dir = @opendir($thisDir)) { // open a specified directory 
            
$dlist .= "\n" "\n" '<ul>'

            while (
$file = @readdir($dir)) { // read a name from the directory 
                    
$size filesize($file);
                    if( 
$size != && !(strpos(' '.$file,'.') != && !strpos(' '.$file,'.')) ) {    //  las carpetas tienen tamaño
                 
if( substr$file0strlen($nombre) ) == $nombre ) {
                       
$dlist .= "\n" '<li><a href="' htmlentities($file) . '">'
                    
$dlist .= htmlentities($file) . '</a>'

                    
$size filesize($file);
                    
$size number_format($size0',''.');
                    
$size str_replace",",".",$size );

                                
$dlist .= "\n" '<small style="font-weight:500;">';
                    
$dlist .= "&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;$size Bytes";
                    
$dlist .= "&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;" date ("d/m/Y H:i:s"filemtime($file));          

                    
$t_file filemtime($file);
                    
$t_now time();
                    
$t_delta $t_now $t_file;
                    
$t_delta = (floor($t_delta/86400))." días, "
                    
.floor(($t_delta-(floor($t_delta/86400)*86400))/3600)." horas, "
                    
.floor(($t_delta-(floor($t_delta/3600)*3600))/60)." minutos y "
                    
.floor($t_delta-(floor($t_delta/60))*60)." segundos.";
                    
$dlist .= "&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;Esta Base de Datos es de hace $t_delta<br>";
                    
                    
$dlist .= '</small>';                    
                    
$dlist .= '</li>';         
          
                    
$cntFile += 1// increment the counter 
                  

                } 
            } 

            if (
$cntFile 1)
                
$dlist .= "\n" '<div><li><small>(No hay, primero Salva la Base de Datos)</small></div>'
            
$dlist .= "\n" '</ul>'
            
closedir($dir); // close the directory 
        
}
        else
            
$dlist .= "\n" '<p>(Could not read the directory, or the directory does not exist.)</p>'

        echo 
'<p>';

        if (
$cntFile+$cntDir 0) { // items found, any file or directory 
            
if ($cntFile && $cntDir 0) { // files and directories found 
                
echo ', '
            } 
        }
        echo 
$dlist;
    }


//---------------------------------------------------------------------------------------------------


    
$error false;
    
$message "\n";

    
$backup_db_as $backup_db_save_as;
    
$backup_db_as .= ".gz";
    
$backupcommand "mysqldump --add-drop-table --add-locks -u$db_username -p$db_password $db_name | gzip > $backup_db_as";
    
// primero la borra
    
@unlink$backup_db_as );
    
$t_start time();
    
// backup
    
passthru"$backupcommand"$error );
    if( 
$error ) {
        
$message .= "\n";
        
$message .= "- Problema en passthru. Error = $error\n";
        
$message .= "\n";    
    }
    else {
        
$t_delta_bk time() - $t_start;
        
$t_delta_bk = (floor(($t_delta_bk-(floor($t_delta_bk/86400)*86400))/3600)." horas, "
        
.floor(($t_delta_bk-(floor($t_delta_bk/3600)*3600))/60)." minutos y "
        
.floor($t_delta_bk-(floor($t_delta_bk/60))*60)." segundos.");
        
$size filesize$backup_db_as );
        
$size number_format($size0',''.');
        
$message .= "\n";
        
$message .= "- Base de Datos salvada: '" $backup_db_as "'\n";
        
$message .= "- Tamaño: " $size " bytes.\n";
        
$message .= "- Tardó en salvarse: " $t_delta_bk "\n";
    }

    echo( 
"<br>" );
    
$message preg_replace"/\n/""<br>"$message );
    echo 
$message;
    echo( 
"<br><br>- Bases de Datos disponibles:<br></strong>" );
    
Display_dbs$backup_db_save_as );
    echo( 
"<br><hr><center><small>" );
    
setlocaleLC_TIME,"spanish" );
    echo 
strftime"%A %d %B %Y&nbsp;-&nbsp;%H:%M:%S"time() );
    echo( 
"<br>" Str_VERS );
    echo( 
"</small></center><br>" );
    echo( 
"</BODY>" );
    echo( 
"</HTML>" );
    exit;
    
    
//---------------------------------------------------------------------------------------------------
?>
  #8 (permalink)  
Antiguo 09/01/2006, 02:18
 
Fecha de Ingreso: abril-2003
Mensajes: 201
Antigüedad: 14 años, 7 meses
Puntos: 0
Shockly
me da un error
- Problema en passthru. Error = 255

??
  #9 (permalink)  
Antiguo 09/01/2006, 02:52
 
Fecha de Ingreso: agosto-2005
Mensajes: 109
Antigüedad: 12 años, 3 meses
Puntos: 0
Sencillo, tu hospedador ha restringido la ejecución de programas externos desde PHP. Pídele que lo autorice o cambia de hosting.

Un saludo.


Actualizado: Se me olvidaba... también puede ser que no tengas -o no la tengas enabled- la librería Zlib.

Para aislar el problema, substituye la línea
Código PHP:
    $backupcommand "mysqldump --add-drop-table --add-locks -u$db_username -p$db_password $db_name | gzip > $backup_db_as"
por esta:
Código PHP:
    $backupcommand "mysqldump --add-drop-table --add-locks -u$db_username -p$db_password $db_name > $backup_db_as"

Última edición por Shockly; 09/01/2006 a las 03:05
  #10 (permalink)  
Antiguo 22/02/2006, 07:13
Avatar de Fociños  
Fecha de Ingreso: marzo-2004
Ubicación: A Coruña
Mensajes: 587
Antigüedad: 13 años, 8 meses
Puntos: 0
He probado a hacer un backup de una web pero al editar los datos y recargar la web queda en blanco, qué se supone que pasa, es todo correcto?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:47.