En: PHP
21 Feb 2007
Existen varias maneras de respaldar base de datos MySQL, en este post unicamente mostraré una manera de hacerlo utilizando mysqldump() y PHP.
Basicamente lo que se realiza es un resplado de todas las bases de datos, por lo que el script debe ejecutarse como un usuario que tenga permisos sobre todas las bases. Adicionalmente se mantiene en disco las ultimas 3 copias de los respaldos.
<?php// Realiza el Backup de las bases de datos$bdd = "--all-databases";$opt = "";$backupFile = date("Y-m-d-H-i-s") . '.gz';$command = "mysqldump --opt $opt $bdd | gzip > $backupFile";exec($command, $salida);// Mantiene los ultimos 3 backups$days=3;$archivos = scandir("./");foreach ($archivos as $key => $val){if(substr($val,-2) != "gz")unset($archivos[$key]);}$i=count($archivos);foreach ($archivos as $key => $val){if($i<=$days)break;unlink($val);$i--;}?>Descargar el código: backup
Este post ha sido visto 7106 veces
Inspiración y Determinación |
En Blog UnderMedia se recopilan y publican periódicamente noticias, artículos o comentarios generados dentro de UnderMedia S.A.
9 nomentarios para Respaldar Base de Datos MySQL con PHP
gama
Septiembre 21st, 2007 at 16:15
oyes y la conexcion como quedaria?
y para programarlo en cron tambien?
neTo
Septiembre 22nd, 2007 at 10:45
La idea es ejecutarlo con un cron de un usuario que tenga los permisos sobre las bases de datos de tal forma no requieres autenticarte, sin embargo si deseas especificarlo con otro usuario puedes cambiar la linea 7 asi:
$command = “mysqldump -p[password] -u user_name –opt $opt $bdd | gzip > $backupFile”;
para el cron solo basta con ejecutar el comando:
php ruta_archivo/archivo.php
especificando antes cada cuanto deseas que se ejecute el cron…. me avisas cualquier duda
javier
Octubre 4th, 2007 at 17:49
Esto no funciona en windows, yo tengo un servidor en windows 2000 y no realiza la copia.
Como seria bajo windows!
neTo
Octubre 5th, 2007 at 08:55
Que error te entrega?. Es posible que no tengas instalado mysqldump o que la ruta donde esta instalado no esta agregada en las variables de entorno de sisetma, especificamente a la variable PATH.
Enrique
Abril 24th, 2008 at 16:37
Hola q tal se que este post es muy viejo pero ahora tengo la necesidad de respaldar una BD, y necesito saber que cargo en la varianle $opt?
Agradesco su ayuda.
neTo
Abril 25th, 2008 at 07:35
No es necesario colocar nada, si deseas puedes utilizarla para agregar comandos al mysqldump() como por ejemplo, si deseas especificar el protocolo podrias utilizar la variable $opt asi:
$opt =’–protocol=SOCKET’
Como digo, en realidad es una variable abierta para especificar comandos adicionales.
Enrique
Abril 27th, 2008 at 14:59
Ok gracias por el aporte, en realidad ejecuto el script, pero me cra el respaldo sin archivos, es decir, crea el punto zip, pero con 0 bytes, sin nada de información.
Agradezco de antemano su ayuda.
neTo
Abril 28th, 2008 at 10:48
Enrique, de lo que entiendo estas ejecutando el script desde un navegador, este esta diseñado para ejecturalo con un cron job (o tarea programada) del usuario root en linux. Entiendo que ese es el problema, ahora lo que puedes hacer es agregarles los parametros en la variable $opt para que especifiques el usuario y contraseña que tiene acceso a las bases de datos que deseas respaldar.
Te puedes informar de todos los comandos adicionales de mysqldump() en http://dev.mysql.com/doc/refman/5.0/es/mysqldump.html
Pablo Veintmilla
Agosto 7th, 2009 at 16:15
Desde consola podríamos usar:
mysqldump –opt -u usuario -p basedadatos tabla > archivo.sql
Tabla es opcional, lo usamos si queresmos respaldar solo una tabla
Archivo es el nombre de archivo donde se guardará el respaldo.