Cuando pensamos que finalmente teníamos este problema resuelto (ya que automatizamos los backups de MySql y SQL Server) recibimos nuevos proyectos para modificar sistemas que utilizan MariaDB sobre Linux. Aunque se puede utilizar el mismo comando que usamos para MySql, el mysqldump, el problema ahora era que estábamos utilizando Linux (CentOS en nuestro caso), lo cual no nos permitía utilizar el BAT que ya teníamos.
Por todo lo comentado anteriormente es que creamos un script .sh para automatizar esta tarea, que envía una consulta al motor para obtener el nombre de las bases, genera el script de cada una, los comprime (utilizamos el RAR 5) y luego enviamos el archivo a nuestro servidor de backups utilizando como nombre del archivo la fecha actual con el mismo formato que lo tenemos en los otros backup.
Bueno, vamos al código…
USER="usuarioMySql" PASSWORD="claveMySql" #Busco las bases de datos de MySql o MariaDB echo "Buscando las bases de datos" databases=`mysql -u $USER -p$PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database` #Por cada base de datos que no sea del sistema genero el script usando mysqldump for db in $databases; do if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] && [[ "$db" != _* ]] ; then echo "Creando script de la base $db" mysqldump -u $USER -p$PASSWORD --databases $db > $db.sql fi done #Comprimo los scripts creados utilizando rar (se podría cambiar por gzip o algún otro compresor) echo "Comprimiendo los scripts" /opt/rar/rar A -s -ma -m5 -rr3p -tk -r -df `date +%Y%m%d`.rar *.sql #Copio los archivos a nuestro servidor a través de FTP echo "Copiando backup al servidor" curl -T *.rar ftp://servidor/Backups/mariadb/ --user usuarioFtp:claveFtp #Elimino los archivos temporales echo "Eliminando temporales" rm -f *.sql rm -f *.rar
Este script lo ejecutamos periódicamente utilizando cron para asegurarnos de no perder nada en caso de falla de los discos o por si necesitamos una versión anterior de alguna base de datos.
Espero les sirva.
Suerte!