Backup MariaDB/MySQL

    Si buscamos realizar un respaldo o backup de nuestra BBDD ya sea MySQL como MariaDB, podemos usar un script parecido al siguiente:

    #!/bin/bash
    
    DATA=$(date +%d%m%Y%H%M)
    
    mkdir -p /backups
    
    DB_USER='root'
    DB_PASS='123456'
    DB_HOST=`echo $HOSTNAME`
    DB_IP=`echo $(hostname -I) | awk '{print $1}'`
    BACKUP_DAYS='7'
    
    /usr/bin/mysqlcheck --all-databases -u root -p${DB_PASS}
    /usr/bin/mysqlcheck --all-databases -o -u root -p${DB_PASS}
    /usr/bin/mysqlcheck --all-databases --auto-repair -u root -p${DB_PASS}
    /usr/bin/mysqlcheck --all-databases --analyze -u root -p${DB_PASS}
    
    mysql -s -u ${DB_USER} -p${DB_PASS} -e 'show databases' -s --skip-column-names | egrep -v 'information_schema|performance_schema|mysql' --silent
    if [ "$?" -eq "0" ]; then
       for DB in $(mysql -u ${DB_USER} -p${DB_PASS} -e 'show databases' -s --skip-column-names | egrep -v 'information_schema|performance_schema|mysql'); do
          echo "[  OK  ] [ ${DB} ] Backup init"
          NAME="${DATA}-${DB_HOST}-${DB}"
          /usr/bin/mysqldump -u ${DB_USER} -p${DB_PASS} --databases ${DB} --add-drop-database | gzip -9 > "/backups/${NAME}.sql.gz"
    
          # CHECK BACKUP
          zgrep -q 'Dump completed on' /backups/${NAME}.sql.gz
          if [ "$?" -ne "0" ]; then
                echo "[  KO  ] [ ${DB} ] Backup not Dump complete"
          else
                echo "[  OK  ] [ ${DB} ] Backup Dump complete"
                if [ -f "/backups/${NAME}.sql.gz" ]; then
                     find /backups -type f -mtime +${BACKUP_DAYS} -name "*-${NAME}.sql.gz" | xargs rm -rf
                            echo "[  OK  ] [ ${DB} ] Clean old Backups"
                fi
    
                # COPY REMOTE BACKUP
                # /usr/bin/sshpass -p '123456' /usr/bin/scp -rp /backups/${NAME}.sql.gz pi@node01:/backups/
          fi
          echo "------------------------------------------------------"
       done
    else
       echo "[  KO  ] [ ${DB} ] Connection failed"
    fi

    y recordar añadir una tarea planificada, via cron. Por ejemplo, a las 23:30 cada noche:

    30 23 * * * /scripts/MYSQL_BACKUP.sh

    Leave a Reply

    Your email address will not be published. Required fields are marked *