Las copias de seguridad (backups) son im­pre­s­ci­n­di­bles para el fu­n­cio­na­mie­n­to seguro de cualquier base de datos. Un fallo, una ac­tua­li­za­ción de­fe­c­tuo­sa o un incidente de seguridad pueden eliminar datos de forma irre­ve­r­si­ble. En este tutorial apre­n­de­rás a proteger efi­ca­z­me­n­te 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 eje­cu­ta­ble por SQL. Incluyen in­s­tru­c­cio­nes como CREATE TABLE e INSERT INTO, que permiten restaurar la es­tru­c­tu­ra y el contenido de la base de datos. Las copias de seguridad lógicas son adecuadas cuando deseas tra­n­s­fe­rir datos a di­fe­re­n­tes versiones o incluso a otros sistemas de bases de datos.
  • Las copias de seguridad físicas copian archivos y di­re­c­to­rios de la base de datos di­re­c­ta­me­n­te desde el sistema de archivos. Este método es más rápido y eficiente, es­pe­cia­l­me­n­te con grandes volúmenes de datos. Sin embargo, solo funciona de forma fiable si los se­r­vi­do­res, los formatos de al­ma­ce­na­mie­n­to y las versiones de MariaDB son idénticos.

Para muchos es­ce­na­rios, se re­co­mie­n­da una co­m­bi­na­ción de ambos métodos: por ejemplo, volcados lógicos con mariadb-dump para respaldar datos o tablas in­di­vi­dua­les y copias de seguridad físicas para re­s­tau­ra­cio­nes completas y rápidas.

Manage Databases
Managed Database von IONOS

Bases de datos a medida de tus ne­ce­si­da­des. Incluye soporte 24/7.

  • Ar­qui­te­c­tu­ra de primera
  • Soporte 24/7
  • Centros de datos ce­r­ti­fi­ca­dos

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

MariaDB pro­po­r­cio­na diversas he­rra­mie­n­tas 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 co­n­si­de­rar di­fe­re­n­tes métodos.

MariaDB dump

mariadb-dump es la he­rra­mie­n­ta 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 nue­va­me­n­te 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 in­di­vi­dua­les o todas
  • Co­m­pa­ti­ble con otras versiones de MariaDB y MySQL

De­s­ve­n­ta­jas:

  • Los grandes volúmenes de datos prolongan el tiempo necesario para las copias de seguridad y la re­s­tau­ra­ció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 he­rra­mie­n­ta se basa en Percona Xtra­Ba­c­kup y se ha adaptado es­pe­cí­fi­ca­me­n­te para MariaDB. Admite cifrado y co­m­pre­sió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 fu­n­cio­na­mie­n­to
  • Adecuado para entornos pro­du­c­ti­vos con tablas InnoDB

De­s­ve­n­ta­jas:

  • Funciona solo con InnoDB, no con MyISAM
  • Requiere más esfuerzo de co­n­fi­gu­ra­ción y re­s­tau­ra­ción

Otras he­rra­mie­n­tas útiles

  • mariadb-hotcopy: he­rra­mie­n­ta obsoleta para tablas MyISAM (ya sin ma­n­te­ni­mie­n­to)
  • 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 di­s­po­ni­ble 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

Ex­pli­ca­ción:

  • -u root: establece el usuario root.
  • -p: solicita la entrada de la co­n­tra­se­ña.
  • --all-databases: realiza la copia de seguridad de todas las bases de datos exi­s­te­n­tes.
  • --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 es­pe­cí­fi­ca

El siguiente comando con la opción --databases shop_db realiza la copia de seguridad solo de la base de datos es­pe­ci­fi­ca­da.

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

Si prefieres omitir la in­s­tru­c­ció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 re­s­tau­rar­la.

Hacer una copia de seguridad de varias bases de datos

Para incluir varias bases de datos, enu­mé­ra­las en el comando. Creará un archivo SQL con in­s­tru­c­cio­nes para todas las bases de datos enu­me­ra­das.

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

Hacer una copia de seguridad de tablas in­di­vi­dua­les

Puedes indicar la base de datos y las tablas deseadas di­re­c­ta­me­n­te en el comando, lo que resulta útil para ex­po­r­ta­cio­nes es­pe­cí­fi­cas, como la migración de tablas in­di­vi­dua­les.

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

Opciones posibles para mariadb-dump

Opción De­s­cri­p­ción
--no-data Crea una copia solo de la es­tru­c­tu­ra, no de los datos
--no-create-info Crea una copia solo de los datos, sin la es­tru­c­tu­ra de las tablas
--routines Crea una copia de pro­ce­di­mie­n­tos y funciones
--events Crea una copia de eventos pla­ni­fi­ca­dos
--single-transaction Crea una copia de seguridad sin bloqueos en tablas InnoDB
--quick Reduce el uso de memoria para tablas grandes

MariaDB: au­to­ma­ti­zar el backup con Cron

Au­to­ma­ti­za 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 co­n­tra­se­ñas di­re­c­ta­me­n­te en la tabla de Cron. En su lugar, crea un archivo de co­n­fi­gu­ra­ción llamado .my.cnf en el di­re­c­to­rio 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 co­n­tra­se­ña:

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

Utiliza mariadb-dump pre­fe­ri­ble­me­n­te para copias de seguridad flexibles e in­de­pe­n­die­n­tes del sistema y para volúmenes de datos más pequeños. Para sistemas pro­du­c­ti­vos con grandes ca­n­ti­da­des de datos, se re­co­mie­n­da mariadb-backup. Realiza copias de seguridad con re­gu­la­ri­dad y verifica tus copias a través de re­s­tau­ra­cio­nes de prueba. Solo una copia de seguridad ve­ri­fi­ca­da puede pro­te­ge­r­te de forma fiable contra la pérdida de datos.

Ir al menú principal