Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: EuroHack en 23 Octubre 2009, 17:29 pm



Título: Script php Backup MySQL
Publicado por: EuroHack en 23 Octubre 2009, 17:29 pm
¿Alguien sabe un Script para hacer Backup de MySQL?

Estoy 3 días probando el siguiente script y no e conseguido que funcione, el servidor es linux.

Código:
<? 
// Nombre del archivo de con el cual queremos que se guarde la base de datos
$filename = "fichero.sql"; 
// Cabeceras 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="space_4134845";  // Usuario de la base de datos, un ejemplo podria ser 'root'
$passwd="*****";  // Contraseña asignada al usuario
$bd="space_4134845_Nuke";  // Nombre de la Base de Datos a exportar
 
// Funciones para exportar la base de datos
$executa = "/mysql/bin/mysqldump -u $usuario --password=$passwd --opt $bd";
system($executa, $resultado);
 
// Comprobar si se ha realizado bien, si no es así, mostrará un mensaje de error
if ($resultado) { echo "<H1>Error ejecutando comando: $executa</H1>\n"; }
 
?>

E estado siguiendo los pasos que me decían en http://www.forosdelweb.com/f86/script-php-backup-mysql-746295/#post3134722 pero no e conseguido hacerlo funcionar.


Script de
http://www.forosdelweb.com/wiki/PHP:%C2%BFC%C3%B3mo_exportar_mi_base_de_datos_a_un_archivo_%27archivo.sql%27%3F


Título: Re: Script php Backup MySQL
Publicado por: Red Mx en 23 Octubre 2009, 17:51 pm
Pues puedes hacerlo de muchas formas yo por ejemplo tengo una carpeta reservada para esto.

Si tu server es linux y puedes programar un cron ya estas del otro lado


backupalldatabases.sh
Código
  1. #!/bin/bash
  2.  
  3. # Ruta en la que se guarda el log de la operacion de backup.
  4. logfile="/home/integra/public_html/ic/mysql.log"
  5.  
  6. # Ruta en la que guardar los backups
  7. backup_dir="/home/integra/public_html/ic"
  8.  
  9. # Usuario de MySQL si es Cpanel tu usuario y contraseña de Cpanel
  10. username="****"
  11. password="**"
  12.  
  13. # Creamos un nuevo log del proceso de backup
  14. rm -rf $logfile
  15. touch $logfile
  16.  
  17. # Mediante esta instruccion, generamos un nombre de fichero con el dia y la hora del proceso de backup.
  18. timeslot=`date +%Y%m%d_%H%M`
  19.  
  20. cd $backup_dir
  21.  
  22. # Iteramos a traves de la lista de bases de datos a la que el usuario tiene acceso.
  23.  for BBDD in $( mysql -u $username --password=$password -h localhost -Bse 'show databases' ); do
  24.        echo "Creando copia de seguridad de $BBDD"
  25.  
  26.        # Volcamos la base de datos en un fichero temporal
  27.        mysqldump --user=$username --password=$password $BBDD > datos.sql
  28.  
  29.        # Y lo comprimimos en un tar.bz2 para ocupar lo mínimo. Util en bases de datos grandes.
  30.        tar cvjf mysql-$BBDD-$timeslot.tar.bz2 *.sql
  31.  
  32.        # El nombre del fichero resultante contiene el nombre de la base de datos y la fecha de la copia.
  33.        # De esta manera, cuando sea necesaria su restauracion sera mas sencillo de localizar.
  34.  
  35.        echo "Backup completo en la base de datos: $BBDD (mysql-$BBDD-$timeslot.tar.bz2)" >> $logfile
  36.  
  37.        # Borramos el fichero temporal
  38.        rm datos.sql
  39.  done
  40. #-------------------------------------------------
  41.  
  42. #
  43. # Finalmente podemos enviar un email con el log de acciones para tener controlado el proceso de copia
  44. #
  45. #cat $logfile|mail -s "Proceso Backup $HOSTNAME = MySQL" <tu@mail.com>

Asi te hara un backup de todas tus base de datos te las comprime y te las deja listas para usarse, en la tarea cron puedes configurar cada cuando y a que hora quieres que haga el backup.

las rutas que hay son de ejemplo que tengo con un cliente cámbialas por las tuyas


Título: Re: Script php Backup MySQL
Publicado por: EuroHack en 23 Octubre 2009, 18:54 pm
Gracias, acabo de encontrar otro que esta bueno. = http://www.phpmybackuppro.net/opinion.php lo que no me gusta es que tengo que meter el mismo loguin que MySQL.

1 Salu2


Título: Re: Script php Backup MySQL
Publicado por: ^Tifa^ en 26 Octubre 2009, 21:02 pm
Mysqldump hace backups logicos no fisicos. Con un script en crontab como te dice el amigo aca podrias hacer el dumpeo de las tablas (Que para mejor atomicidad es preferible bloquear las tablas en modo lectura, o pasarle los parametros correspondientes a mysqldump para que lo haga por ti... en este caso  --opt ) y para mayor rapidez de dumpeo, puedes desabilitar temporalmente las llaves he indices --disable-keys

Mi recomendacion de bloquear tablas ante lectura/escritura es por el mero hecho que utilizar mysqldump sin parametros, hara un backup logico de la estructura de las tablas bloqueando cada campo correspondiente por donde vaya mysqldump, digase, una tabla con los valores:

nombres char  --> (suponte que tienes 5,000 registros)
apellidos char --> (suponte que tienes 5,100 registros)

Ahora usas mysqldump sin parametros:

mysqldump bloquea a modo lectura/escritura (mientras va haciendo el dump) el campo :
nombres char

Sin embargo el campo (apellidos char) donde mysqldump aun no ha llegado (No llegara hasta que no termine de archivar los 5,000 registros del campo nombre) en el campo apellidos aun sigue vigente sin ningun tipo de bloqueos y cualquier usuario si tiene capacidad de realizar cualquier tipo de transaccion (UPDATE, INSERT, DELETE) en el campo apellidos, cuando mysqldump termine de archivar nombres, pasara a apellidos por ende desbloqueara el campo nombres y bloqueare el campo apellidos para realizar el mismo proceso, por lo tanto en lo que va archivando campo apellidos (que esta bloqueado vs escritura) cualquier dato puede ser insertado o actualizado en el campo 'nombres' y NO, estos ultimos datos no seran parte del backup que esta realizando mysqldump, ya mysqldump termino con el campo 'nombres' y no volvera para atras, por ende este tipo de backup puede quedar inconsistente (por falta de datos en tiempo real).

Pero si bloqueas las tablas antes de iniciar el dump, como no es posible escribir en ninguno de los campos de una tabla, todos los datos seran consistentes y actuales  ;)  Al menos que quieras hacer el backup de manera fisica con mysqlhotcopy pero eso ya es otra historia.


Título: Re: Script php Backup MySQL
Publicado por: дٳŦ٭ en 26 Octubre 2009, 21:22 pm
No, no te va a salir si tu host tiene el safe mod prendido.. system().

Prueba lo que te dice mi amigo Rojo y Tifa. Saludos.


Título: Re: Script php Backup MySQL
Publicado por: EuroHack en 1 Noviembre 2009, 21:08 pm
No me funciona el codigo que a puesto Red Mx.


Título: Re: Script php Backup MySQL
Publicado por: Red Mx en 2 Noviembre 2009, 00:52 am
No me funciona el codigo que a puesto Red Mx.

programaste el cron y vaya tiene permisos para ejecutar el archivo (CHMOD 777)  tienes las rutas correctamente?


Título: Re: Script php Backup MySQL
Publicado por: EuroHack en 2 Noviembre 2009, 11:32 am
sitiene 777,lo de cron no se que es. pero los datos de login ya los e puesto.


Título: Re: Script php Backup MySQL
Publicado por: Red Mx en 2 Noviembre 2009, 17:16 pm
sitiene 777,lo de cron no se que es. pero los datos de login ya los e puesto.




Solo no funciona te lo aseguro.

En el sistema operativo Unix, cron es un administrador regular de procesos en segundo plano (demonio) que ejecuta procesos o scripts a intervalos regulares (por ejemplo, cada minuto, día, semana o mes). Los procesos que deben ejecutarse y la hora en la que deben hacerlo se especifican en el fichero crontab.

Cron se podría definir como el "equivalente" a Tareas Programadas de Windows.


Desde tu panel de control del hosting es muy sencillo

http://tu dominio:2082/frontend/x3/cron/index.html


http://www.google.com.mx/search?client=opera&rls=es-LA&q=Programar+Cron+Cpanel&sourceid=opera&ie=utf-8&oe=utf-8


Título: Re: Script php Backup MySQL
Publicado por: PussyLover en 23 Febrero 2012, 11:21 am
Gracias, acabo de encontrar otro que esta bueno. = http://www.phpmybackuppro.net/opinion.php lo que no me gusta es que tengo que meter el mismo loguin que MySQL.

1 Salu2

Acabo de probar tu solución, ya que andaba buscando algo parecido y es genial.

Muchisimas gracias por tu aporte.  ;-)