Fazer backup de todas as bases de dados é bem simples usando o mysqldump
mysqldump -u root -p --all-databases > all_dbs.sql
Mas o problema que temos fazendo isso, é que todas as bases ficam em arquivo só, o que dificulta bastante a restauração destas bases, principalmente quando necessita restaurar apenas uma delas, ou algumas poucas bases.
Na internet podemos encontrar vários scripts complexos para esta solução, mas o script encontrado neste site resolve pontualmente de modo muito mais simples. Eu testei o script em meu servidor e o resultado foi de acordo com o esperado, valeu a pena;
#! /bin/bash TIMESTAMP=$(date +"%F") BACKUP_DIR="/backup/$TIMESTAMP" MYSQL_USER="backup" MYSQL=/usr/bin/mysql MYSQL_PASSWORD="password" MYSQLDUMP=/usr/bin/mysqldump mkdir -p "$BACKUP_DIR/mysql" databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"` for db in $databases; do $MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/mysql/$db.gz" done
Resultado: