Inicio Apuntes FPApuntes DAWCómo respaldar tu base de datos MySQL con PHP

Cómo respaldar tu base de datos MySQL con PHP

Publicado por entreunosyceros
Publicado el: Última actualización:

AVISO: Esta entrada tiene más de dos años desde su publicación. Es posible que el contenido esté desactualizado.

respaldar mysqlBuscando en los marcadores del navegador me he encontrado un enlace que me ha salvado un poco la vida. Se trata de un fichero para realizar copias de seguridad de bases de datos MySQL ejecutando tan solo un fichero (esto es muy útil cuando un «cliente» quiere realizar habitualmente una copia de seguridad de su base de datos y no quiere entrar dentro de phpMyAdmin ni cosas así). El caso es que añadiéndole una interfaz más o menos bonita podemos ofrecer una manera simple y fácil de realizar las copias de seguridad.

Bueno, antes del código decir que este código no es mío, pertenece a David Walsh, yo lo único que hice es adaptarlo a mis necesidades. En futuros posts quizás añada el interfaz de usuario que le he añadido. Y bueno, ahora el código del archivo, que evidentemente habrá que guardarlo en un archivo php (respaldobd.php por ejemplo).

Respaldar una base de datos MySQL con PHP

backup_tables('servidor','usuario','contraseña','bd');

//En la variable $tables puedes agregar las tablas especificas separadas por comas:
//cosas,cosos,cosicos
//O déjalo con el asterisco '*' para que se respalde toda la base de datos

function backup_tables($host,$user,$pass,$name,$tables = '*')
{

   $link = mysql_connect($host,$user,$pass);
   mysql_select_db($name,$link);

   //obtener todas las tablas
   if($tables == '*')
   {
      $tables = array();
      $result = mysql_query('SHOW TABLES');
      while($row = mysql_fetch_row($result))
      {
         $tables[] = $row[0];
      }
   }
   else
   {
      $tables = is_array($tables) ? $tables : explode(',',$tables);
   }

   //ciclo para recorrer
   foreach($tables as $table)
   {
      $result = mysql_query('SELECT * FROM '.$table);
      $num_fields = mysql_num_fields($result);
      $return="";
      $return.= 'DROP TABLE '.$table.';';
      $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
      $return.= "nn".$row2[1].";nn";

    for ($i = 0; $i < $num_fields; $i++)
      {
         while($row = mysql_fetch_row($result))
         {
            $return.= 'INSERT INTO '.$table.' VALUES(';
            for($j=0; $j<$num_fields; $j++)
            {
               $row[$j] = addslashes($row[$j]);
               $row[$j] = preg_replace('/n/','/\n/',$row[$j]);
               if (isset($row[$j])){$return.= '"'.$row[$j].'"';}else{$return.='""';}
               if ($j<($num_fields-1)) { $return.= ','; }
            }
            $return.= ");n";
         }
      }
      $return.="nnn";
   }

   //guardar en un archivo .sql
   $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
   fwrite($handle,$return);
   fclose($handle);
}

Al ejecutarse se va a generar un archivo .sql en la carpeta donde se encuentra el archivo de la función.

Quiero aclarar que esto es lo que a mi me ha valido. El código no guarda las relaciones entre tablas, y guarda los nombres de las tablas sin espacios (ya que a quién le interesó tenía los nombres de sus tablas con guiones bajos, no con espacios).

Como he dicho anteriormente, en próximas entregas quizás publique también el interfaz de usuario que se le puede añadir a este fantástico script. En esa interfaz también he añadido una opción para restaurar estas copias de seguridad, si no se dispone de ella supongo que la manera más sencilla de restaurar esta copia de seguridad será mediante phpMyAdmin.

También te puede interesar ...

Deja un comentario

* Al utilizar este formulario, aceptas que este sitio web almacene y maneje tus datos.

1 Comentario

quiquex 31 enero, 2016 - 2:10 AM

Gracias por compartirlo

Respuesta
Resumen de privacidad
cookies entreunosyceros

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible.

La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudarnos a comprender qué secciones de la web encuentras más interesantes y útiles.

Nunca almacenamos información personal de ningún tipo.

Tienes toda la información sobre privacidad, derechos legales y cookies en nuestra página sobre la política de privacidad o en la página sobre nuestra política de cookies.

Cookies necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Si desactivas esta cookie no podremos guardar tus preferencias. Esto significa que cada vez que visites esta web tendrás que activar o desactivar las cookies de nuevo.

Cookies de terceros

Esta web utiliza las siguientes cookies adicionales:

- Mailchimp: Recordar si ya estás suscrito al boletín de noticias y sino ofrecértelo al salir.

- Accesibilidad: Para saber tus ajustes de accesibilidad en cada visita.

- Comentarios: Saber si has leído y aceptado nuestra política de privacidad a la hora de dejar un comentario en la web.

- Google Analytics: Localización para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

- Goggle Adsense: Anuncios personalizados según tu geolocalización y preferencias.

Dejar estas cookies activadas nos permite mejorar nuestra web.

Adblock Detectado!!

Ayúdanos deshabilitando la extensión AdBlocker de tu navegador para visitar esta web.
Si no sabes hacerlo en Chrome, consulta el siguiente enlace. Si utilizas Firefox, puedes consultar este otro enlace.
Esto mejorará tu experiencia en este sitio web.