Foros del Web » Programando para Internet » PHP »

problemas para hacer backup de base de datos en php

Estas en el tema de problemas para hacer backup de base de datos en php en el foro de PHP en Foros del Web. hola a todos. me encontre un codigo de como hacer backup de base de datos en php. he cambiado el nombre del host (que por ...
  #1 (permalink)  
Antiguo 03/04/2009, 09:08
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
problemas para hacer backup de base de datos en php

hola a todos. me encontre un codigo de como hacer backup de base de datos en php. he cambiado el nombre del host (que por defecto es localhost), el nombre del usuario y la contraseña- cuano lo ejecuto me da el siguiente error:

Código HTML:
"mysqldump" no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable. 
Este es mi codigo php que hace el backup:

Código PHP:

    
//servidor MySql
    
$C_SERVER='localhost';
    
//base de datos
    
$C_BASE_DATOS='miusb';
    
//usuario y contraseña de la base de datos mysql
    
$C_USUARIO='root';
    
$C_CONTRASENA='123456';
    
//ruta archivo de salida 
    //(el nombre lo componemos con Y_m_d_H_i_s para que sea diferente en cada backup)
    
$C_RUTA_ARCHIVO '/backups/backup_'.date("Y_m_d_H_i_s").'.sql';
    
//si vamos a comprimirlo
    
$C_COMPRIMIR_MYSQL='true';
    
    
    
//comando
    
$command "mysqldump --opt -h ".$C_SERVER." ".$C_BASE_DATOS." -u ".$C_USUARIO." -p".$C_CONTRASENA." -r \"".$C_RUTA_ARCHIVO."\" 2>&1";
          
    
//ejecutamos
    
system($command);
    
    
//comprimimos
    
if ($C_COMPRIMIR_MYSQL == 'true') {
     
system('bzip2 "'.$C_RUTA_ARCHIVO.'"');
    } 
porque sucede este error. me pueden ayudar.

saludos.
  #2 (permalink)  
Antiguo 03/04/2009, 09:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: problemas para hacer backup de base de datos en php

Revisa que mysqldump, este en el PATH de tu sistema de archivos, si no lo estas, vas a tener que usar la ruta completa a mysqldump.

Saludos.
  #3 (permalink)  
Antiguo 03/04/2009, 09:25
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: problemas para hacer backup de base de datos en php

gracias gatorv por respoder. como reviso el path del mysqldump.

saludos.
  #4 (permalink)  
Antiguo 03/04/2009, 09:34
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 10 meses
Puntos: 8
Respuesta: problemas para hacer backup de base de datos en php

Proba con esto , cambiando por tus datos, por supuesto, sino no te va a andar :P
Sacado de este foro !!!

Código PHP:
<?php
/* Usuario para la conexion a Mysql. */
$usurio "tu_usuario";
/* Password para la conexion a Mysql. */
$passwd "la_clave";
 
/* Host para la conexion a Mysql. */
$host "localhost";
/* Base de Datos que se seleccionará. */
$bd "tu_base_de_datos";
/* Nombre del fichero que se descargará. */
$nombre "backup.sql"// nombre del archivo que queres que genere !!!
/* Determina si la tabla será vaciada (si existe) cuando  restauremos la tabla. */            
$drop false;
/* 
* Array que contiene las tablas de la base de datos que seran resguardadas.
* Puede especificarse un valor false para resguardar todas las tablas
* de la base de datos especificada en  $bd.

* Ejs.:
* $tablas = false;
*    o
* $tablas = array("tabla1", "tabla2", "tablaetc");

*/
$tablas false;
/* 
* Tipo de compresion.
* Puede ser "gz", "bz2", o false (sin comprimir)
*/
$compresion false;

/* Conexion y eso*/
$conexion mysql_connect($host$usurio$passwd)
or die(
"No se conectar con el servidor MySQL: ".mysql_error());
mysql_select_db($bd$conexion)
or die(
"No se pudo seleccionar la Base de Datos: "mysql_error());


/* Se busca las tablas en la base de datos */
if ( empty($tablas) ) {
    
$consulta "SHOW TABLES FROM $bd;";
    
$respuesta mysql_query($consulta$conexion)
    or die(
"No se pudo ejecutar la consulta: ".mysql_error());
    while (
$fila mysql_fetch_array($respuestaMYSQL_NUM)) {
        
$tablas[] = $fila[0];
    }
}


/* Se crea la cabecera del archivo */
$info['dumpversion'] = "1.1b";
$info['fecha'] = date("d-m-Y");
$info['hora'] = date("h:m:s A");
$info['mysqlver'] = mysql_get_server_info();
$info['phpver'] = phpversion();
ob_start();
print_r($tablas);
$representacion ob_get_contents();
ob_end_clean ();
preg_match_all('/(\[\d+\] => .*)\n/'$representacion$matches);
$info['tablas'] = implode(";  "$matches[1]);
$dump = <<<EOT
# +===================================================================
# | YoDumpeo! 
{$info['dumpversion']}
# | por fran86 <[email protected]>
# |
# | Generado el 
{$info['fecha']} a las {$info['hora']} por el usurio '$usurio'
# | Servidor: 
{$_SERVER['HTTP_HOST']}
# | MySQL Version: 
{$info['mysqlver']}
# | PHP Version: 
{$info['phpver']}
# | Base de datos: '$bd'
# | Tablas: 
{$info['tablas']}
# |
# +-------------------------------------------------------------------

EOT;
foreach (
$tablas as $tabla) {
    
    
$drop_table_query "";
    
$create_table_query "";
    
$insert_into_query "";
    
    
/* Se halla el query que será capaz vaciar la tabla. */
    
if ($drop) {
        
$drop_table_query "DROP TABLE IF EXISTS `$tabla`;";
    } else {
        
$drop_table_query "# No especificado.";
    }

    
/* Se halla el query que será capaz de recrear la estructura de la tabla. */
    
$create_table_query "";
    
$consulta "SHOW CREATE TABLE $tabla;";
    
$respuesta mysql_query($consulta$conexion)
    or die(
"No se pudo ejecutar la consulta: ".mysql_error());
    while (
$fila mysql_fetch_array($respuestaMYSQL_NUM)) {
            
$create_table_query $fila[1].";";
    }
    
    
/* Se halla el query que será capaz de insertar los datos. */
    
$insert_into_query "";
    
$consulta "SELECT * FROM $tabla;";
    
$respuesta mysql_query($consulta$conexion)
    or die(
"No se pudo ejecutar la consulta: ".mysql_error());
    while (
$fila mysql_fetch_array($respuestaMYSQL_ASSOC)) {
            
$columnas array_keys($fila);
            foreach (
$columnas as $columna) {
                if ( 
gettype($fila[$columna]) == "NULL" ) {
                    
$values[] = "NULL";
                } else {
                    
$values[] = "'".mysql_real_escape_string($fila[$columna])."'";
                }
            }
            
$insert_into_query .= "INSERT INTO `$tabla` VALUES (".implode(", "$values).");\n";
            unset(
$values);
    }
    
$dump .= <<<EOT

# | Vaciado de tabla '$tabla'
# +------------------------------------->
$drop_table_query


# | Estructura de la tabla '$tabla'
# +------------------------------------->
$create_table_query


# | Carga de datos de la tabla '$tabla'
# +------------------------------------->
$insert_into_query

EOT;
}

/* Envio */
if ( !headers_sent() ) {
    
header("Pragma: no-cache");
    
header("Expires: 0");
    
header("Content-Transfer-Encoding: binary");
    switch (
$compresion) {
    case 
"gz":
        
header("Content-Disposition: attachment; filename=$nombre.gz");
        
header("Content-type: application/x-gzip");
        echo 
gzencode($dump9);
        break;
    case 
"bz2"
        
header("Content-Disposition: attachment; filename=$nombre.bz2");
        
header("Content-type: application/x-bzip2");
        echo 
bzcompress($dump9);
        break;
    default:
        
header("Content-Disposition: attachment; filename=$nombre");
        
header("Content-type: application/force-download");
        echo 
$dump;
    }
} else {
    echo 
"<b>ATENCION: Probablemente ha ocurrido un error</b><br />\n<pre>\n$dump\n</pre>";
}
?>
Actualmente lo estoy usando para mis back-ups y anda joya !!!!!
__________________
Mail: [email protected]
  #5 (permalink)  
Antiguo 03/04/2009, 09:45
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
gracias por responder colote. probe el script k publicaste y me funciono bien.

muchas gracias y saludos.

hola colote. una pregunta. como ya salio para hacer un backup sql en php, como haria para subir el backup sql.

utilizo un formualrio para subir el archivo sql.

saludos.

Última edición por GatorV; 03/04/2009 a las 12:17
  #6 (permalink)  
Antiguo 15/04/2009, 08:36
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 10 meses
Puntos: 8
Respuesta: problemas para hacer backup de base de datos en php

Yo lo que hago es ejecutar lo que te genera ese archivo SQL, o sea copio y pego eso en mi phpmyadmin donde dice ejecutar SQL ... hasta ahora nunca, tuve que regenerar un back-up, pero ya lo probe y anda !!!

Saludos, Ricardo !!!
__________________
Mail: [email protected]
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 11:54.