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
2
3
[mysqldump]
user=userochobits
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 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 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
2
# m h dom mon dow user command
15 3 * * 7 bk mysqldump --defaults-file=/home/davidochobits/.credenciales.cnf 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

You may also like...

3 Responses

  1. Josan dice:

    Buenos días! gracias por este tutorial y por el resto que hay en la web.

    Creo que en:
    mysqldump –defaults-file=/home/davidochobits/.credenciales.cnf testochobits > /home/davidochobits/”backup-$(date+ “%d%m%Y”).sql”

    Le ha bailado el símbolo “+” y al menos a mi bajo Debian lo correcto ha sido /”backup-$(date +”%d%m%Y”).sql”

    Un saludo y gracias nuevamente!

  2. Gaspar dice:

    Y si tu sistema tiene recursos suficientes puedes hacer:
    $ mysqldump –defaults-file=/home/davidochobits/.credenciales.cnf testochobits | bzip2 > /home/davidochobits/”backup-$(date+ “%d%m%Y”).sql.bz2”

    Yo, para mi servidor, tengo un script que cuando termina de hacer el backup, me hace rsync y me lo copia a otro servidor.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR