Foros del Web » Programando para Internet » PHP »

Backup de base de datos mysql desde formulario en php

Estas en el tema de Backup de base de datos mysql desde formulario en php en el foro de PHP en Foros del Web. Saludos, les cuento que estoy haciendo un sistema para un registro civil y necesito realizar un backup desde un formulario en php, para que puedo ...
  #1 (permalink)  
Antiguo 02/07/2009, 05:09
 
Fecha de Ingreso: junio-2009
Mensajes: 93
Antigüedad: 17 años, 5 meses
Puntos: 0
Exclamación Backup de base de datos mysql desde formulario en php

Saludos, les cuento que estoy haciendo un sistema para un registro civil y necesito realizar un backup desde un formulario en php, para que puedo ser ejecutado po un funcionario autorizado de la oficina.

Esto es lo que consegui leyendo por ahi.. Peeeero no se como adaptarlo a mi formulario php.

Ejemplos de comandos mysqldump:

Para realizar la copia se seguridad de la base de datos mibase al fichero copia_seguridad.sql

mysqldump --opt mibase > copia_seguridad.sql
Otro ejemplo más complejo de comando mysqldump para hacer el backup de una base de datos es el siguiente:

mysqldump --opt --password=miclave --user=miuser mibasededatos > archivo.sql
En este último caso estamos indicando un nombre de usuario y una clave para acceder a la base de datos sobre la que se está haciendo el backup: mibasededatos. Las sentencias SQL para reconstruir esa base de datos se volcarán en el fichero archivo.sql.


Alguien me puede ayudar?..no tengo ni idea de como hacerlo..Gracias por su ayuda.

Última edición por JCANARE2; 02/07/2009 a las 05:21
  #2 (permalink)  
Antiguo 02/07/2009, 07:28
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 17 años, 5 meses
Puntos: 1517
Respuesta: Backup de base de datos mysql desde formulario en php

Usa phpmyadmin para que veas como se hace una copia o exportar los datos. Pero un ejemplo de hacer una copia podria hacerse de esta forma

Código PHP:
$s = INSERT INTO tabla_a_copiar SELECT * FROM tabla;
$r = mysql_query($s) or die(mysql_error()); 
Asi es como phpmyadmin hace una copia de una tabla.

Para mas informacion puedes verla aqui
http://mysql.conclase.net/curso/inde...=INSERT_SELECT
  #3 (permalink)  
Antiguo 02/07/2009, 07:40
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 20 años, 3 meses
Puntos: 70
Respuesta: Backup de base de datos mysql desde formulario en php

http://www.forosdelweb.com/wiki/PHP:...hivo.sql%27%3F

Quizás te sirva

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #4 (permalink)  
Antiguo 03/07/2009, 04:40
 
Fecha de Ingreso: junio-2009
Mensajes: 93
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Backup de base de datos mysql desde formulario en php

Saludos, les cuento que probé con este Código que me copié del Pana Higi de este mismo foro:

<?

function backup_mysql()
{
$dbhost="localhost";
$dbuname="root";
$dbpass="0212";
$$dbname="registro";

// Crear nombres de los ficheros backup
$fecha=time(); // Fecha actual
$archivo=gmstrftime("%y-%m-%",$fecha);
$archivo='backup_registro.sql'.$fecha; // Archivo sql

@system('C:\\localhost\\mysql\binmysqldump.exe --host='.$dbhost.' --user='.$dbuname.' --password='.$dbpass.' --opt --quick '.$dbname.' > '.$archivo.'',$resultado); //para linux
echo $resultado;
}
backup_mysql();
$ahora=time();
$texto=gmstrftime("%y-%m-%d",$ahora);
?>

Y en efecto si me guarda algo, pero como una carpeta con archivos FRM con distintas.

Y en realidad lo que quiero es archivo .sql con toda la base de datos..como un script.. SE Puede?..

Última edición por JCANARE2; 03/07/2009 a las 05:04
  #5 (permalink)  
Antiguo 03/07/2009, 06:12
 
Fecha de Ingreso: abril-2007
Mensajes: 82
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Backup de base de datos mysql desde formulario en php

Código PHP:
<?php
    
//  Conexión con la Base de Datos.    
    
$db_server            = "127.0.0.1"; 
    
$db_name                = "nombre_DDBB"; 
    
$db_username        = "nombre_usuario"; 
    
$db_password        = "contrasena"; 
    
$filename             = date("Y-m-d_H-i-s");
//-------------
//Funciones
    
error_reporting( E_ALL & ~E_NOTICE );
    function 
fetch_table_dump_sql($table, $fp = 0) {
        
$rows_en_tabla = 0;
        
$tabledump = "--\n";
        if( !
$hay_Zlib ) 
            
fwrite($fp, $tabledump);
        else
            
gzwrite($fp, $tabledump);    
        
$tabledump = "-- Table structure for table `$table`\n";
        if( !
$hay_Zlib ) 
            
fwrite($fp, $tabledump);
        else
            
gzwrite($fp, $tabledump);    
        
$tabledump = "--\n\n";
        if( !
$hay_Zlib ) 
            
fwrite($fp, $tabledump);
        else
            
gzwrite($fp, $tabledump);    

        
$tabledump = query_first("SHOW CREATE TABLE $table");
        
strip_backticks($tabledump['Create Table']);
        
$tabledump = "DROP TABLE IF EXISTS $table;\n" . $tabledump['Create Table'] . ";\n\n";
        if( !
$hay_Zlib ) 
            
fwrite($fp, $tabledump);
        else
            
gzwrite($fp, $tabledump);
        
$tabledump = "--\n";
        if( !
$hay_Zlib ) 
            
fwrite($fp, $tabledump);
        else
            
gzwrite($fp, $tabledump);    
        
$tabledump = "-- Dumping data for table `$table`\n";
        if( !
$hay_Zlib ) 
            
fwrite($fp, $tabledump);
        else
            
gzwrite($fp, $tabledump);    
        
$tabledump = "--\n\n";
        if( !
$hay_Zlib ) 
            
fwrite($fp, $tabledump);
        else
            
gzwrite($fp, $tabledump);
        
$tabledump = "LOCK TABLES $table WRITE;\n";
        if( !
$hay_Zlib ) 
            
fwrite($fp, $tabledump);
        else
            
gzwrite($fp, $tabledump);
        
$rows = query("SELECT * FROM $table");
        
$numfields=mysql_num_fields($rows);
        while (
$row = fetch_array($rows, DBARRAY_NUM)) {
            
$tabledump = "INSERT INTO $table VALUES(";
            
$fieldcounter = -1;
            
$firstfield = 1;
            
// campos
            
while (++$fieldcounter < $numfields) {
                if( !
$firstfield) {
                    
$tabledump .= ', ';
                }else {
                    
$firstfield = 0;
                }
                if( !isset(
$row["$fieldcounter"])) {
                    
$tabledump .= 'NULL';
                }else {
                    
$tabledump .= "'" . mysql_escape_string($row["$fieldcounter"]) . "'";
                }
            }
            
$tabledump .= ");\n";
            if( !
$hay_Zlib ) 
                
fwrite($fp, $tabledump);
            else
                
gzwrite($fp, $tabledump);    
            
$rows_en_tabla++;
        }
        
free_result($rows);
        
$tabledump = "UNLOCK TABLES;\n";
        if( !
$hay_Zlib ) 
            
fwrite($fp, $tabledump);
        else
            
gzwrite($fp, $tabledump);            
        return 
$rows_en_tabla;
    }
    function 
strip_backticks(&$text) {
        return 
$text;
    }
    function 
fetch_array($query_id=-1) {
        if( 
$query_id!=-1) {
            
$query_id=$query_id;
        }
        
$record = mysql_fetch_array($query_id);
        return 
$record;
    }
    function 
problemas($msg) {
        
$errdesc = mysql_error();
    
$errno = mysql_errno();
    
$message  = "<br>";
    
$message .= "- Ha habido un problema accediendo a la Base de Datos<br>";
    
$message .= "- Error $appname: $msg<br>";
    
$message .= "- Error mysql: $errdesc<br>";
    
$message .= "- Error número mysql: $errno<br>";
    
$message .= "- Script: ".getenv("REQUEST_URI")."<br>";
    
$message .= "- Referer: ".getenv("HTTP_REFERER")."<br>";
        echo( 
"</strong><br><br><hr><center><small>" );
        
setlocale( LC_TIME,"spanish" );
        echo 
strftime( "%A %d %B %Y&nbsp;-&nbsp;%H:%M:%S", time() );    
        echo( 
"</small></center>" );
        echo( 
"</BODY>" );
        echo( 
"</HTML>" );
        die(
"");
  } 
?>
Sigo en el siguite post que no me deja ponerlo todo en uno.. va junto en 1 solo.
  #6 (permalink)  
Antiguo 03/07/2009, 06:15
 
Fecha de Ingreso: abril-2007
Mensajes: 82
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Backup de base de datos mysql desde formulario en php

Código PHP:
<?php
function free_result($query_id=-1) {
    if( 
$query_id!=-1) {
      
$query_id=$query_id;
    }
    return @
mysql_free_result($query_id);
  }
  function 
query_first($query_string) {
    
$res = query($query_string);
    
$returnarray = fetch_array($res);
    
free_result($res);
    return 
$returnarray;
  }
    function 
query($query_string) {
    
$query_id = mysql_query($query_string);
    if( !
$query_id) {
      
problemas("Invalid SQL: ".$query_string);
    }
    return 
$query_id;
  }
//-------
//  Main
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
 <HEAD>
    <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 --> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 </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>
<br>
<strong>
<?php
    
@set_time_limit( 0 );    
    echo( 
"- Base de Datos: '$db_name' en '$db_server'.<br>" );
    
$error = false;
    
$tablas = 0;
    
$total_tablas = 0;
    
$total_rows = 0;
    if( !@
function_exists( 'gzopen' ) ) {
        
$hay_Zlib = false;
        echo( 
"- Ya que no está disponible Zlib, salvaré la Base de Datos sin comprimir, como '$filename'<br>" );
    }
    else {
        
$filename = $filename . ".gz";
        
$hay_Zlib = true;
        echo( 
"- Ya que está disponible Zlib, salvaré la Base de Datos comprimida, como '$filename'<br>" );
    }    
    if( !
$error ) { 
        
$dbconnection = @mysql_connect( $db_server, $db_username, $db_password ); 
        if( 
$dbconnection) 
            
$db = mysql_select_db( $db_name );
        if( !
$dbconnection || !$db ) { 
            echo( 
"<br>" );
            echo( 
"- La conexion con la Base de datos ha fallado: ".mysql_error()."<br>" );
            
$error = true;
        }
        else {
            echo( 
"<br>" );
            echo( 
"- He establecido conexion con la Base de datos.<br>" );
        }
    }
    if( !
$error ) { 
        
//  MySQL versión
        
$result = mysql_query( 'SELECT VERSION() AS version' );
        if( 
$result != FALSE && @mysql_num_rows($result) > 0 ) {
            
$row   = mysql_fetch_array($result);
        } else {
            
$result = @mysql_query( 'SHOW VARIABLES LIKE \'version\'' );
            if( 
$result != FALSE && @mysql_num_rows($result) > 0 ){
                
$row   = mysql_fetch_row( $result );
            }
        }
        if(! isset(
$row) ) {
            
$row['version'] = '3.21.0';
        }
    }
    if( !
$error ) { 
        
$el_path = getenv("REQUEST_URI");
        
$el_path = substr($el_path, strpos($el_path, "/"), strrpos($el_path, "/"));
        
$result = mysql_list_tables( $db_name );
        if( !
$result ) {
            print 
"- Error, no puedo obtener la lista de las tablas.<br>";
            print 
'- MySQL Error: ' . mysql_error(). '<br><br>';
            
$error = true;
        }
        else {
            
$t_start = time();
            
            if( !
$hay_Zlib ) 
                
$filehandle = fopen( $filename, 'w' );
            else
                
$filehandle = gzopen( $filename, 'w6' );    //  nivel de compresión                
            
if( !$filehandle ) {
                
$el_path = getenv("REQUEST_URI");
                
$el_path = substr($el_path, strpos($el_path, "/"), strrpos($el_path, "/"));
                echo( 
"<br>" );
                echo( 
"- No he podido crear '$filename' en '$el_path/'. Por favor, asegúrese de<br>" );
                echo( 
"&nbsp;&nbsp;que dispone de privilegios de escritura.<br>" );
            }
            else {                    
                
$tabledump = "-- Dump de la Base de Datos\n";
                if( !
$hay_Zlib ) 
                    
fwrite( $filehandle, $tabledump );
                else
                    
gzwrite( $filehandle, $tabledump );    
                
setlocale( LC_TIME,"spanish" );
                
$tabledump = "-- Fecha: " . strftime( "%A %d %B %Y - %H:%M:%S", time() ) . "\n";
                if( !
$hay_Zlib ) 
                    
fwrite( $filehandle, $tabledump );
                else
                    
gzwrite( $filehandle, $tabledump );    
                
$tabledump = "--\n";
                if( !
$hay_Zlib ) 
                    
fwrite( $filehandle, $tabledump );
                else
                    
gzwrite( $filehandle, $tabledump );    
                
$tabledump = "-- Version: " . Str_VERS . ", del " . Str_DATE . ", [email protected]\n";
                if( !
$hay_Zlib ) 
                    
fwrite( $filehandle, $tabledump );
                else
                    
gzwrite( $filehandle, $tabledump );    
                
$tabledump = "-- Soporte y Updaters: http://insidephp.sytes.net\n";
                if( !
$hay_Zlib ) 
                    
fwrite( $filehandle, $tabledump );
                else
                    
gzwrite( $filehandle, $tabledump );    
                
$tabledump = "--\n";
                if( !
$hay_Zlib ) 
                    
fwrite( $filehandle, $tabledump );
                else
                    
gzwrite( $filehandle, $tabledump );    
                
$tabledump = "-- Host: `$db_server`    Database: `$db_name`\n";
                if( !
$hay_Zlib ) 
                    
fwrite( $filehandle, $tabledump );
                else
                    
gzwrite( $filehandle, $tabledump );    
                
$tabledump = "-- ------------------------------------------------------\n";
                if( !
$hay_Zlib ) 
                    
fwrite( $filehandle, $tabledump );
                else
                    
gzwrite( $filehandle, $tabledump );    
                
$tabledump = "-- Server version    ". $row['version'] . "\n\n";
                if( !
$hay_Zlib ) 
                    
fwrite( $filehandle, $tabledump );
                else
                    
gzwrite( $filehandle, $tabledump );    

                echo(
"<br>");
                
$result = query( 'SHOW tables' );
                while( 
$currow = fetch_array($result, DBARRAY_NUM) ) {
                    
$total_tablas++;
                    
$st = number_format($total_tablas, 0, ',', '.');
                    echo(
"&nbsp;&nbsp;&nbsp;Tablas - Rows procesados: $st - ");
                    
$total_rows += fetch_table_dump_sql( $currow[0], $filehandle );
                    
$sc = number_format($total_rows, 0, ',', '.');
                    echo(
"$sc<br>");
                    
fwrite( $filehandle, "\n" );
                    if( !
$hay_Zlib ) 
                        
fwrite( $filehandle, "\n" );
                    else
                        
gzwrite( $filehandle, "\n" );
                        
$tablas++;
                }
                echo(
"<br>");
                
$tabledump = "\n-- Dump de la Base de Datos Completo.";
                if( !
$hay_Zlib ) 
                    
fwrite( $filehandle, $tabledump );
                else
                    
gzwrite( $filehandle, $tabledump );    
                if( !
$hay_Zlib ) 
                    
fclose( $filehandle );
                else
                    
gzclose( $filehandle );
    
                
$t_now = time();
                
$t_delta = $t_now - $t_start;
                if( !
$t_delta )
                    
$t_delta = 1;
                
$t_delta = floor(($t_delta-(floor($t_delta/3600)*3600))/60)." minutos y "
                
.floor($t_delta-(floor($t_delta/60))*60)." segundos.";
                echo( 
"- He salvado las $tablas tablas en $t_delta<br>" );
                echo( 
"<br>" );
                echo( 
"- El Dump de la Base de Datos está completo.<br>" );
                echo( 
"- He salvado la Base de Datos en: $el_path/$filename<br>" );
                echo( 
"<br>" );
                echo( 
"- Puede bajársela directamente: </strong><a href=\"$filename\">$filename</a>" );
                
$size = filesize($filename);
                
$size = number_format($size, 0, ',', '.');
                echo( 
"&nbsp;&nbsp;&nbsp;<small>($size bytes)</small><br>" );
            }
        }
    }
    if( 
$dbconnection )
        
mysql_close();

    echo( 
"</strong><br><br><hr><center><small>" );
    
setlocale( LC_TIME,"spanish" );
    echo 
strftime( "%A %d %B %Y&nbsp;-&nbsp;%H:%M:%S", time() );    
    echo( 
"</small></center>" );
    echo( 
"</BODY>" );
    echo( 
"</HTML>" );
?>
Espero que te sea de ayuda, a mi me funciona perfecto junto con cronjob para hacer un backup diario. Luego tengo un programilla en .net que me copia el archivo mas reciente del servidor a mi pc y asi me olvido de posibles problemas.

saludos!
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 04:29.