Create Separate MySQL Backups for Each Database using mysqldump

In this guide, we will show you how to create backups for each MySQL database in your server. We will also share commands of how to import such backups. This is normally handy most times than creating a huge .SQL file with all your databases backed up in there.

Create individual .SQL files for each database

mysql -N -e 'show databases' | while read dbname; do mysqldump --complete-insert --routines --triggers --single-transaction "$dbname" > "$dbname".sql; done

Create individual .SQL files for each database to a particular location, say /home/dbbackups

mysql -N -e 'show databases' | while read dbname; do mysqldump --complete-insert --routines --triggers --single-transaction "$dbname" >  /home/dbbackups/"$dbname".sql; done

Create individual .SQL files for reach database and compress them

mysql -N -e 'show databases' | while read dbname; do mysqldump --complete-insert --routines --triggers --single-transaction "$dbname" > "$dbname".sql; [[ $? -eq 0 ]] && gzip "$dbname".sql; done

Importing individual .SQL files into MySQL

Warning! This will overwrite your databases without prompting for confirmation. Use cautiously.

for sql in *.sql; do dbname=${sql/\.sql/}; echo -n "Now importing $dbname ... "; mysql $dbname < $sql; echo " done."; done

Credits

https://ma.ttias.be/mysql-back-up-take-a-mysqldump-with-each-database-in-its-own-sql-file/