MariaDB backup: así proteges tus datos
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 TABLEeINSERT 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.sqlbashExplicació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.sqlbashSi prefieres omitir la instrucción CREATE DATABASE en el volcado, utiliza:
mariadb-dump -u root -p shop_db --result-file=/backups/shop_db.sqlbashEn 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.sqlbashHacer 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.sqlbashOpciones 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 -ebashInserta 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).sqlbashPor 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=passwordbashEstablece los permisos de acceso:
chmod 600 ~/.my.cnfbashUtiliza la siguiente variante en los cronjobs sin contraseña:
mariadb-dump --all-databases --result-file=/backups/backup-$(date +\%F).sqlbashUtiliza 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.

