In this post we will see how to make a batch file to take backup of MySQL database (single database) to a particular folder on the same computer. As you may already know, there are various variants of mysqldump command. But for this exercise we will use this command:
Simple Batch File to backup MySQL Database:
If we simply want to output an sql file using sqldump command we can simply write a sqldump command similar to the one able in a text file and save it as a batch file. That will work.
Example:
Suppose, username = root, password = root, server = localhost, database name = dbdemo
Then
Let's extend the above batch file to add more features!
MYSQLDUMP Batch command to save to a particular folder, append date and time, delete older mysqldump files, open backup folder
Suppose you want to create the batch file and give it to other users to use it. And you want the directory where it is save to be the same. And you also want delete MySQL backups that are older than "X" days. So,
In the batch file code below:
REM = Comments. Does not appear on the screen
ECHO. = New Line
@echo off
REM ----------------------------------------------------------------
REM Create a directory to save mysql backup files if not already exists REM ----------------------------------------------------------------
IF NOT EXIST "C:\MYSQLBACKUPS" mkdir C:\MYSQLBACKUPS
REM ----------------------------------------------------------------
REM append date and time to mysqldump files
REM ----------------------------------------------------------------
SET dt=%date: -4%_%date: 3,2%_%date: 0,2%_%time: 0,2%_%time: 3,2%_%time: 6,2%
set bkupfilename=%dt%.sql
REM ----------------------------------------------------------------
REM Display some message on the screen about the backup
REM ----------------------------------------------------------------
ECHO Starting Backup of MySQL Database
ECHO Backup is going to save in C:\MYSQLBACKUPS\ folder.
ECHO Please wait ...
REM ----------------------------------------------------------------
REM mysqldump backup command. append date and time in filename
REM ----------------------------------------------------------------
"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump.exe" --routines -u root -proot dbdemo > C:\MYSQLBACKUPS\"mysqldb_%bkupfilename%"
REM ----------------------------------------------------------------
REM delete mysqldump backups older than 60 days
REM ----------------------------------------------------------------
ECHO.
ECHO Trying to find and delete backups older than 90 days if found.
ECHO And the result is:
forfiles /p C:\MYSQLBACKUPS /s /m *.* /d -3 /c "cmd /c del @file : date >= 60days"
ECHO.
ECHO Backup completed!
ECHO Backup saved in C:\MYSQLBACKUPS\
ECHO Thank You for backing up!
ECHO - Regards, Admin!
ECHO.
ECHO I am about to show you the backup files.
PAUSE
REM Show user the backup files
EXPLORER C:\MYSQLBACKUPS\
EXIT
REM Author: JK
REM Kohima, Nagaland
REM Modified: OCtober 7, 2016
Copy the above code to a notepad, and save it as "anyname.bat".
Run it.
Note: This is an example code. Review the code yourself and run it at your own risk. The author shall not be responsible for any issue caused by running this code if any.
mysqldump --routines -u<username> -p<password> <database name> > <output sql file name>
Simple Batch File to backup MySQL Database:
If we simply want to output an sql file using sqldump command we can simply write a sqldump command similar to the one able in a text file and save it as a batch file. That will work.
Example:
Suppose, username = root, password = root, server = localhost, database name = dbdemo
Then
- Open Notepad or any plain text editor
- Type in the command:
- Save as "mysqlbackup.bat"
- Run it
- The backup should be exported to C Drive
Let's extend the above batch file to add more features!
MYSQLDUMP Batch command to save to a particular folder, append date and time, delete older mysqldump files, open backup folder
Suppose you want to create the batch file and give it to other users to use it. And you want the directory where it is save to be the same. And you also want delete MySQL backups that are older than "X" days. So,
- Let's check if a directory already exists. And if not, create one.
- Let's append date and time to MySQL backup files.
- Let's check if there are MySQL backups older than X days and delete them.
- Show the MySQL backup folder to the user on completion
- Check if a directory called C:\MYSQLBACKUPS already exits.
- If no: Create. And go to step 2
- If yes: Continue to step 2
- Define the date and time format
- Execute mysqldump command
- Check and delete files older than 60 days
- Show the backup folder to the user
- end
In the batch file code below:
REM = Comments. Does not appear on the screen
ECHO. = New Line
@echo off
REM ----------------------------------------------------------------
REM Create a directory to save mysql backup files if not already exists REM ----------------------------------------------------------------
IF NOT EXIST "C:\MYSQLBACKUPS" mkdir C:\MYSQLBACKUPS
REM ----------------------------------------------------------------
REM append date and time to mysqldump files
REM ----------------------------------------------------------------
SET dt=%date: -4%_%date: 3,2%_%date: 0,2%_%time: 0,2%_%time: 3,2%_%time: 6,2%
set bkupfilename=%dt%.sql
REM ----------------------------------------------------------------
REM Display some message on the screen about the backup
REM ----------------------------------------------------------------
ECHO Starting Backup of MySQL Database
ECHO Backup is going to save in C:\MYSQLBACKUPS\ folder.
ECHO Please wait ...
REM ----------------------------------------------------------------
REM mysqldump backup command. append date and time in filename
REM ----------------------------------------------------------------
"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump.exe" --routines -u root -proot dbdemo > C:\MYSQLBACKUPS\"mysqldb_%bkupfilename%"
REM ----------------------------------------------------------------
REM delete mysqldump backups older than 60 days
REM ----------------------------------------------------------------
ECHO.
ECHO Trying to find and delete backups older than 90 days if found.
ECHO And the result is:
forfiles /p C:\MYSQLBACKUPS /s /m *.* /d -3 /c "cmd /c del @file : date >= 60days"
ECHO.
ECHO Backup completed!
ECHO Backup saved in C:\MYSQLBACKUPS\
ECHO Thank You for backing up!
ECHO - Regards, Admin!
ECHO.
ECHO I am about to show you the backup files.
PAUSE
REM Show user the backup files
EXPLORER C:\MYSQLBACKUPS\
EXIT
REM Author: JK
REM Kohima, Nagaland
REM Modified: OCtober 7, 2016
Copy the above code to a notepad, and save it as "anyname.bat".
Run it.
Note: This is an example code. Review the code yourself and run it at your own risk. The author shall not be responsible for any issue caused by running this code if any.
Comments
Post a Comment