Foros del Web » Programando para Internet » PHP »

Respaldar Base de Datos

Estas en el tema de Respaldar Base de Datos en el foro de PHP en Foros del Web. Hola a Todos!! Estoy trabajando bajo Linux (RedHat 7.0) y PHP 4, y necesito hacer un Respaldo a la Base de Datos. y buscando información ...
  #1 (permalink)  
Antiguo 25/05/2004, 16:27
 
Fecha de Ingreso: octubre-2003
Mensajes: 134
Antigüedad: 14 años, 2 meses
Puntos: 0
Respaldar Base de Datos

Hola a Todos!!

Estoy trabajando bajo Linux (RedHat 7.0) y PHP 4, y necesito hacer un Respaldo a la Base de Datos. y buscando información encontré en las FAQ's un código para ello. Pero la verdad es que no me resulta y no se donde está mi error. Por favor es muy importante poder solucionarlo, espero me puedan ayudar.

Aquí les pongo el código que estoy usando (de acuerdo a lo señalado en las FAQ's) - ojo: el archivo debo dejarlo en el mismo servidor, pero cuando pruebo el código me señala el mensaje de error.


<?
// Nombre del archivo con el cual queremos que se guarde la base de datos

$filename = "fichero.sql";

// Cabezeras para forzar al navegador a guardar el archivo - las borré puesto así se señala en las FAQs en caso de querer guardar el archivo en el servidor


$usuario="yo"; // Usuario de la base de datos

$passwd="mio"; // Contraseña asignada al usuario

$bd="BD"; // Nombre de la Base de Datos a exportar



// Funciones para exportar la base de datos - ruta del mysqldump

$executa = "/usr/bin/mysqldump -u $usuario --password=$passwd --opt $bd > $fichero";

system($executa, $resultado);



// Comprobar si se a realizado bien, si no es asi, mostrará un mensaje de error

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



?>

Ayuda por favor!!

Gracias de ante mano.
  #2 (permalink)  
Antiguo 25/05/2004, 17:00
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Yodumpeo

En las FAQS hay un script llamada Yodumpeo, usa el buscador del foro, seguro que lo encuentras.

__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #3 (permalink)  
Antiguo 25/05/2004, 17:45
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Aqui esta

http://www.forosdelweb.com/sfd621d0d...msg166532.html

Cluster Este post esta perdido, ya no esta en las Faqs

Saludos
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #4 (permalink)  
Antiguo 26/05/2004, 09:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ok, Gerald .. lo revisaremos.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 26/05/2004, 12:16
 
Fecha de Ingreso: octubre-2003
Mensajes: 134
Antigüedad: 14 años, 2 meses
Puntos: 0
...

Hola!!!

Espero me ayuden con lo planteado en la pregunta realizada. Los créditos del código son de Clúster (en las FAQ's) y yo lo edité de acuerdo a lo que utilizo (RedHat 7.0) tal como se señaló, pero no se por qué no me funciona

Aquí está el código de las faq's del cual me guié:

¿como exportar mi base de datos a un archivo 'archivo.sql'?
Créditos: Cluster
Tema: Bases de datos
Pregunta: ¿Como exportar mi base de datos en MySQL a un archivo fichero.sql?
Respuesta:

Para guardar una base de datos, sin ningún gestor como podría ser phpMyAdmin. Se podría usar el siguiente código. Tal cual está .. envia a descargar el "dump" (volcado de datos y estructura) de la Base de datos seleccinada, incluido todas sus tablas.

PHP:

<?

// Nombre del archivo de con el cual queremos que se guarde la base de datos

$filename = "fichero.sql";

// Cabezeras para forzar al navegador a guardar el archivo

header("Pragma: no-cache");

header("Expires: 0");

header("Content-Transfer-Encoding: binary");

header("Content-type: application/force-download");

header("Content-Disposition: attachment; filename=$filename");

$usuario="usuario"; // Usuario de la base de datos, un ejemplo podria ser 'root'

$passwd="contraseña"; // Contraseña asignada al usuario

$bd="base_de_datos"; // Nombre de la Base de Datos a exportar

// Funciones para exportar la base de datos

$executa = "c:\mysql\bin\mysqldump.exe -u $usuario --password=$passwd --opt $bd";

system($executa, $resultado);

// Comprobar si se a realizado bien, si no es asi, mostrará un mensaje de error

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

?>

Nota: Este código es valido si PHP se esta ejecutando en Windows. En caso de ejecutarse en Linux sustituir:
PHP:

$executa = "c:\mysql\bin\mysqldump.exe -u $usuario --password=$passwd --opt $bd";

por:
PHP:

$executa = "/mysql/bin/mysqldump -u $usuario --password=$passwd --opt $bd";

**Las rutas indicadas son hacia la correspondiente ubicación física de mysqldump (o mysqldump.exe) en sus sistemas ...

Si se desea que el archivo generenado ($fichero.sql) lo queremos dejar en el propio servidor (por ejemplo para hacer backups de esa BD Mysql automaticos lanzados por algun script nuestro ...) usar (en lugar de la anterior $executa): (notese el > $fichero )
PHP:

$executa = "c:\mysql\bin\mysqldump.exe -u $usuario --password=$passwd --opt $bd > $fichero";


Y .. quitar las cabeceras header() q se usan (todas).
__________________
Editado por Cluster el 31-03-2003 a las 10:48 PM



Y aquí el código que edité según lo anterior:


<?
// Nombre del archivo de con el cual queremos que se guarde la base de datos

$filename = "fichero.sql";

// Cabezeras para forzar al navegador a guardar el archivo
//borradas según lo señalado en esta Faq

$usuario="xx"; // Usuario de la base de datos

$passwd="xxx"; // Contraseña asignada al usuario

$bd="xxxx"; // Nombre de la Base de Datos a exportar



// Funciones para exportar la base de datos
$executa = "/usr/bin/mysqldump -u $usuario --password=$passwd --opt $bd > $fichero";

system($executa, $resultado);

// Comprobar si se a realizado bien, si no es asi, mostrará un mensaje de error

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

?>

PERO me señala el mensaje de error!!!

Espero me puedan ayudar por favor

Muchas gracias por adelantado.
  #6 (permalink)  
Antiguo 26/05/2004, 14:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero que sistema operativo usas? (por lo que has dejado suponemos que Linux) ..

Usas un servicio de hosting? .. te lo comento por qué las rutas exactas a tu mysqldump e incluso el poder ejecutar system() depende de los permisos que tengas en ese servidor .. No en todos se puede hacer así.

Por otro lado .. la función system() sólo devuelve un "true/false" si consiguió ejecutarse .. pero no más información.

Si quieres ... puedes usar exec() en lugar de system() (usando sus correspondientes parámetros) para ver que mensaje de error te está arrojando (supongo que algo tipo "no está tal cosa en tal ruta . o no tienes permisos .. etc).

exec()
www.php.net/exec

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 28/05/2004, 08:53
 
Fecha de Ingreso: octubre-2003
Mensajes: 134
Antigüedad: 14 años, 2 meses
Puntos: 0
...

Hola Cluster y a todos!

Respecto al SO uso Redhat 7.0, y uso el servidor de la institución en la que estoy haciendo algunas cosillas. La ruta del mysqldump es /usr/bin/mysqldump.

Cuando utilizo la sentencia:

$executa = "/usr/bin/mysqldump -u $usuario --password=$passwd --opt $bd";

system($executa, $resultado);

me muestra toda la estructura y los datos de la BD en el navegador, pero necesito que esos datos sean guardados en el mismo servidor, por tanto uso para ello:

$executa = "/usr/bin/mysqldump -u $usuario --password=$passwd --opt $bd> $fichero";

y usando lo anterior ahí me genera el mensaje de error, y no he podido solucionarlo.

Espero que ahora me puedan entender y sinceramente espero que me ayuden.

Muchas gracias por adelantado.

yuki27
  #8 (permalink)  
Antiguo 28/05/2004, 09:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
** Sobre el primero problema .. que te muestra el contenido del archivo SQL generado y ofrecido para descargar ..

Revisa las cabeceras HTTP que se usan:

Código PHP:
header("Content-Transfer-Encoding: binary");
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=$filename"); 
No todo navegador interpreta de la misma forma (para "descargar") dichas cabeceras ..

En www.php.net/header tienes más ejemplos de otras cabeceras HTTP ..pruebalas.

** Para la otra solución: ¿que mensaje de error te genera?

recuerda que hay un espacio entre $bd > $fichero

Código PHP:
$executa "c:\mysql\bin\mysqldump.exe -u $usuario --password=$passwd --opt $bd > $fichero"
Un saludo,
  #9 (permalink)  
Antiguo 28/05/2004, 10:15
 
Fecha de Ingreso: octubre-2003
Mensajes: 134
Antigüedad: 14 años, 2 meses
Puntos: 0
Solucionado

Hola nuevamente

les cuento que ya lo solucioné y les pongo la sintaxis por si a alguien le sirve:

<?
$usuario="xx";

$passwd="xxx";

$executa ="ruta -u $usuario --password=$passwd --opt BaseDatos > Respaldo.sql";
system($executa, $resultado);

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

else {
echo "ok"; (lo puse para comprobar en el navegador)
}


?>

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:43.