Foros del Web » Programando para Internet » PHP »

Hacer backup a la base de datos.

Estas en el tema de Hacer backup a la base de datos. en el foro de PHP en Foros del Web. Saludos a todos. Mi inquietud es la siguiente quisiera como hacerle un backup a mi base de datos desde código PHP, la base de datos ...
  #1 (permalink)  
Antiguo 26/06/2007, 15:36
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 9 meses
Puntos: 49
Hacer backup a la base de datos.

Saludos a todos.

Mi inquietud es la siguiente quisiera como hacerle un backup a mi base de datos desde código PHP, la base de datos es MySQL. les agradeceria cualquier colaboración al respecto de antemos muchas gracias.
  #2 (permalink)  
Antiguo 26/06/2007, 17:25
 
Fecha de Ingreso: agosto-2006
Mensajes: 58
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Hacer backup a la base de datos.

has probado haer un cronjob en tu server?? es mas sencillo
  #3 (permalink)  
Antiguo 26/06/2007, 18:03
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 3 meses
Puntos: 17
Re: Hacer backup a la base de datos.

Aqui tengo un Articulo q habla al respecto
Php Respaldo de BD Mysql


Saludos
  #4 (permalink)  
Antiguo 26/06/2007, 20:17
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 7 meses
Puntos: 70
De acuerdo Re: Hacer backup a la base de datos.

Si a pesar de lo que te Deer sigues teniendo problemas, me avisas Carlojas!!

Saludos!
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #5 (permalink)  
Antiguo 30/06/2007, 05:36
 
Fecha de Ingreso: febrero-2007
Mensajes: 28
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Hacer backup a la base de datos.

Hola Deer, estuve viendo tu script para respaldar y me parece que es lo que necesito. Sin embargo, trate de ejecutarlo, pero me aparecen las líneas del código PHP en el browser. ¿Qué podrá ser?

Por cierto, hay que configurar el php.ini para poder enviar el correo verdad? ¿Cómo hago esa configuración?

Carxl que me propones para respaldar?


Saludos.
  #6 (permalink)  
Antiguo 30/06/2007, 20:21
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 7 meses
Puntos: 70
De acuerdo Re: Hacer backup a la base de datos.

Hola hharris!!

Pues mira relamente para mandar un correo no tienes que modificar tu php.ini, para nada, puesto que eso lo haces con con la clase: phpmailer.

En cuanto a lo que te sucede con el código de Deer, es que por algún motivo pareciese que no tuvieres activado php. Estás seguro q' lo tienes habilitado o corriendo?

Saludos!
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #7 (permalink)  
Antiguo 03/07/2007, 07:04
 
Fecha de Ingreso: febrero-2007
Mensajes: 28
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Hacer backup a la base de datos.

Hola Carxl!

Si, lo tengo habilitado.
De hecho puedo utilizar otras cosas que tengo hechas en PHP.
Yo uso el EasyPHP 2.0, pero de verdad no se que podria estar pasando. No se si sera alguna extensión que no tengo habilitada..
  #8 (permalink)  
Antiguo 03/07/2007, 14:25
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 7 meses
Puntos: 70
De acuerdo Re: Hacer backup a la base de datos.

Hola hharris!!

Indicàme que estàs haciendo exactamente a ver si te puedo ayudar vale??

Por que asì no mas me queda de pa' rriba!

Saludos!
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #9 (permalink)  
Antiguo 04/07/2007, 15:31
 
Fecha de Ingreso: febrero-2007
Mensajes: 28
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Hacer backup a la base de datos.

Ok Carxl.. A ver,

Dentro de mi sitio tengo una carpeta llamada "backup"; en ella tengo las clases que plantea Deer en su script, que son las siguientes:
  • AbstractMail.php
    AttachmentMail.php
    execute_db_backup.php
    Mail.php
    Multipart.php
    mysql_db_backup.class.php

Posteriormente y fuera de la carpeta backup, tengo una pagína llamada "backup.php" que contiene lo siguiente:

Código PHP:
<?
// Script Respaldo de BD Mysql y enviado via Email
// Utilizando algunas Clases.
// Autor : Deerme http://deerme.org

// ******* Includes *************
require_once 'backup/mysql_db_backup.class.php';
require(
"backup/Mail.php");
require(
"backup/AttachmentMail.php");
require(
"backup/Multipart.php");
// ******************************

// ******* Configuracion ********
$lista_db[0]="bd_sigecor";
$lista_db[1]="db2";
$lista_db[2]="db3";
$lista_db[3]="db4";
$msg['titulo']="Respaldo BD";
$hora_local=time();
$usuario="root";
$password="";
$servidor="localhost";
$msg['destino']="[email protected]";
$msg['autor']="[email protected]";
// ******************************
// Instanciamos Objetos , Variables Iniciadas
$backup_obj = new MySQL_DB_Backup();
$correo = new AttachmentMail($msg['destino'], $msg['titulo'], ""$msg['autor']);
$pesototal=0;


// Comenzamos la Creacion de los Archivos
for ($i=0;$i<count($lista_db);$i++)
{
    
// Confg del Objeto
    
$backup_obj->server $servidor;
    
$backup_obj->port 3306;
    
$backup_obj->username $usuario;
    
$backup_obj->password $password;
    
$backup_obj->database $lista_db[$i];
    
    
// Opciones del Objeto
    
$backup_obj->drop_tables true;
    
$backup_obj->create_tables true;
    
$backup_obj->struct_only false;
    
$backup_obj->locks true;
    
$backup_obj->comments true;
    
$backup_obj->backup_dir './';
    
$backup_obj->fname_format 'm_d_Y';
    
$backup_obj->null_values = array( '0000-00-00''00:00:00''0000-00-00 00:00:00');
    
$task MSX_SAVE;
    
$filename $lista_db[$i].'.sql.gz';
    
$use_gzip true;
    
$result_bk $backup_obj->Execute($task$filename$use_gzip);
    if (!
$result_bk)
    {
        
$output $output.$backup_obj->error;
    }
    else
    {
        
$output $output.'
Resp DB : '
.$lista_db[$i].'
Nombre : '
.$lista_db[$i].'.sql.gz
Tamaño : '
.filesize($lista_db[$i].'.sql.gz').' bytes
--------------------------------'
;
        
$peso=filesize($lista_db[$i].'.sql.gz');
        
$pesototal=($pesototal+$peso);
    }
    
}

// Listo tenemos Creados los Archivos
// Hacemos Bucle para Adjuntarlos al Email

for ($i=0;$i<count($lista_db);$i++)
{    
     if ( 
file_exists($lista_db[$i].'.sql.gz') )
     {
        
$correo->addAttachment( new Multipart($lista_db[$i].'.sql.gz') );    
    }
    
}
$correo->addTo($addTo);
// *** Mensaje ***
$msg['msg'] = 'Sistema Automatizado de Respaldo de Db

'
.$output.'

Tamaño Total Adjunto : '
.$pesototal.' bytes
Hora y Fecha : '
.date(" H:i d/m/Y ",$hora_local).'
'
;
// *** Fin Mensaje ***
// Adjuntamos Mensaje al Correo
$correo->setBodyHtml($msg['msg']);
$correo->setPriority(ABSTRACTMAIL_NORMAL_PRIORITY);
// Enviamos
if ( $correo->send() )
{
    echo 
'Respaldo y Envio de Correo Exitoso<br>Mensaje :<br><pre>'.$msg["msg"].'</pre>';
}
else
{
    echo 
'Surgerion Problemas al Enviar el Correo';    
}



?>
Que tiene lo mismo que el ejemplo de Deer en la página "index.php" salvo que personalizo la parte de congifuración:

Código PHP:
// ******* Configuracion ********
$lista_db[0]="bd_sigecor";
$lista_db[1]="";
$lista_db[2]="";
$lista_db[3]="";
$msg['titulo']="Respaldo BD";
$hora_local=time();
$usuario="root";
$password="";
$servidor="localhost";
$msg['destino']="[email protected]";
$msg['autor']="[email protected]"
Eso es lo que hago.
Dentro de ese sitio corro otras cosas que tengo en PHP y se comportan bien.

Deer hacia un comentario sobre "permisos 666 ó 777 en el directorio". eso no lo entiendo muy bien. Él dice que el directorio debe tener permisos para escribir (666 o 777). (AUNQUE NO CREO QUE ESE SEA MI PROBLEMA EN ESTE INSTANTE, PORQUE CUANDO EJECUTO EL SCRIPT ME APARECE TODO EL PHP). Como se si tengo el directorio habilitado con esos permisos?

Y bueno mi servidor local es el EasyPHP como lo comente antes, no se si sea cuestión que falte alguna extensión por habilitar.

Bueno gracias, espero haberme explicado y que puedan asesorarme.
  #10 (permalink)  
Antiguo 04/07/2007, 18:36
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 7 meses
Puntos: 70
De acuerdo Re: Hacer backup a la base de datos.

Hola de nuevo hharris!!

Pues entrar a descartar posibilidades es muy engorroso, o al menos que entre Deer y mire...

De todas formas, intentè pegar el còdigo que tengo para que lo probaras y no me dejo por que es muy extenso

Sabes como adjuntar archivos, para mandartelo?? sino dime y lo subo a mi web para dartelo entonces vale??. Es solo un archivo php, modificas 4 o 5 lìneas(de configuraciòn) y ya!!!

Saludos!
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #11 (permalink)  
Antiguo 05/07/2007, 10:00
 
Fecha de Ingreso: febrero-2007
Mensajes: 28
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Hacer backup a la base de datos.

Hey Carxl..

Umm, de verdad no se adjuntar archivos por acá.

Si, puede ser que lo subas a tu sitio y lo descargue por ahí, o lo puedes enviar a mi mail: harrisduque(arroba)gmail(punto)com

Gracias por tu interes, espero me sirva tu código!!!

Ójala y Deer pueda opinar sobre lo que me pasa..

Hasta pronto
  #12 (permalink)  
Antiguo 08/07/2007, 17:12
 
Fecha de Ingreso: febrero-2007
Mensajes: 28
Antigüedad: 17 años, 1 mes
Puntos: 0
De acuerdo Re: Hacer backup a la base de datos.

Hey Carxl espero que estés bien!!!

No recibí noticias de ti sobre el respaldo de la base de datos.

A propósoto de eso, le comente mi priblema a un amigo, y el me sugirió que utilizara WAMP o XAMP, en vez del EasyPHP, pues este paquete le había dado problmas.

Entonces instalé el WAMP5, probe de nuevo el script de Deer y ahora ya no tengo el problema que me mostraba el código php, como si no estubiese habilitado!

No obstante, me genera un error respecto a la librería SMTP. Dice lo siguiente:

"Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in c:\wamp\www\back\backup\AttachmentMail.php on line 77"

No estoy seguro, pero creo que es lea librería que se necesita para enviar el correo, porque e localhost, no puede hacerlo por el mismo.

El punto es que no se como debo configurar el PHPMailer (que utiliza Deer en el código).

Qué me sugieren?

Saludos...
  #13 (permalink)  
Antiguo 08/07/2007, 17:21
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 3 meses
Puntos: 17
Re: Hacer backup a la base de datos.

Cita:
Iniciado por hharris Ver Mensaje
Hey Carxl espero que estés bien!!!

No recibí noticias de ti sobre el respaldo de la base de datos.

A propósoto de eso, le comente mi priblema a un amigo, y el me sugirió que utilizara WAMP o XAMP, en vez del EasyPHP, pues este paquete le había dado problmas.

Entonces instalé el WAMP5, probe de nuevo el script de Deer y ahora ya no tengo el problema que me mostraba el código php, como si no estubiese habilitado!

No obstante, me genera un error respecto a la librería SMTP. Dice lo siguiente:

"Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in c:\wamp\www\back\backup\AttachmentMail.php on line 77"

No estoy seguro, pero creo que es lea librería que se necesita para enviar el correo, porque e localhost, no puede hacerlo por el mismo.

El punto es que no se como debo configurar el PHPMailer (que utiliza Deer en el código).

Qué me sugieren?

Saludos...
Respecto al EasyPHP, creo que estabas usando el EASYPHP2 que viene con PHP5, por defecto este viene configurado para aceptar solo etiquetas largas de PHP (<?php ) y no las cortas, debes configurar en el php.ini esta restricion ( short_open_tag = On ).

Ya sobre el Error que te indica, es que localhost (tu PC ) no es escucha atravez del puerto 25 para poder enviar el correo electronico, sucede por que no tienes instalado ninguna aplicacion que permita enviar corrreos atravez del smtp. Utiliza el mini realy, una aplicacion muy simple pero permite enviar correos atravez de tu computador


Saludos

PD : Lo mas seguro esque el correo llege a la carpeta SPAM, ya que fue enviado desde tu propia PC , y generalmente correos como hotmail,yahoo,etc... marcan esos correos como spam.
  #14 (permalink)  
Antiguo 09/07/2007, 22:39
 
Fecha de Ingreso: febrero-2007
Mensajes: 28
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Hacer backup a la base de datos.

Gracias Deer.
En efecto el problema con el EasyPHP 2 eran las etiqutas cortas.

una pregunta con respecto al mini relay: ¿Cómo debo usarlo?
¿ejecuto el .exe y ya o necesito configurar algo?

Otra cosa, a parte de enviar el respaldo de la BD por correo, es posible a través de este código forzar una descarga del archivo a un directorio local?

Gracias, saludos.
  #15 (permalink)  
Antiguo 09/07/2007, 23:17
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 3 meses
Puntos: 17
Re: Hacer backup a la base de datos.

Cita:
Iniciado por hharris Ver Mensaje
Gracias Deer.
En efecto el problema con el EasyPHP 2 eran las etiqutas cortas.

una pregunta con respecto al mini relay: ¿Cómo debo usarlo?
¿ejecuto el .exe y ya o necesito configurar algo?

Otra cosa, a parte de enviar el respaldo de la BD por correo, es posible a través de este código forzar una descarga del archivo a un directorio local?

Gracias, saludos.
Sips ejecuta el minirelay y de inmediato queda escuchando en el puerto 25 para enviar correos atravez de tu pc, asi q debes tenerlo abierto antes de ejecutar el script.

Como ves el Script, ademas de enviarlo por correo, guarda el backup en el directorio donde se esta ejecutando el script, ve como se llama el archivo, nombre_base_datos.sql.gz asi que, para forzar la descarga ademas, tendrias que eliminar todas las etiquetas que impriman (echo) y abrir el archivo resultante con la funcion read().

Aunque es mas comodo, que imprimieras los enlaces para descargar los archivos , ya que de esta manera puedes bajar varias bd que le haz echo backup.

Saludos
  #16 (permalink)  
Antiguo 11/07/2007, 18:57
 
Fecha de Ingreso: febrero-2007
Mensajes: 28
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Hacer backup a la base de datos.

Oye Deer, y una vez que tengo el archivo .sql, como sería el proceso de restauración desde PHP?

Gracias.

Saludos
  #17 (permalink)  
Antiguo 11/07/2007, 23:23
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 3 meses
Puntos: 17
Re: Hacer backup a la base de datos.

Cita:
Iniciado por hharris Ver Mensaje
Oye Deer, y una vez que tengo el archivo .sql, como sería el proceso de restauración desde PHP?

Gracias.

Saludos
El archivo .sql tiene las consulta en SQL para pode restaurar la bd.

Una opcion es utilizar phpmyadmin, desde linea de comandos, o desde PHP realizar toda la consulta del archivo.


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