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: 14 años, 10 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: 15 años
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: 17 años, 9 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: 14 años, 10 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: 17 años
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_reportingE_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($rowsDBARRAY_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>" );
        
setlocaleLC_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: 17 años
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);    
    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) > ) {
            
$row   mysql_fetch_array($result);
        } else {
            
$result = @mysql_query'SHOW VARIABLES LIKE \'version\'' );
            if( 
$result != FALSE && @mysql_num_rows($result) > ){
                
$row   mysql_fetch_row$result );
            }
        }
        if(! isset(
$row) ) {
            
$row['version'] = '3.21.0';
        }
    }
    if( !
$error ) { 
        
$el_path getenv("REQUEST_URI");
        
$el_path substr($el_pathstrpos($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_pathstrpos($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 );    
                
setlocaleLC_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($resultDBARRAY_NUM) ) {
                    
$total_tablas++;
                    
$st number_format($total_tablas0',''.');
                    echo(
"&nbsp;&nbsp;&nbsp;Tablas - Rows procesados: $st - ");
                    
$total_rows += fetch_table_dump_sql$currow[0], $filehandle );
                    
$sc number_format($total_rows0',''.');
                    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($size0',''.');
                echo( 
"&nbsp;&nbsp;&nbsp;<small>($size bytes)</small><br>" );
            }
        }
    }
    if( 
$dbconnection )
        
mysql_close();

    echo( 
"</strong><br><br><hr><center><small>" );
    
setlocaleLC_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 18:42.