Backup de MySQL con xtrabackup

Percona tiene unas utilidades sorprendentes y de alguna ya hemos hablado alguna vez. Hoy toca resolver el problema de realizar un backup de una base de datos de forma que la restauración de la misma, en caso necesario sea rápida y simple.
Ante bases de datos pequeñas (MB's o Gb) la realización de un backup con mysqldump es lo habitual y más usado. Luego para restaurarlo, simplemente se ejecuta el proceso contrario y el backup está restaurado. El problema viene cuando nos enfrentamos a una base de datos de 140Gb, por ejemplo. Ahí la realización de un dump ya es un trabajo tedioso, pero luego el proceso contrario, se complica mucho más.
Tradicionalmente sería algo similar a esto
  • Backup
    shell> mysqldump -u root -p --skip-extended-insert \
           | gzip > /var/backups/mysql.sql.gz
    
  • Restaurar
    shell> zcat /var/backups/mysql.sql.gz | mysql -u root -p
    
Realizar esto con bases de datos grandes, la importación de los datos puede llevar días e incluso semanas, algo que en entornos de producción no tiene sentido alguno. Tener un servicio parado tanto tiempo puede traer graves consecuencias. Para solucionarlo, podemos usar la utilidad xtrabackup/innobackupex, para realizar un backup de la base de datos completa y posteriores versiones incrementales. Esta utilidad permite copiar "a pelo" los ficheros para luego, en caso necesario, poder restauralos mucho más rápido e incluso restaurar tablas aisladas, si ello fuese necesario. Por supuesto, esta utilidad sólo trabaja con tablas de tipo InnoDB, pero eso no es problema.
Para usarla y crear un backup completo de una base de datos, simplemente basta con ejecutar lo que sigue.
shell> innobackupex --user=root --password=YOUR_ROOT_PASSWD \
       --slave-info --defaults-file=/etc/my.cnf \
       --databases="DB_1 DB_2" --stream=tar ./ \
       | gzip -c -1  > /var/backups/mysql.tar.gz
En donde se indican las bases de datos de las que hacer backup, si se desea restringir, y se exporta a un fichero comprimido con gzip, para evitar que ocupe tanto en disco.
Otro ejemplo, este más claro y sin comprimir datos, lo cual facilitaría el uso de copias incrementales, sería,
shell> innobackupex --user=root --password=YOUR_ROOT_PASSWD \
       --defaults-file=/etc/my.cnf \
       --export /var/backups/
En otro post, explicaremos cómo poder restaurar la base de datos desde el fichero mysql.tar.gz.


2 comentarios :

  1. para bases de datos con motor myisam funciona?

    ResponderEliminar
    Respuestas
    1. Hola,

      Siguiendo una búsqueda de la herramienta comentada: https://www.percona.com/doc/percona-xtrabackup/LATEST/innobackupex/innobackupex_script.html
      Parece que sí funciona con MyISAM.

      Eliminar

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios