Search code examples
shellbatch-filesshmysqldatabase-backups

Batch export of multiple mysql databases


I am trying to make backups of my 15 MySQL databases on my web server. This list of databases will continue to grow with my (hopefully!) increasing client base.

Obviously, I can do a mysql dump with this command:

mysqldump --add-drop-table -h host -u username -p"password" databasename > filename.sql

My question is, is there any way to batch-export MySQL databases (and, likewise, batch import)? Am I forced to do a backup of each database individually?

In fact, I'd like to script this so I can do it every day by just running a .bat file. I found this online (from this website - http://www.dougboude.com/blog/1/2009/09/7A.Batch-Script-to-Backup-MySQL-Database.cfm):

@echo off
for /f "tokens=1" %%i in ('date /t') do set DATE_DOW=%%i
for /f "tokens=2" %%i in ('date /t') do set DATE_DAY=%%i
for /f %%i in ('echo %date_day:/=-%') do set DATE_DAY=%%i
for /f %%i in ('time /t') do set DATE_TIME=%%i
for /f %%i in ('echo %date_time::=-%') do set DATE_TIME=%%i
rem Killing all files older than a week old...
forfiles /D -8 /M *.zip /C "cmd /c del @fname.zip"
"C:\mysql\bin\mysqldump" -u username -p"password" dbname >C:\mysqlbackup\%DATE_DAY%_%DATE_TIME%_database.sql
wzzip C:\mysqlbackup\%DATE_DAY%_%DATE_TIME%_database.zip C:\mysqlbackup\%DATE_DAY%_%DATE_TIME%_database.sql -mex

Do I need to copy/paste this script for each database?

I'm really new to SSH and shell commands so any help is greatly appreciated! Thanks.


Solution

  • The answer was to add -all-databases to my mysqldump command: mysqldump -u username -ppassword –all-databases > dump.sql

    Just refined my google search term to "mass export mysql databases" and found this site: http://www.mydigitallife.info/how-to-backup-and-restore-export-and-import-mysql-databases-tutorial/