• +34 - 607 571 659
  • info@oscarperez.es

Backups automáticos de tus bases de datos Mysql

Backups automáticos de tus bases de datos Mysql

¿Que hacer cuando tienes que realizar backups de bases de datos de MySql? 

En algún momento nos hemos visto o nos veremos en la necesidad de realizar copias de seguridad de nuestras bases de datos de MySql que tenemos en nuestros servidores de producción. 

Si tenéis instalado el phpMyAdmin, realizar copias de seguridad es muy sencillo: Vas a la opción de Exportar, y con dar al botón de Continuar, y ya tendrías una copia de la base de datos.

¡Fácil y sencillo para toda la familia!. Pero como todos sabemos, los informáticos somos muy vagos; y lo de tener que acordarnos de hacer la copia de seguridad, entrar en el phpMyAdmin….. ¡y esto para cada uno de nuestros servidores! no va con nosotros. ¡¡Nosotros automatizamos tareas!!. No por que seamos eficientes sino porque sólo queremos trabajar una vez.

Si tenemos instalado WordPress en nuestro servidor, podéis utilizar plugins para realizar las copias de seguridad. El plugin que yo uso es el UpdraftPlus. ¿Por qué? Porque cuando empece con el WordPress me pareció el más sencillo de usar. Y para lo que yo necesito me vale. Me realiza una copia de seguridad de la base de datos y de los ficheros en la nube, cuenta FTP,…. La configuración es muy sencilla. Yo lo guardo en DropBox, por que me resulto lo más sencillo. 

Pero éste no es el caso que nos atañe: Necesitamos hacer una copia de seguridad automática de una base de datos de MySql, que está en un servidor externo, y en el que no hay instalado WordPress, Joomla, PrestaShop, Drupal …

Lo primero:

1. ¿Que necesitamos?

Una tarea automática que se ejecute cada cierto tiempo y nos haga la copia de seguridad de la base de datos MySql.

  • ¿Una tarea automática? Esto huele a cron que echa p’atrás
  • ¿base de datos MySql? Tenemos que instalar MySql en el ordenador donde vayamos a ejecutar la tarea

2. ¿Cómo lo vamos a hacer?

Yo utilizo ordenadores con sistemas Windows y Linux. Los Linux para los servidores, intranets…. y los Windows para el trabajo diario. Yo no soy anti-nada, y me manejo mejor para el trabajo diario con Windows que con Linux, principalmente por que todos mis clientes usan Windows.

Así que esta entrada se basará sobre hacer las copias de seguridad en un ordenador Windows, puesto que la copia de seguridad la realizo en los ordenadores de mis clientes. Para que ellos siempre dispongan de una copia de seguridad. Para los puristas del Linux, seguro que seréis capaces de trasladar estas explicaciones a vuestro entorno :-).

Seguimos… 

Tenemos que tener instalado MySql en nuestro ordenador. Si ya tenéis instalado en vuestro ordenador XAMPP, WampServer, o alguna otra plataforma de desarrollo Web, seguramente ya tenéis instalado el MySql, por que estas plataformas te lo instalan. Generalmente también instalan el phpMyAdmin, que es una herramienta web para administrar base de datos MySql. Si escribís en el navegador http://localhost/phpmyadmin/ y os responde con una página, eso es que ya tenéis instalado phpMyAdmin, y por consiguiente, también está el servidor MySql.

Si no tenéis instalado el servidor MySql os dejo un enlace para que realizar la instalación https://comoinstalar.me/como-instalar-mysql-en-windows/ , o podéis buscar en Google, hay infinidad de tutoriales.

Yo tengo instalado la plataforma XAMPP, y al instalar el MySql por defecto lo hace en la carpeta C:\xampp\mysql (si has modificado la ruta en la instalación, debes de ir a la ruta que se indicó al instalar XAMPP). Si usas WampServer, el directorio por defecto es C:\wamp\bin\mysql\mysqlX.X.XX\

Ya tenemos instalado MySql en nuestro ordenador. Ahora usaremos el comando mysqldump para realizar la copia de seguridad

El comando mysqldump está incorporado al servidor MySQL y gracias a ella, podremos realizar copias de seguridad (backup) de nuestras bases de datos, Lo que la hace una herramienta básica para gestionar bases de datos. Este comando te permite conectarte a la base de datos, crear una copia de todas las tablas y guardar toda ls información en un archivo. Este comando genera un fichero de texto, con todas las sentencias  necesarias para ralizar la copia de seguridad de la base de datos.

Sentencias CREATE, INSERT, ALTER TABLE….

El comando mysqldump tiene el siguiente  formato:

mysqldump -h[HOST] -u[USER] -p[CONTRASEÑA] [BASE_DE_DATOS] > [NOMBRE_ARCHIVO].sql

Donde:

-h[HOST] = HOST(donde está la base de datos)
-u[USER] = usuario (de la base de datos)
-p[CONTRASEÑA] = contraseña (del usuario de la base de datos)

[BASE_DE_DATOS] = nombre de la base de datos

[NOMBRE_ARCHIVO] = nombre del archivo donde se va a realizar la copia de la base de datos.

Por ejemplo, para hacer una prueba sencilla: si el servidor donde está la base de datos es localhost, el usuario de base de datos es root, la contraseña del usuario es claveroot y la base de datos se llama mydatabase, y queremos que el fichero se llame dataBaseBackup.sql, la sentencia sería

mysqldump -hlocalhost -uroot -pclaveroot mydatabase > dataBaseBackup.sql

Al ejecutar este sentencia varias veces, lo que hace es escribir sobre el fichero ya creado. Si queremos tener copias de seguridad de cada día, lo mejor es que el fichero generado tenga en su nombre la fecha. Para ello la sentencia sería así

mysqldump -hlocalhost -uroot -pclaveroot mydatabase > dataBaseBackup_%Date:~6,4%%Date:~3,2%%Date:~0,2%.sql

Esta sentencia creará ficheros de este tipo: dataBaseBackup_20191013.sql

Cómo ves, incluye la fecha de creación en el nombre del fichero, lo que luego nos facilitará el trabajo.

Ya tenemos la sentencia. ¿como la ejecutamos?

Para ello, vamos a crearnos un fichero .bat(recordar que estamos en un entorno Windows).

En un directorio nos creamos un fichero de tipo texto, por ejemplo: backup-base-de-datos.bat.  Lo editamos con un editor de textos que no inserte caracteres raros. Podemos usar el Notepad del propio Windows. 

Escribimos lo siguiente en el fichero:

echo off
mysqldump -hlocalhost -uroot -pclaveroot mydatabase > dataBaseBackup_%Date:~6,4%%Date:~3,2%%Date:~0,2%.sql
exit

Ejecutamos el fichero haciendo click con el botón derecho y seleccionando la opción «Ejecutar como Administrador»

 

Cuando se ejecuta este fichero, abré una ventana de la Consola de Windows, el famoso cmd

la sentencia echo off, lo que hace es que no se muestre mensajes en esta ventana, y la sentencia exit cierra la ventana. Así la ejecución es casi invisible para el usuario.

Vale, ya habéis seguido mis instrucciones, ejecutáis el .bat y no funciona. Lo más seguro es que en este caso, el directorio donde se ha instalado Mysql no está definido como variable de entorno. Lo más sencillo es añadir el path en el fichero bat.

En mi caso, recordar que uso XAMPP, el fichero quedaría

echo off
C:\xampp\mysql\bin\mysqldump -hlocalhost -uroot -pclaveroot mydatabase > D:\RESPALDOS_MYSQL\dataBaseBackup_%Date:~6,4%%Date:~3,2%%Date:~0,2%.sql
exit

también he añadido el path donde quiero guardar el fichero. De este modo, indicamos donde está exactamente el comando mysqldump y donde queremos guardar el fichero

Si ejecutais este .bat modificado, ya os tendría que funcionar. Recordad que debéis colocar vuestros directorios de instalación de MySql.

Ya tenemos el .bat que nos realiza la copia de seguridad. Vamos a crear una tarea en Windows para que ejecute el .bat automáticamente y asó poder olvidarnos de ello

Crear una tarea en Windows

1. Botón Inicio y buscamos tareas.

2. Clic en Programador de Tareas

3. En el Programador de tareas, «Crear tarea básica»

4. Damos un nombre y una descripción a la tarea que vamos a crear

 

5. Seleccionamos cuando queremos que se ejecute la tarea (Desencadenar tarea)

6. Elegimos la fecha de inicio y la hora que se ejecutara la tarea programada. Estas tareas son convenientes que se ejecuten en un horario que no «moleste». Cuando menos visitas haya en nuestra web.

7. Seleccionamos la acción que va a realizar la tarea. En nuestro caso Iniciar un programa

8. Indicar la ruta donde se encuentra nuestro fichero .bat

9. Ya lo último: una pantalla con un resumen de toda la configuración.

10. Nuestra tarea aparece en la Biblioteca del Programador de Tareas.

 

Y con esto, ya os podéis olvidar de hacer las copias de seguridad de vuestras bases de datos, ya que un ordenador se va a encargar de ello.

 

Oscar Pérez Gómez