jueves, 17 de junio de 2010

Script PHP para hacer respaldo de nuestra Base de Datos

Cuando tenemos un WebSite dinámico o un sistema web usando base de datos, regularmente es recomendable hacer respaldos de la base de datos; eso a muchos de nosotros nos dá mucha pereza por lo que consiste en entrar al administrador de base de datos(PhpMyAdmin), pero no queda de otra que hacerlo por seguridad y prevención.
Es por ese motivo buscando en la red he logrado encontrar un Script PHP que automatiza todo el proceso, es decir, que puedes hacer el respaldo de tu PC con solamente un clic.
A continuación describo textualmente el funcionamiento del mismo, tomado de la página fuente.
1.- Su funcionamiento es simple:
  • Cada vez que se lanza el script, se crea el Dump de la Base de Datos completa.
  • El Dump se crea comprimido si el servidor tiene capacidad para ello.
  • El Dump se crea con el nombre de la base de datos y extensión ‘.gz’ o ‘.sql’ según tenga el server o no, capacidad de compresión, respectivamente.
  • El Dump creado se salva en la misma carpeta en que está el script.
  • El Dump puede descargarse del server al ordenador desde la misma ventana del navegador.
  • Cuando se lanza el script, no se obtiene el resultado en la ventana del navegador hasta que el dump finaliza. Eso significa que con una gran base de datos sin comprimir de 1000 Mb (1 Gb), por ejemplo, el resultado tardará en aparecer tres minutos aprox., dependiendo de la velocidad del server.
  • Cuando se lanza el script, no cerrar ni hacer nada con esa ventana del navegador, hasta que el script concluya y muestre el resultado.
2.- Restore la Base de Datos
  • Cada vez que se lanza el script, se borra la estructura de la base de datos y se restituye el contenido del dump que, con nombre igual al de la base de datos y extensión ‘.gz’ o ‘.sql’ según tenga el server o no, capacidad de compresión, respectivamente, está en la misma carpeta que el script.
  • Cuando se lanza el script, no se obtiene el resultado en la ventana del navegador hasta que el restore finaliza.
  • Cuando se lanza el script, no cerrar ni hacer nada con esa ventana del navegador, hasta que el script concluya y muestre el resultado.
  • Los scripts procesan query a query, lo que significa que da igual el tamaño de la base de datos a dumpear o restorear… que puede ser de gigas.
  • Los scripts dumpean o restorean la base de datos sin importar si ésta pertenece a un foro y qué tipo de foro, a un portal y qué tipo de portal, etc… en síntesis, los scripts son universales.
  • Se podría hacer más bonito y más complicado pero no merece la pena, de lo que se trata es de hacer el backup o restore de una base de datos en un simple click, no de hacer monadas.
    Distribuyo los scripts bajo los términos de la Licencia GNU de Documentación Libre (GFDL, GNU Free Documentation License).
Puedes descargarlo aquí: http://www.zoneartcss.com/wp-content/uploads/2010/03/dump_y_restore_db_1.1.1.zip
MI CODIGO:
Sin embargo mi necesidad es algo particular ya que tengo habilitado que se haga el respaldo de mi base de datos sin necesidad de apretar un botón, sino que lo haga de manera automática pero cargando una página web(esto es mi necesidad, la suya puede ser otra :)
He aquí el código que implementé:
$sql="SELECT MAX(fecha_usado) AS fecha_de_ayer FROM contacto;";
$res=mysql_query($sql);
$row=mysql_fetch_array($res);

$dia_respaldado=$row["fecha_de_ayer"];
$dia_respaldado=strftime("%Y-%m-%d",strtotime($dia_respaldado));

$FileName=$db."-".$dia_respaldado.".sql";
$backupRoute="/var/www/respaldo_db/";
$command = "mysqldump --opt --host='$localhost' --user='$user' --pass='$passwd' '$db' > ".$backupRoute.$FileName;
exec($command);