Programar copias de seguridad para MySQL y MariaDB

El tip de hoy va sobre una tarea básica de un administrador de sistemas, que trabaje con bases de datos, MySQL o MariaDB, esto es, programar copias de seguridad, desde la línea de comandos, en sistemas GNU Linux, utilizando crontab y mysqldump.

Terminal-icon-shell-linux-unix

Programar copias de seguridad para MySQL y MariaDB

En la web ya hemos hablado sobre la creación de bases de datos MySQL y algunas tareas básicas. Hoy vamos a ver como programar copias de seguridad, utilizando la herramienta mysqldump para la copia y crontab para la programación. Debemos utilizar credenciales seguras, y para no añadirlas directamente a los parámetros, creamos primero un fichero, donde almacenaremos dichas claves.

El fichero lo guardaremos en nuestra home, con permisos de lectura y escritura sólo para root.

  1. nano /home/davidochobits/.credenciales.cnf

Lo hacemos oculto, añadiendo el punto delante del nombre, y añadimos:

  1. [mysqldump]
  2. user=userochobits
  3. password=contrasea

Guardamos y salimos del editor. Ahora modificamos los permisos:

  1. chmod 600 /home/davidochobits/.credenciales.cnf

Una vez hecho, teniendo en cuenta que utilizamos un base de datos ficticia llamada ‘testochobits’, probamos que todo funcione. Utilizamos mysqldump de la siguiente manera:

  1. mysqldump --defaults-file=/home/davidochobits/.credenciales.cnf \
  2. testochobits > /home/davidochobits/backup.sql

Vale, si todo ha salido bien, es que tanto el fichero de credenciales como el comando y los parámetros, son correctos. Se nos presenta un pequeño problema, si queremos guardar copias diarias, debemos crear algún método, para que no nos «pise» la copia del segundo día al del primero. Para ello añadiremos la fecha al fichero resultante, de la siguiente manera:

  1. mysqldump --defaults-file=/home/davidochobits/.credenciales.cnf \
  2.  testochobits > /home/davidochobits/"backup-$(date+ "%d%m%Y").sql"

De ésta manera tendremos cada copia con su fecha correspondiente.

Para añadir la programación, modicaremos el fichero contrab ubicado en /etc/crontab, y añadimos:

  1. # m h dom mon dow user command
  2. 15 3 * * 7 bk mysqldump --defaults-file=/home/davidochobits/.credenciales.cnf \
  3. testochobits > /home/davidochobits/"backup-$(date+ "%d%m%Y").sql"

De esta manera haremos copia de seguridad semanal, si queremos hacerla diaria sólo debemos modificar los parámetros relacionados con la fecha.

Espero que os haya parecido interesante. Para realizar el artículo me he servidor de la siguiente documentación:

blogs.oracle.com | nixCraft