Foros del Web » Programando para Internet » PHP »

como respaldar mi base de datos con php

Estas en el tema de como respaldar mi base de datos con php en el foro de PHP en Foros del Web. esa es mi pregunta como hago para hacer un respaldo de mi base de datos a traves de php en un formulario y con un ...
  #1 (permalink)  
Antiguo 19/11/2007, 19:12
Avatar de petoko  
Fecha de Ingreso: noviembre-2007
Ubicación: talcahuano chile
Mensajes: 173
Antigüedad: 16 años, 5 meses
Puntos: 0
como respaldar mi base de datos con php

esa es mi pregunta como hago para hacer un respaldo de mi base de datos a traves de php en un formulario y con un boton submit se puede?
  #2 (permalink)  
Antiguo 20/11/2007, 05:24
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Re: como respaldar mi base de datos con php

si se puede, busca informacion sobre:

PHP:

shell_exec
header

MySQL:

mysqldump
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #3 (permalink)  
Antiguo 20/11/2007, 05:44
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Re: como respaldar mi base de datos con php

Bueno como estaba un poco aburrido te ahorro un poco de codigo:
Código PHP:
<?php
    
function Connect($host,$user,$passwd)
     {  
      if(!(
$link=mysql_connect($host,$user,$passwd)))
       {
        echo 
"Error connecting to DDBB.";
        exit();
       }
       return 
$link;
     }
$link=Connect('localhost','root','root');
//
if($_POST['submit'])
 { 
     
$db=$_POST['db'];
    
$output=shell_exec("d:\apps\mysql-5.0.45-win32\bin\mysqldump.exe -u root -proot ".$db); // ejemplo windows
    //$output=shell_exec("/usr/bin/mysqldump -u root -proot ".$db); // ejemplo linux
    //
    
if(trim($output)==NULL)
     {
         echo 
"Error creando el backup de la DB: ".$db;
         exit();
     }
    
header('Content-type: text/plain');
    
header('Content-Disposition: attachment; filename="'.$db.'.sql"');
    echo 
$output;
    exit();
 }    
$select="show databases";
$select=mysql_query($select); 
?>
<html>
<head>
</head>
<body>
 <form action="" method="post">  
  <select name="db">
  <?php
  
while($row mysql_fetch_row($select))
   {
       
?>
       <option value="<?php echo $row[0]; ?>"><?php echo $row[0]; ?></option>
       <?php
   
}    
  
?>
  </select>
  <input type="submit" name="submit" value="Crear backup" />  
 </form>
</body>
</html>
tienes que cambiar las rutas correspondientes al ejecutable mysqldump y logicamente el usuario y password para conectarte a mysql

;)
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #4 (permalink)  
Antiguo 20/11/2007, 10:59
Avatar de petoko  
Fecha de Ingreso: noviembre-2007
Ubicación: talcahuano chile
Mensajes: 173
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: como respaldar mi base de datos con php

ok
muchas gracias
  #5 (permalink)  
Antiguo 20/11/2007, 22:46
Avatar de petoko  
Fecha de Ingreso: noviembre-2007
Ubicación: talcahuano chile
Mensajes: 173
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: como respaldar mi base de datos con php

cambie la ruta del mysqldump

pero me manda el mensage
Error creando el backup de la DB:

en el select me mustra todas las bases de datos que tengo en mysql eso si por ksera la puse asi mira
Código PHP:
 $output=shell_exec("C:\Archivos de programa\MySQL\MySQL Server 5.0\bin\mysqldump.exe -u geko -proot ".$db); // ejemplo windows 
que puede ser ?
  #6 (permalink)  
Antiguo 21/11/2007, 01:59
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Re: como respaldar mi base de datos con php

Comprueba que la variable $db no este vacio. Haz un echo $db antes de todo para ver si recoge bien la variable.

Mientras voy a ver si los espacios repercuten en la ejecucion del comando.
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #7 (permalink)  
Antiguo 21/11/2007, 02:45
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Re: como respaldar mi base de datos con php

el error es de los espacios que no los interpreta bien, a ser posible podrias cambiarle la ubicacion al mysql y ponerlo en otra carpeta que no tenga espacios.

Edito: Es un bug:

http://bugs.php.net/bug.php?id=35961&edit=1

Solucion, instalar el mysql en otra ruta que no tenga espacios.
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan

Última edición por ZiTAL; 21/11/2007 a las 02:53
  #8 (permalink)  
Antiguo 21/11/2007, 08:27
Avatar de petoko  
Fecha de Ingreso: noviembre-2007
Ubicación: talcahuano chile
Mensajes: 173
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: como respaldar mi base de datos con php

escribi lo mismo en la ventana de cmd (el antiguo MSDOS)

Código:
C:\Archivos de programa\MySQL\MySQL Server 5.0\bin>mysqldump [final] -u geko
-proot
y me da como respuesta esto

Código:
mysqldump: Got error: 1045: Access denied for user 'geko'@'localhost' (using password: YES) when trying to connect

pero en mysql la cuente geko yo la tengo sin password

yo tengo entendido que con los espacios de losnombres de la carpeta se puede igual
  #9 (permalink)  
Antiguo 21/11/2007, 08:36
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Re: como respaldar mi base de datos con php

el -p es para el password si no lo tienes no lo pongas, de todas formas no te va a funcionar por tener el mysqldump en una ruta con espacios (desde php, desde cmd si te lo hara)
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #10 (permalink)  
Antiguo 21/11/2007, 09:04
Avatar de petoko  
Fecha de Ingreso: noviembre-2007
Ubicación: talcahuano chile
Mensajes: 173
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: como respaldar mi base de datos con php

ok gracias por tu ayuda

la ultima consulta yo puse en el archivo que me diste tu mas arrba para que me muestre en pantalla en valor del $output
Código PHP:
echo $output
y no me aparece nada

es por la sentencia de al lado
Código PHP:
$output=shell_exec(......); 
que hace esta sentencia shell_exec??




PD: muchas gracias zital pot toda tu ayuda
  #11 (permalink)  
Antiguo 21/11/2007, 09:09
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Re: como respaldar mi base de datos con php

shell_exec te ejecuta un comando del sistema operativo, te vuelvo a repetir que NO PUEDES EJECUTAR UN COMANDO QUE ESTE EN UNA RUTA CON ESPACIOS.

Vamos que no puedes instalar el MySQL en esta ruta:
Código:
C:\Archivos de programa\MySQL\MySQL Server 5.0\bin
lo tendras que instalar en otra carpeta que no tenga espacios.
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #12 (permalink)  
Antiguo 21/11/2007, 09:42
Avatar de petoko  
Fecha de Ingreso: noviembre-2007
Ubicación: talcahuano chile
Mensajes: 173
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: como respaldar mi base de datos con php

Si Ya Lo Se

Muchas Gracias
  #13 (permalink)  
Antiguo 21/11/2007, 11:33
Avatar de Ragher  
Fecha de Ingreso: octubre-2004
Ubicación: Rosario, Argentina
Mensajes: 81
Antigüedad: 19 años, 5 meses
Puntos: 0
Re: como respaldar mi base de datos con php

hola y desde linux como se podria hacer ??
  #14 (permalink)  
Antiguo 21/11/2007, 15:12
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Re: como respaldar mi base de datos con php

si miras el primer post que he puesto veras que hay el ejemplo comentado para hacerlo con linux ;)
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #15 (permalink)  
Antiguo 09/01/2008, 17:36
 
Fecha de Ingreso: enero-2008
Mensajes: 10
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: como respaldar mi base de datos con php

hola soy nuevo aqui y necesito ayuda urgente:
estoy creando un sistema con php y mysql y necesito hacer un modulo de respaldos(que ya tengo).
ahora este es mi problema;
quisiera saber si se puede hacer q el archivo respaldo.sql se guarde automaticamente en un directorio de mi servidor;
si me pueden ayudar porfa
  #16 (permalink)  
Antiguo 09/01/2008, 17:39
 
Fecha de Ingreso: enero-2008
Mensajes: 10
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: como respaldar mi base de datos con php

por si lo necesitan este es el codigo q estoy usando:

require"conexion.inc";
$link=mysql_connect($host_mysql,$usuario_mysql,$pa ssword_mysql);
if(!$link) exit("No se tiene conexion con la base de datos mysql");
mysql_select_db($nombre_bd_mysql,$link);

$filename = "Respaldo.sql";
//para servidores windows
header("Pragma: no-cache");
header("Expires: 0");
header("Content-Transfer-Encoding: binary");
header("Content-type: application/ force-download);
header("Content-Disposition: attachment; filename=$filename");

$executa = "C:\wamp\mysql\bin\mysqldump.exe -u $usuario_mysql --password=$password_mysql --opt $nombre_bd_mysql";
system($executa, $resultado);

if ($resultado) { echo "<H1>Error ejecutando comando: $executa</H1>\n";
}

?>
  #17 (permalink)  
Antiguo 10/01/2008, 02:17
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Re: como respaldar mi base de datos con php

para meter codigo mete dentro de las etiquetas php, sobre el tema, solamente tienes que redireccionar la salida del dump a un archivo:

Código PHP:
$executa "C:\wamp\mysql\bin\mysqldump.exe -u ".$usuario_mysql." --password=".$password_mysql." --opt ".$nombre_bd_mysql." > c:\restore\".$nombre_bd_mysql.date("Ymd").".sql"; 
con Ymd se añade la fecha de hoy para que tengas respaldos diferentes si lo ejecutas cada dia por ejemplo.

Si no lo quieres descargar no necesitas los headers.
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #18 (permalink)  
Antiguo 10/01/2008, 11:38
 
Fecha de Ingreso: enero-2008
Mensajes: 10
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: como respaldar mi base de datos con php

gracias zital, tengo otra pregunta:

Cmo hago para darle mas tiempo de ejecucion a un script ya q me aparece el error:

Fatal error: Maximum execution time of 30 seconds exceeded in
intente introduciendo mas timpo en max_execution_time = de php.ini pro m sigue marcando el mismo error
  #19 (permalink)  
Antiguo 10/01/2008, 12:09
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Re: como respaldar mi base de datos con php

mirate estos valores en el php.ini
Código PHP:
max_execution_time 30;
max_input_time 60 
cambialos y reinicia apache

;)
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #20 (permalink)  
Antiguo 10/01/2008, 12:30
 
Fecha de Ingreso: enero-2008
Mensajes: 10
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: como respaldar mi base de datos con php

otra pregunta:

Hay alguna instruccion para recuperas datos desde el arhivo respaldo.sql o necesito leer todo el archivo y ejecutarlo con un mysql_query()?
  #21 (permalink)  
Antiguo 10/01/2008, 12:40
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
De acuerdo Re: como respaldar mi base de datos con php

Yo hace mucho que utilizo un script que funciona muy bien en linux y en windows. Te envía un respaldo de la base de datos por email y lo guarda en alguna carpeta del servidor tambien. Te guarda en un zip el respaldo.sql.

Lo pueden ver en:
http://www.dwalker.co.uk/phpmysqlautobackup/

Lo recomiendo!
Saludos
  #22 (permalink)  
Antiguo 10/01/2008, 15:33
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Re: como respaldar mi base de datos con php

Código PHP:
$executa 'C:\wamp\mysql\bin\mysql -u '.$usuario_mysql.' --password='.$password_mysql.' '.$nombre_bd_mysql.' < c:\restore\''.$nombre_bd.'.sql'
;)
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #23 (permalink)  
Antiguo 10/01/2008, 17:57
 
Fecha de Ingreso: enero-2008
Mensajes: 10
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: como respaldar mi base de datos con php

muchisimas gracias me acabas zital me acabas de salvar la vida, ya q mañana tengo q presentar el sistema y me faltaba eso
  #24 (permalink)  
Antiguo 11/01/2008, 02:24
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Re: como respaldar mi base de datos con php

De nada, para algo estamos. Antes de presentarlo haz unos cuantos test para ver si funciona ;)
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #25 (permalink)  
Antiguo 14/01/2008, 12:52
 
Fecha de Ingreso: enero-2008
Mensajes: 10
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: como respaldar mi base de datos con php

ya presente mi sistema y funciona perfectamente, gracias de nuevo
  #26 (permalink)  
Antiguo 14/01/2008, 14:53
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Re: como respaldar mi base de datos con php

Enhorabuena ;)
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 01:29.