Cómo hacer una copia de seguridad de todas las bases de datos de un servidor MySQL Server, en Windows, cómo programarla para que se ejecute automáticamente cada cierto tiempo y cómo comprimirla. No usaremos software de terceros, sólo la herramienta mysqdump que incluye el propio MySQL Server en su versión gratuita community. El script de copia de seguridad comprimirá la copa con gzip.

Requisitos para hacer copia de seguridad programada de las bases de datos de un servidor MySQL Server en Windows

El único requisito será disponer de un servidor de MySQL Server instalado sobre una máquina con el sistema operativo Microsoft Windows (cualquier versión). Y necesitaremos un usuario y contraseña de acceso al servidor con permisos suficientes para poder hacer backup de todos los catálogos.

En el siguiente artículo explicamos cómo instalar un servidor de MySQL Server en Windows:

Script para la copia de seguridad programada de MySQL Server en Windows

Para hacer el backup de MySQL usaremos un script de MS-DOS. Por lo tanto copiaremos el siguiente script a un fichero de texto plano y lo guardaremos con un nombre en una ubicación determinada, por ejemplo con el nombre backup_mysql.bat:

Teniendo en cuenta que hay que establecer el valor de las siguientes variables al que queramos tener en nuestro equipo Windows:

  • bkupdir: indicaremos la unidad y carpeta de destino del backup, donde se creará una carpeta por cada catálogo (base de datos) que tengamos en MySQL y donde se copiará el fichero comprimido gzip con la copia de seguridad de cada base de datos.
  • mysqldir: unidad y carpeta donde tengamos instalado MySQL Server en el equipo. En sistemas Windows la carpeta por defecto habitual es C:/Archivos de programa/MySQL/MySQL Server x
  • datadir: unidad y carpeta donde estén alojados los datos de los catálogos de MySQL Server, si no se ha especificado otra, en instalaciones estándar de MySQL sobre Windows suele ser una carpeta «data» dentro de la carpeta de instalación. Por ejemplo, en MySQL Community Server 5.6 sería: C:/Archivos de programa/MySQL/MySQL Server 5.6/data. Dicha ubicación se establece en el fichero my.ini, en el parámetro datadir.
  • logdir: carpeta de destino del fichero de log que creará el script con el resultado de todas las operaciones de backup.
  • dbuser: usuario de MySQL Server con permisos suficientes para hacer copia de seguridad de todas las bases de datos.
  • dbpass: contraseña del usuario de MySQL Server anterior.
  • zip: indicaremos la ubicación del fichero gzip.exe. En el siguiente punto del artículo explicamos cómo descargarlo e instalarlo.

Lo ideal es que el destino del backup (bkupdir) esté en un disco duro físico diferente al de los datos de MySQL, de esta forma, si se avería el HD de MySQL siempre tendremos la copia de seguridad en lugar seguro. Incluso se puede hacer una copia del script y crear dos programaciones con dos script con destinos de backup diferentes en discos duros separados.

El script, como se puede ver, obtiene el día y la hora actuales para generar un fichero con estos datos, de forma que no reemplazará copias, generará un fichero por cada copia que se programe. De esta forma podremos tener un histórico de cambios en caso de ser necesario recuperar una copia del estado de un catálogo MySQL de días anteriores.

Por otro lado, el script lista las carpetas de la ubicación de los datos de MySQL, dado que cada catálogo contiene una carpeta y genera en la ubicación de destino una carpeta por cada catálogo.

Por último exporta los datos de cada catálogo a un fichero con formato SQL de texto plano y lo comprime con la herramienta gzip.

Descargar el fichero gzip.exe necesario para comprimir los ficheros SQL resultantes del backup

La herramienta mysqldump de MySQL Server creará un fichero de texto plano con extensión .sql para cada copia de seguridad de cada catálogo de la base de datos. Estos ficheros no están comprimidos por defecto y pueden ocupar bastante espacio, en función del tamaño de la base de datos. Para comprimirlos desde el mismo script usaremos la herramienta gratuita gzip.

Descargamos el instalador de gzip desde la URL:

  • http://gnuwin32.sourceforge.net/downlinks/gzip.php

(si no está disponible lo buscaremos en la web oficial http://www.gzip.org

Y lo instalaremos siguiendo los pasos del asistente que son muy sencillos (siguiente, siguiente), fijándonos en la carpeta de destino de la instalación. Esto último es importante dado que en el script, en la variable zip, deberemos indicarla. Por defecto suele instarse en: C:\Program Files (x86)\GnuWin32\bin\gzip.exe. Pero podemos copiar el fichero gzip.exe a la ubicación que queramos, indicándola en el parámetro zip del script.

Programar tarea de Windows para que ejecute el script de forma automática cada cierto tiempo

Una vez generado y guardado el fichero de script podremos programarlo con el programador de tareas de Windows, para que se ejecute de forma automática con la periodicidad que le establezcamos. Como ejemplo programaremos la copia una vez al día, todos los días, a partir de las 2 de la madrugada.

Para ello abriremos el programador de tareas de Windows, en el caso de Windows 7 (similar a Windows Vista, Windows 8 y Windows 10), pulsaremos el botón de inicio y escribiremos «programador de tareas»:

Cómo hacer copia de seguridad de MySQL Server programada en WIndows sin software de terceros

Pulsaremos con el botón derecho del ratón sobre «Programador de tareas» y seleccionaremos «Crear tarea básica»:

Cómo hacer copia de seguridad de MySQL Server programada en WIndows sin software de terceros

Introduciremos un nombre para la tarea programada, por ejemplo «Copia MySQL» y una descripción de la tarea, por ejemplo «Copia de seguridad de las bases de datos MySQL del servidor local»:

Cómo hacer copia de seguridad de MySQL Server programada en WIndows sin software de terceros

Especificaremos cada cuanto tiempo queremos que se haga la copia, esto lo elegiremos en función de la criticidad de los datos y de los cambios que se produzcan. Por norma y lo habitual es una vez al día, así que marcaremos «Diariamente»:

Cómo hacer copia de seguridad de MySQL Server programada en WIndows sin software de terceros

Estableceremos la hora de inicio de la copia, en nuestro caso a las 02:00:

Cómo hacer copia de seguridad de MySQL Server programada en WIndows sin software de terceros

En la acción marcaremos «Iniciar un programa»:

Cómo hacer copia de seguridad de MySQL Server programada en WIndows sin software de terceros

Pulsaremos en «Examinar» para seleccionar la ubicación del script .bat:

Cómo hacer copia de seguridad de MySQL Server programada en WIndows sin software de terceros

Seleccionaremos el fichero de script, en nuestro caso backup_mysql.bat:

Cómo hacer copia de seguridad de MySQL Server programada en WIndows sin software de terceros

Marcaremos la opción «Abrir el diálogo Propiedades para esta tarea al hacer clic en Finalizar»:

Cómo hacer copia de seguridad de MySQL Server programada en WIndows sin software de terceros

Marcaremos las opciones «Ejecutar tanto si el usuario inició sesión como si no» y marcharemos también «Ejecutar con los privilegios más altos»:

Cómo hacer copia de seguridad de MySQL Server programada en WIndows sin software de terceros

Una vez configurados todos los parámetros de la tarea programada pulsaremos «Aceptar» en la ventana anterior. Puede que nos solicite usuario y contraseña del equipo Windows con el que se ejecutará la tarea, es conveniente que sea un usuario administrador o con los permisos suficientes para copiar ficheros y ejecutar script:

Cómo hacer copia de seguridad de MySQL Server programada en WIndows sin software de terceros

De esta forma, cuando se ejecute la tarea, se ejecutará el script, que generará una carpeta por cada catálogo de la base de datos del servidor MySQL Server. En nuestro caso:

Cómo hacer copia de seguridad de MySQL Server programada en WIndows sin software de terceros

Generará también un fichero de log por cada ejecución, con el nombre «resultado_…» y la fecha y hora de ejecución. Y dentro de cada carpeta correspondiente a cada catálogo generará un fichero comprimido .gz con el nombre del catálogo y la fecha y la hora de la copia. Dicho fichero, a su vez, contendrá el fichero .sql con los datos del catálogo en formato SQL de texto plano:

Cómo hacer copia de seguridad de MySQL Server programada en WIndows sin software de terceros

Ejemplo de contenido SQL de un fichero comprimido de backup de MySQL con mysqldump:

Cómo hacer copia de seguridad de MySQL Server programada en WIndows sin software de terceros