Backups de tus Bases de datos en Unraid

2024-08-19

db-Backup es un contenedor que permite realizar copias de seguridad de varios tipos de servidores de Base de Datos (BD), en concreto de CouchDB, InfluxDB, MySQL/MariaDB, Microsoft SQL, MongoDB, Postgres y servidores Redis.

Características

  • Permite realizar dump en un sistema de archivos local o en servicios compatibles de S3 y Azure.
  • Soporta múltiples trabajos de respaldo
    • Selecciona cuándo iniciar el primer dump, ya sea a una hora del día o en relación con la hora de inicio del contenedor
    • Selecciona el intervalo
    • Selecciona omitir la programación un período de tiempo
    • Selección de usuarios de base de datos y contraseña
    • Capacidades de limpieza
    • Selecciona por nombre de base de datos, todas las bases de datos, bases de datos individuales o múltiples
    • Copia de seguridad de todas las bases de datos en ficheros separados o en uno solo
  • Soporte para generar un hash MD5 o SHA1 después de la copia de seguridad para la verificación
  • Compresión (ninguno, gz, bz, xz, zstd)
  • Cifrado (contraseña y clave pública)
  • Notificar sobre el fracaso laboral en el correo electrónico, matriz, más importante, chat, script personalizado
  • Soporte de métricas zabbix
  • Hooks para ejecutar trabajos de copia de seguridad antes y después para personalización
  • Script para ayudar en la restauración

Instalación y configuración

Podemos encontrar la aplicación db-bBackup en la CA de Unraid

Procedemos a rellenar la plantilla, añadiendo variables (Key) para las diferentes BD de las que deseamos realizar copia de seguridad, por ejemplo, su ubicación, usuario y contraseña, tipo de BD, etc. así como otros valores globales, como donde se almacenaran las copias, su programación, etc.

Por ejemplo, mis bases de datos se encuentran en un servidor postgres.

La configuración de la plantilla de Unraid para mis bases de datos seria:

  • Backup Location: Carpeta donde se van a almacenar las copias de las BD
  • Key 1 variable COMPRESSION: Formato de compresión de las copias, puede ser Gzip GZ, Bzip2 BZ, XZip XZ, ZSTD ZSTD o ninguna
  • Key 2 variable DB_NAME: Nombre de las BD a salvaguardar, ALL hará copias de todas las BD
  • Key 3 variable DB_TYPE: Tipo de base de datos, influx, mysql, pgsql, mongo, redis o rethink
  • Key 4 variable DB_HOST: Hostname o dirección IP donde corre la BD
  • Key 5 variable DB_USER: Usuario de la base de datos, utiliza un usuario root para copiar todas las BD MySQL
  • Key 6 variable DB_PASS: Contraseña BD
  • Key 7 variable DB_PORT: Puerto de la BD
  • Key 8 variable DB_DUMP_FREQ: con que frecuencia realiza la copia de la BD, 1440 = 1 Día
  • Key 9 variable /PARALLEL_COMPRESSION: Múltiple cores para la comprensión
  • Key 10 variable MD5: Genera MD5 Sum para la integridad
  • Key 11 variable SPLIT_DB: Separa las copias por BD en vez de un solo fichero

🗨️ En el repositorio del proyecto db-bBackup dispones de más información de las variable disponibles

Según la programación y el formato configurado, las copias se irán realizando de forma automática en la carpeta elegida:

Restaurar base de datos

db-Backup dispone de un script que facilita recuperación de las copias de seguridad.

Para ello debemos de entrar en el contenedor y ejecutar el comando restore que ejecutará un script basado en menús para restaurar las copias de seguridad, en el momento de escribir este articulo las BDDD soportadas por el script son MariaDB, Postgres y Mongo

Aparece una serie de menús que nos permitirán elegir:

  • Qué archivo restaurar
  • Qué tipo de respaldo de DB
  • Qué anfitrión restaurar
  • Qué nombre de la base de datos para restaurar
  • Qué Usuario de Base de Datos para usar
  • Qué contraseña de la base de datos a utilizar
  • Qué puerto de base de datos a utilizar

El script intentará detectar automáticamente, basándose en el nombre del archivo, el tipo, nombre de host y nombre de la base de datos. El script también te permitirá utilizar variables de entorno usadas durante la creación el contenedor.

Espero que te haya gustado, pasa un gran día 🐧


Ingrese la dirección de su instancia