Inicio » Trucos Informáticos » Sitios web » Backup y restore

Backup y restore

Muchos webmasters necesitamos de vez en cuando efectuar un backup de la base de datos. Podemos utilizar phpMyAdmin si el peso de las tablas es pequeño. Si el sistema permite una conexión remota, existe una utilidad que nos puede ayudar: MySQL-Front. También podemos subir a nuestro servidor web, a través del FTP, phpMyBackupPro y ejecutar los distintos scripts, a través de diferentes menús, después de una sencilla configuración.

Backup y restore

Pero todo lo anterior se puede reducir a la instalación de dos sencillos scripts: uno para efectuar la copia de seguridad y otro para llevar a cabo la restauración. Se pueden utilizar para llevar a cabo una migración de una base a otra, en el mismo o en distintos servidores; todo es configurable. Veamos los pasos:

Backup (Copia de seguridad)

Creas un script (al que puedes llamar backup.php), como el que pongo a continuación, que subirás al directorio raíz (o a un directorio nuevo al que puedes llamar copias) de tu servidor FTP. Ejecutas el script, después de poner los datos adecuados:

Debes sustituir localhost por la dirección de tu servidor de base de datos actual; usuario por el nombre de usuario; contraseña por la contraseña; base por el nombre de la base de datos.

Ejecutado el script anterior desde tu navegador web, aparecerá en el directorio raíz (o en el que has creado) de tu servidor un archivo sql llamado copia.sql. (Para que se pueda crear dicho archivo, el directorio en el que se va a alojar ha de tener permisos de lectura y escritura: CHMOD 777 o CHMOD 775). Lo bajas a tu ordenador y lo subes al nuevo servidor. (Esto siempre que cambies de servidor).

Restore (Restaurar base de datos)

Creas un script, al que llamas restaura.php, para restaurar la base de datos en el nuevo servidor. Sería como el siguiente, con las sustituciones pertinentes (tendrás que subirlo al directorio raíz o al directorio copias, en el que se encuentra o subes copia.sql):

Harías lo mismo que hiciste anteriormente, pero ahora llamando a restaura.php desde tu navegador web. Cuando finalices la restauración, acuérdate de borrar todos los archivos que has subido y el que ha creado el proceso.

Esta es una forma de realizar una copia y, posterior restauración, de cualquier base de datos. Sólo en casos muy especiales no es efectivo.

Artículos relacionados

Acerca de fabriciano

Amante de la informática y de Internet entre otras muchas pasiones. Leo, descifro, interpreto, combino y escribo. Lo hago para seguir viviendo y disfrutando. Trato de dominar el tiempo para que no me esclavice.

14 Opinan

  1. saludos de verdad gracias por tomarte la molestia de revisar y ayudarme te cuento que ya e solventado varias cosas solo me queda una, y es que estoy tratando de importar mi base de datos en .zip y no puedo me da error el codigo que estoy utilizando esta aca http://www.ozerov.de/bigdump.zip me funciona bien solo con .sql o .gz o .csv pero no con zip si me puedes ayudar con eso te lo agradecería mucho.

    • ¿Qué proceso has seguido para hacer la exportación, para conseguir el archivo ZIP que indicas? Si descomprimes el archivo bigdump.zip, comprobarás que no se trata de un archivo SQL sino de un archivo PHP.

      Saludos.

  2. gracias por responder te cuento el codigo que te envie con el que tengo la duda es de aqui de esta pagina http://www.forosdelweb.com/f18/aporte-sistema-respaldo-restauracion-bases-datos-920487/

    mi problema es el siguiente soy algo nuevo en esto pero entiendo un poco me piden en clases que cree un pequeño script en php que por medio de un formulario yo ingrese datos, estos datos iran a mi base de datos, pero adicional a esto que tenga dos botones uno para yo tener la posibilidad de realizar un backup y el otro para restaurarla, he logrado con el código que te envié y me realiza en backup pero lo guarda en blanco no se si me podrias ayudar con eso agradeciendo de ante mano por el tiemp oque te tomas para responder

    • Si el archivo de copia está en blanco, es por que no se ejecuta mysqldump. Habría que averiguar la ruta de la llamada en tu servidor para cambiarla en el script backup.php.

      Lo normal es que el servidor ejecute ese comando, pero no puedo decir lo mismo si lo estás probando en un servidor local, en tu ordenador. En ese caso tendrías que poner la ruta completa. Algo similar a lo siguiente: /Applications/MAMP/Library/bin. (He puesto la ruta de acceso en un ordenador con Mac OS X y MAMP como gestor del servidor local).

      Saludos.

  3. saludos tengo una duda con tu codigo
    <?php
    echo "Su base esta siendo restaurada…….\n”;
    system(“cat copia.sql | mysql –host=localhost –user=root –password= base”);
    echo “Fin. Su base está emplazada en su alojamiento.”;
    ?>

    entiendo que copia.sql es el archivo a restaurar pero como lo va a exportar si no sabe en que lugar se encuentra yo tengo el siguiente codigo para restore.php que lo e conseguido pero tengo un problema pues no doy como configurar la linea $contenidoDeFormulario=”<form action='restoreback.php' method='post' puesto que el archivo restoreback.php no termino de entender como crearlo.

    <?php
    include ("conexion.php");
    echo'Restauracion’;
    if (!isset ($_FILES[“ficheroDeCopia”]))
    {
    $contenidoDeFormulario=”\n”;
    $contenidoDeFormulario.=”\n”;
    $contenidoDeFormulario.=”\n”;
    $contenidoDeFormulario.=”Indique el origen del archivo de copia: \n”;
    $contenidoDeFormulario.=”\n”;
    $contenidoDeFormulario.=”\n”;
    $contenidoDeFormulario.=”\n”;
    $contenidoDeFormulario.=”\n”;
    $contenidoDeFormulario.=”\n”;
    $contenidoDeFormulario.=”\n”;
    $contenidoDeFormulario.=”\n”;
    $contenidoDeFormulario.=”\n”;
    echo ($contenidoDeFormulario);
    }
    else
    {
    $archivoRecibido=$_FILES[“ficheroDeCopia”][“tmp_name”];
    $destino=”./ficheroParaRestaurar.sql”;

    if (!move_uploaded_file ($archivoRecibido, $destino))
    {
    $mensaje=’EL proceso ha fallado’;
    echo $mensaje;
    }
    $sistema=”show variables where variable_name= ‘basedir'”;
    $restore=mysql_query($sistema);
    $DirBase=mysql_result($restore,0,”value”);
    $primero=substr($DirBase,0,1);
    if ($primero==”/”) {
    $DirBase=”bin/mysql”;
    }
    else
    {
    $DirBase=$DirBase.”bin\mysql”;
    }
    $executa = “$DirBase -h $servername -u $dbusername –password=$dbpassword $dbname < $destino";
    system($executa,$resultado);
    if ($resultado)
    {
    echo "Error ejecutando comando: $executa\n”;
    $mensaje=”ERROR. La copia de seguridad no se ha restaurado.”;
    $cabecera=”COPIA DE SEGURIDAD NO RESTAURADA”;
    echo $mensaje;
    echo “”;
    }
    else
    {
    $mensaje2=”La copia de seguridad se ha restaurado correctamente.”;
    $cabecera2=”COPIA DE SEGURIDAD RESTAURADA”;
    echo $mensaje2;
    echo “”;
    }

    unlink (“ficheroParaRestaurar.sql”);

    }

    ?>

    • Fíjate en lo que explico que debes hacer después de crear copia.sql, tras la ejecución del primer script: “Lo bajas a tu ordenador y lo subes al nuevo servidor. (Esto siempre que cambies de servidor)“.

      Respecto al código que pones para la restauración tendría que analizarlo con detenimiento. En principio veo que necesita de otro archivo, conexion.php, así como indicar las rutas y nombres adecuados para la restauración.

      ¿Por qué no utilizas, tras hacer lo que te recuerdo en el primer párrafo, el archivo restaura.php que incluyo en el artículo?

      Saludos.

  4. Hola, mi problema no se si lo es… tenia una cuenta en un servidor pase todos los archivos por ftp a otro, pero no hice un backup de la base y no se si se puede recuperar ya que se me venció el servicio, tengo todos los archivos en mi pc pero no se si ahí puedo encontrar el archivo de base de datos, si no se encuentra tengo que diseñar todas las paginas nuevamente o se pueden abrir con una nueva base

    • En la base de datos se almacenan todos los contenidos, configuraciones, usuarios y demás. Sin esos datos el gestor de contenidos no funciona.

      Las bases de datos no se encuentran en el mismo servidor que guarda los archivos. Lo normal es que para acceder a una base de datos, generalmente una base MySQL, se utilice phpMyAdmin. Desde su interfaz se pueden hacer copias completas de tablas y contenidos. Si has perdido el acceso y no tienes posibilidad de que los proveedores del servicio te permitan hacer la copia, has perdido todos los datos.

      Saludos.

  5. perdone la pregunta y la opcion gt que hace en el comando?

    • Hola Julio,

      Perdona tú por el error. La porción de código “gt ;” no tenía ningún sentido en el comando de backup. Al hacer un cambio en el plugin de WordPress para mostrar código en los artículos se coló ese elemento. Ya está corregido.

      Saludos.

  6. Sin ofender pero una basura y perdida de tiempo no funciona para nada tendrias que quitar esto ya que haces perder el tiempo….

    • Lo de basura y pérdida de tiempo es tu opinión. Si tu servidor de base de datos no permite accesos externos, está claro que la aplicación de la que hablo no funcionará (Si el sistema permite una conexión remota, existe una utilidad que nos puede ayudar: SQL-Front). Respecto a los dos scripts, el de copia (backup) y restauración (restore), si que funcionan. Si no es así, se debe a que en tu servidor no está activado mysqldump.

      Saludos.

  7. Tengo una duda tonta.

    Dudo cual es mi dirección de la BBDD, ya que se ha creado directamente desde el panel de control de mi hosting. ¿Cómo puedo saber con certeza cual es? ¿La url que aparece cuando activo phpMyadmin, mi dominio/nombrebasedatos, localhost/nombrebasedatos?

    Soy neófito en esto y cualquier aclaración me sería de gran estima. Estoy frito de hacer pruebas.

    Gracias de antemano.

    • Para el acceso a la base de datos debes conocer:

      El servidor de la base de datos
      El nombre de la base de datos
      El nombre de usuario
      La contraseña

      Para averiguar todos estos datos tienes que recurrir al Panel de Administración de tu servidor, en la parte dedicada a la gestión de bases de datos. En phpMyAdmin (eso sí, dependiendo de como lo tengas configurado), puedes conocer el nombre de la base (el que aparece en la parte superior de las tablas) y el nombre del servidor (generalmente en la parte superior derecha).

      Saludos.

Deja un comentario