Las copias de seguridad (backups) son imprescindibles para el funcionamiento seguro de cualquier base de datos. Un fallo, una actualización defectuosa o un incidente de seguridad pueden eliminar datos de forma irreversible. En este tutorial aprenderás a proteger eficazmente las bases de datos de MariaDB y realizar una copia de seguridad completa en MariaDB.

Tipos de copia de seguridad de MariaDB: lógicas vs. físicas

MariaDB distingue entre dos tipos de copias de seguridad:

  • Las copias de seguridad lógicas almacenan los datos en un formato ejecutable por SQL. Incluyen instrucciones como CREATE TABLE e INSERT INTO, que permiten restaurar la estructura y el contenido de la base de datos. Las copias de seguridad lógicas son adecuadas cuando deseas transferir datos a diferentes versiones o incluso a otros sistemas de bases de datos.
  • Las copias de seguridad físicas copian archivos y directorios de la base de datos directamente desde el sistema de archivos. Este método es más rápido y eficiente, especialmente con grandes volúmenes de datos. Sin embargo, solo funciona de forma fiable si los servidores, los formatos de almacenamiento y las versiones de MariaDB son idénticos.

Para muchos escenarios, se recomienda una combinación de ambos métodos: por ejemplo, volcados lógicos con mariadb-dump para respaldar datos o tablas individuales y copias de seguridad físicas para restauraciones completas y rápidas.

Crear un backup en MariaDB: ¿qué opciones hay?

MariaDB proporciona diversas herramientas para realizar una copia de seguridad de tus datos. Según el propósito, la cantidad de datos y el entorno del sistema, se pueden considerar diferentes métodos.

MariaDB dump

mariadb-dump es la herramienta de backup más conocida de MariaDB. Crea copias de seguridad lógicas y guarda los datos en un archivo SQL. Este archivo puede cargarse nuevamente más tarde con el cliente MariaDB.

Ventajas:

  • Funciona en cualquier sistema con el cliente MariaDB
  • Realiza una copia de seguridad de tablas, bases de datos individuales o todas
  • Compatible con otras versiones de MariaDB y MySQL

Desventajas:

  • Los grandes volúmenes de datos prolongan el tiempo necesario para las copias de seguridad y la restauración
  • Durante la copia de seguridad pueden ocurrir picos de carga

MariaDB backup

mariadb-backup realiza copias de seguridad físicas de los datos. La herramienta se basa en Percona XtraBackup y se ha adaptado específicamente para MariaDB. Admite cifrado y compresión.

Ventajas:

  • Rápida y eficiente con grandes volúmenes de datos
  • Permite realizar copias de seguridad en caliente (hot backup) mientras el sistema está en funcionamiento
  • Adecuado para entornos productivos con tablas InnoDB

Desventajas:

  • Funciona solo con InnoDB, no con MyISAM
  • Requiere más esfuerzo de configuración y restauración

Otras herramientas útiles

  • mariadb-hotcopy: herramienta obsoleta para tablas MyISAM (ya sin mantenimiento)
  • LVM Snapshots: copia de seguridad a nivel de sistema de archivos. Muy rápido, pero complejo
  • dbForge Studio: solución gráfica para sistemas Windows con una interfaz intuitiva

Ejemplo práctico: hacer un backup en MariaDB con mariadb-dump

Se necesita acceso al servidor de bases de datos y una cuenta de usuario con permisos de backup (por ejemplo, root). Abre un terminal o una conexión SSH. Comprueba de que el comando mariadb-dump esté instalado y disponible en la ruta.

Hacer una copia de seguridad de todas las bases de datos

Ejecuta el siguiente comando:

mariadb-dump -u root -p --all-databases --result-file=/backups/backup_all.sql
bash

Explicación:

  • -u root: establece el usuario root.
  • -p: solicita la entrada de la contraseña.
  • --all-databases: realiza la copia de seguridad de todas las bases de datos existentes.
  • --result-file: establece el archivo de destino para la copia de seguridad.

El backup de MariaDB incluye todas las bases de datos, así como la gestión de usuarios, triggers, vistas y tablas de sistema.

Hacer una copia de seguridad de una base de datos específica

El siguiente comando con la opción --databases shop_db realiza la copia de seguridad solo de la base de datos especificada.

mariadb-dump -u root -p --databases shop_db --result-file=/backups/shop_db.sql
bash

Si prefieres omitir la instrucción CREATE DATABASE en el volcado, utiliza:

mariadb-dump -u root -p shop_db --result-file=/backups/shop_db.sql
bash

En este caso, debes crear la base de datos tú mismo al restaurarla.

Hacer una copia de seguridad de varias bases de datos

Para incluir varias bases de datos, enuméralas en el comando. Creará un archivo SQL con instrucciones para todas las bases de datos enumeradas.

mariadb-dump -u root -p --databases db1 db2 db3 --result-file=/backups/multiple.sql
bash

Hacer una copia de seguridad de tablas individuales

Puedes indicar la base de datos y las tablas deseadas directamente en el comando, lo que resulta útil para exportaciones específicas, como la migración de tablas individuales.

mariadb-dump -u root -p db_name table1 table2 --result-file=tables.sql
bash

Opciones posibles para mariadb-dump

Opción Descripción
--no-data Crea una copia solo de la estructura, no de los datos
--no-create-info Crea una copia solo de los datos, sin la estructura de las tablas
--routines Crea una copia de procedimientos y funciones
--events Crea una copia de eventos planificados
--single-transaction Crea una copia de seguridad sin bloqueos en tablas InnoDB
--quick Reduce el uso de memoria para tablas grandes

MariaDB: automatizar el backup con Cron

Automatiza las copias de seguridad diarias mediante un cronjob. Abre la tabla de tareas de Cron:

crontab -e
bash

Inserta esta línea para crear, por ejemplo, una copia de seguridad diaria a las 03:00:

0 3 ** * mariadb-dump -u root -p password --all-databases --result-file=/backups/backup-$(date +\%F).sql
bash

Por razones de seguridad, no guardes las contraseñas directamente en la tabla de Cron. En su lugar, crea un archivo de configuración llamado .my.cnf en el directorio home:

[client]
user=root
password=password
bash

Establece los permisos de acceso:

chmod 600 ~/.my.cnf
bash

Utiliza la siguiente variante en los cronjobs sin contraseña:

mariadb-dump --all-databases --result-file=/backups/backup-$(date +\%F).sql
bash

Utiliza mariadb-dump preferiblemente para copias de seguridad flexibles e independientes del sistema y para volúmenes de datos más pequeños. Para sistemas productivos con grandes cantidades de datos, se recomienda mariadb-backup. Realiza copias de seguridad con regularidad y verifica tus copias a través de restauraciones de prueba. Solo una copia de seguridad verificada puede protegerte de forma fiable contra la pérdida de datos.

¿Le ha resultado útil este artículo?
Ir al menú principal