La información es uno de los activos más valiosos para cualquier organización o proyecto. Perderla debido a fallos de hardware, errores humanos o ataques malintencionados puede ser catastrófico. Por ello, implementar una estrategia de respaldo (backup) robusta es fundamental, especialmente cuando gestionas datos en una base de datos como MariaDB.
https://www.youtube.com/watch?v=ygUeI2FkbWluaXN0cmFjacOzbmRlYmFzZXNkZWRhdG9z
MariaDB, siendo una base de datos relacional muy popular, ofrece diversas herramientas para realizar copias de seguridad. Una de las más potentes y recomendadas es mariadb-backup. Esta utilidad permite realizar backups en caliente (sin detener el servidor) y es especialmente útil para bases de datos grandes o con un alto volumen de transacciones.

En este artículo, nos centraremos en cómo realizar un backup completo utilizando mariadb-backup, cubriendo los pasos esenciales desde la creación del respaldo hasta su preparación y restauración.
- Tipos de Backup con mariadb-backup
- Realizando un Backup Completo del Servidor
- Preparando el Backup para la Restauración
- Restaurando el Backup
- Comparación: --copy-back vs --move-back
- Consideraciones Importantes
- Preguntas Frecuentes (FAQ)
- ¿Por qué necesito preparar el backup antes de restaurarlo?
- ¿Puedo restaurar un backup de MariaDB directamente copiando los archivos?
- ¿Qué permisos necesita el usuario que ejecuta mariadb-backup?
- Olvidé ajustar los permisos después de restaurar y MariaDB no inicia. ¿Qué hago?
- ¿Es necesario detener MariaDB para hacer un backup con mariadb-backup?
- Conclusión
Tipos de Backup con mariadb-backup
Al utilizar mariadb-backup, tienes la opción de realizar dos tipos principales de copias de seguridad:
- Backup Completo: Crea una copia de seguridad total de todo el servidor de base de datos en un directorio vacío. Es la base para cualquier estrategia de respaldo.
- Backup Incremental: Actualiza un backup anterior (completo o incremental) con solo los cambios que han ocurrido desde ese respaldo previo. Son más rápidos y ocupan menos espacio, pero requieren un backup completo como punto de partida.
Aunque mariadb-backup soporta ambos, en esta guía profundizaremos en el proceso del backup completo, que es el primer paso indispensable.
Realizando un Backup Completo del Servidor
El primer paso es ejecutar la herramienta mariadb-backup con las opciones necesarias para indicarle que realice una operación de respaldo y especificar dónde guardar los archivos resultantes.
La opción clave es --backup, que le dice a la utilidad que realice una copia de seguridad. Además, es crucial usar --target-dir para especificar el directorio de destino donde se almacenarán los archivos del backup. Es vital que este directorio esté vacío o no exista, ya que mariadb-backup generará un error si detecta archivos preexistentes para evitar sobrescribir datos accidentalmente.
Para ejecutar el comando, necesitarás un usuario de base de datos con los permisos adecuados para realizar backups. Generalmente, se crea un usuario específico para esta tarea. Aquí tienes un ejemplo básico del comando:
$ mariadb-backup --backup \
--target-dir=/var/mariadb/backup/ \
--user=tu_usuario_backup --password=tu_contraseña
Asegúrate de reemplazar /var/mariadb/backup/ con la ruta de tu directorio de destino preferido y tu_usuario_backup/tu_contraseña con las credenciales del usuario de backup.
La duración del proceso de backup dependerá directamente del tamaño de tus bases de datos y tablas. Durante la ejecución, mariadb-backup copia los archivos de datos al directorio especificado. Si el directorio no existe, lo creará. Si existe y contiene archivos, abortará la operación con un error.
Es importante destacar que puedes cancelar el proceso de backup si es necesario, ya que la operación de respaldo no modifica los datos de la base de datos original.
Contenido del Directorio de Backup
Una vez completado el backup, el directorio de destino contendrá una serie de archivos que representan la copia de tus bases de datos. Algunos de los archivos típicos que podrías encontrar son:
aria_log.0000001,aria_log_control: Archivos relacionados con el motor de almacenamiento Aria.mysql: Directorio con los archivos de la base de datos del sistemamysql.performance_schema: Directorio con los archivos de la base de datosperformance_schema.backup-my.cnf: Un archivo de configuración que contiene la configuración del servidor en el momento del backup.ibdata1(o archivosibd): Archivos del tablespace del motor InnoDB, conteniendo datos y metadatos.xtrabackup_checkpoints: Archivo con información sobre el punto de control del backup.xtrabackup_info: Archivo con información detallada del backup.xtrabackup_logfile: Archivo con información del log de transacciones de InnoDB.xtrabackup_binlog_info: Información del log binario (si está habilitado).
Por ejemplo, el listado de un directorio de backup podría verse así:
$ ls /var/mariadb/backup/
aria_log.0000001 mysql xtrabackup_checkpoints
aria_log_control performance_schema xtrabackup_info
backup-my.cnf test xtrabackup_logfile
ibdata1 xtrabackup_binlog_info
Preparando el Backup para la Restauración
Los archivos copiados directamente por mariadb-backup en el directorio de destino *no* están consistentes a nivel de punto en el tiempo. Esto se debe a que los archivos de datos son copiados secuencialmente y las operaciones de escritura en la base de datos pueden ocurrir durante el proceso. Si intentaras restaurar directamente desde estos archivos sin una preparación previa, InnoDB (el motor de almacenamiento principal de MariaDB) detectaría estas inconsistencias y no permitiría iniciar la base de datos para protegerla de corrupción.
Por lo tanto, antes de poder restaurar un backup, es indispensable prepararlo. Este paso aplica las transacciones pendientes registradas en los logs durante el proceso de backup para llevar los archivos de datos a un estado consistente.
Para preparar el backup, debes ejecutar mariadb-backup nuevamente, pero esta vez con la opción --prepare, indicando el mismo directorio donde se realizó el backup:
$ mariadb-backup --prepare \
--target-dir=/var/mariadb/backup/
Es crucial utilizar una versión de mariadb-backup que sea compatible con la versión del servidor MariaDB desde la que se realizó el backup. Por ejemplo, si hiciste el backup desde MariaDB 10.4, deberías usar la versión 10.4 de mariadb-backup para la preparación. Esto asegura que los formatos de archivo y los procesos internos sean compatibles.
El proceso de preparación aplica los logs de transacciones y realiza la recuperación necesaria para dejar el backup en un estado utilizable para la restauración.
Restaurando el Backup
Una vez que el backup ha sido preparado correctamente, se convierte en un conjunto de archivos de datos consistentes y listos para ser utilizados como un directorio de datos de MariaDB funcional. Para restaurar, necesitas mover o copiar estos archivos al directorio de datos de tu servidor MariaDB (conocido como datadir).
Antes de restaurar:
- Asegúrate de que el servidor MariaDB esté detenido en la máquina donde realizarás la restauración.
- El directorio de datos de destino (donde MariaDB lee y escribe sus archivos) debe estar vacío. Mueve o elimina cualquier archivo existente en él (¡asegúrate de tener un backup reciente por si acaso!).
Puedes utilizar mariadb-backup para realizar la restauración con las opciones --copy-back o --move-back.
--copy-back: Copia los archivos del directorio de backup aldatadir. La copia original del backup se mantiene intacta.--move-back: Mueve los archivos del directorio de backup aldatadir. La copia original del backup se pierde, ya que los archivos son movidos, no copiados.
Generalmente, es más seguro y recomendable usar --copy-back para conservar la copia de backup original.
Ejemplo de restauración con --copy-back:
$ mariadb-backup --copy-back \
--target-dir=/var/mariadb/backup/
Este comando copiará los archivos preparados desde /var/mariadb/backup/ al directorio de datos configurado en tu servidor MariaDB (normalmente /var/lib/mysql/, aunque puede variar según la instalación).
Ajustando Permisos de Archivos
Después de restaurar los archivos, es muy probable que necesites corregir los permisos de archivo y la propiedad. Cuando mariadb-backup copia o mueve los archivos, lo hace utilizando el usuario y grupo con el que se ejecuta el comando de restauración. Sin embargo, el servidor MariaDB necesita tener permisos para leer y escribir en estos archivos, generalmente con el usuario y grupo mysql.
Deberás cambiar recursivamente la propiedad del directorio de datos restaurado al usuario y grupo que utiliza el servidor MariaDB (normalmente mysql:mysql).
Ejemplo usando el comando chown:
$ chown -R mysql:mysql /var/lib/mysql/
Asegúrate de reemplazar /var/lib/mysql/ con la ruta real de tu directorio de datos si es diferente.
Una vez ajustados los permisos, ya puedes iniciar el servidor MariaDB. Este debería arrancar utilizando los datos restaurados.
Métodos Alternativos de Restauración
Dado que un backup completo preparado es, en esencia, un directorio de datos de MariaDB funcional, técnicamente puedes restaurar la copia de seguridad utilizando cualquier herramienta de copia de archivos estándar, como cp o rsync, siempre y cuando el servidor MariaDB esté detenido en el destino y el directorio de datos de destino esté vacío.
Ejemplo de restauración usando rsync:
$ rsync -avrP /var/mariadb/backup/ /var/lib/mysql/
$ chown -R mysql:mysql /var/lib/mysql/
Este método es igualmente válido, pero requiere que manejes manualmente la copia de archivos y el ajuste de permisos.
Comparación: --copy-back vs --move-back
| Opción | Descripción | Ventajas | Desventajas |
|---|---|---|---|
--copy-back | Copia los archivos preparados del directorio de backup al directorio de datos (datadir). | Conserva la copia original del backup, permitiendo múltiples intentos de restauración sin rehacer la preparación. | Requiere más espacio en disco (copia duplicada). Puede ser más lento para backups muy grandes. |
--move-back | Mueve los archivos preparados del directorio de backup al directorio de datos (datadir). | Más rápido que copiar, ahorra espacio en disco (solo una copia final). | La copia original del backup se elimina del directorio de origen. Si la restauración falla, podrías necesitar rehacer el backup y la preparación. |
Consideraciones Importantes
- Compatibilidad de Versiones: Siempre utiliza una versión de mariadb-backup que sea compatible con la versión del servidor MariaDB de origen.
- Espacio en Disco: Asegúrate de tener suficiente espacio libre en disco tanto para el directorio de backup como para el directorio de datos (especialmente si usas
--copy-back). - Permisos de Usuario: El usuario que ejecuta mariadb-backup necesita permisos de lectura sobre los archivos de datos y permisos de escritura sobre el directorio de destino del backup. Para la restauración, necesita permisos de escritura sobre el directorio de datos de MariaDB.
- Automatización: Para una estrategia de backup efectiva, considera automatizar estos procesos utilizando scripts y herramientas de programación de tareas (como cron).
- Pruebas de Restauración: Realiza pruebas de restauración periódicamente en un entorno de prueba para verificar que tus backups son válidos y que el proceso de restauración funciona correctamente. Un backup que no se puede restaurar no sirve de nada.
Preguntas Frecuentes (FAQ)
¿Por qué necesito preparar el backup antes de restaurarlo?
Los archivos copiados durante el backup no son consistentes a nivel de punto en el tiempo. La preparación aplica las transacciones pendientes registradas en los logs para llevar los datos a un estado coherente que InnoDB pueda reconocer y utilizar sin riesgo de corrupción al iniciar el servidor.
¿Puedo restaurar un backup de MariaDB directamente copiando los archivos?
No directamente después del paso de backup inicial. Debes *primero* preparar el backup usando --prepare. Una vez preparado, el conjunto de archivos es consistente y puedes usar herramientas de copia como cp o rsync, pero es más común y a menudo más conveniente usar las opciones --copy-back o --move-back de mariadb-backup.
¿Qué permisos necesita el usuario que ejecuta mariadb-backup?
Necesita permisos para leer todos los archivos de datos de MariaDB y permisos para escribir en el directorio de destino del backup. Para la fase de restauración (--copy-back o --move-back), necesita permisos para escribir en el directorio de datos de MariaDB.
Olvidé ajustar los permisos después de restaurar y MariaDB no inicia. ¿Qué hago?
Este es un problema común. Detén el servidor MariaDB si intentó iniciar y falló. Luego, ejecuta el comando chown -R mysql:mysql /ruta/a/tu/datadir (reemplazando la ruta) para asignar la propiedad correcta de los archivos al usuario y grupo mysql (o el que use tu instalación de MariaDB). Después de corregir los permisos, intenta iniciar MariaDB nuevamente.
¿Es necesario detener MariaDB para hacer un backup con mariadb-backup?
No, una de las grandes ventajas de mariadb-backup es que puede realizar backups en caliente (online) sin detener el servidor. Esto minimiza el tiempo de inactividad de tu aplicación.
Conclusión
Realizar backups regulares y fiables es una parte crítica de la administración de cualquier base de datos MariaDB. La herramienta mariadb-backup proporciona una solución robusta y eficiente para esta tarea, permitiendo realizar copias de seguridad completas y consistentes sin necesidad de detener el servidor.
Dominar los pasos de backup, preparación y restauración te asegurará que puedes recuperar tus datos rápidamente en caso de un desastre. Recuerda siempre verificar la compatibilidad de versiones, gestionar adecuadamente los permisos y, lo más importante, probar tus procedimientos de restauración periódicamente. ¡Tu información te lo agradecerá!
Si quieres conocer otros artículos parecidos a Backup de MariaDB: Guía con mariadb-backup puedes visitar la categoría Bases de datos.

Aprende mas sobre MySQL