Configurar copia de seguridad con programador de tareas y mysqldump windows

captura terminal de windows

A primera hora de la mañana y después de dejar el PC actualizando la noche anterior, al encenderlo me saltó un aviso de recuperación del disco, después del proceso de recuperación fue necesario una restauración a un punto anterior.

Una vez iniciado todo parecía normal, sin embargo al intentar entrar en la página web que estoy desarrollando o intentar entrar en phpmyadmin existía un error bastante típico cuando migras bases de datos de un servidor a otro: tablespace id is N in the data dictionary el motivo, sencillo, ayer había hecho cambios en la estructura de la base de datos y el directorio de trabajo donde esta alojada la página tiene un servidor de control de versiones con lo que los archivos de la web estaban actualizados pero la base de datos no.

¿Solución? Afortunadamente, el último día y tras los cambios realicé una copia de seguridad de la base de datos que me sirvió para actualizar la misma y todo volvió a la normalidad, pero me hizo pensar, realizar una copia de seguridad a mano no es una tarea óptima, de hecho es bastante fácil que se nos pase, bien sea por pereza o por tiempo, y la ley de Murphy es bastante clara en este aspecto:

Si algo puede salir mal, saldrá mal

Ese día que no hiciste copia será el día que la necesites, así que es buena idea tener un archivo que realice una copia de seguridad cada cierto tiempo (el que queramos) de nuestras bases de datos y programar esta tarea para que se realice automáticamente.

Pasos a seguir

  • Realizar un archivo bash que ejecute el comando mysqldump para exportar a un archivo las bases de datos en las que estemos trabajando y queramos copias de seguridad
    • Podemos utilizar de nombre para el archivo, la fecha y hora actuales del sistema para que de esta manera podamos saber que archivo es el último y cuando se realizó la copia
    • Creamos un archivo “backup.bat” e introducimos en el:
C:\[ruta_mysql_bin]\mysqldump.exe -u[usuario] -p[password] --result-file="C:\[ruta_destino_que_queramos]\[nombre_bd]_%date:~6,4%%date:~3,2%%date:~0,2%_%time:~0,2%%time:~3,2%%time:~6,2%.sql" --databases [nombre_base_datos_1] [nombre_base_datos_2] [etc]

Sustituimos los que esta entre corchetes por nuestros datos.

  • Lo siguiente será crear una tarea usando el programador de tareas de windows para automatizar las copias de seguridad de nuestras bases de datos.
    • Dependiendo de la necesidad usaremos unas u otras opciones, pero por ejemplo, para crear un archivo de respaldo una vez al día simplemente vamos al programador de tareas 
Programador de tareas de windows
Programador de tareas
  • Añadimos nuestra tarea con el nombre que queramos
programador de tareas
programador de tareas
  • En la pestaña de desencadenadores elegimos cuando queremos que se ejecute nuestra copia de seguridad
Programador de tareas de windows
Programador de tareas de windows
  • En la pestaña acciones elegimos que se ha de hacer, es aquí donde seleccionamos nuestro archivo .bat creado anteriormente
programador de tareas
programador de tareas

Una vez realizado estos pasos y tras guardar nuestra nueva tarea, acabamos de automatizar un backup de las bases de datos que queramos a un directorio especifico, de esta forma siempre podemos estar cubiertos a la hora de imprevistos.

¿Cómo podemos mejorar?

Creando este directorio en un servidor distinto para poder tener las copias de seguridad aisladas de nuestro equipo local, así brindamos de una capa más de tolerancia a fallos.

Recent Posts

Recent Comments

Archives

Categories

Meta

josman Written by:

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *