今天我有個朋友讓我幫他在windowServer服務器上備份一下mysql的數據庫,於是花了一天的時間完成了一個每天定時備份數據庫的功能,小編在這里為大家記錄一下:
首先對於mysql命令行的導入導出作一個簡單的梳理
一、導入
①mysql -h主機 -u賬號 -p密碼 db < db.sql[存放路徑,下同] --為db數據庫導入數據 / mysqljump -h地址 -u賬號 -p密碼 db < db.sql --為db數據庫導入數據
②mysql -h主機 -u賬號 -p密碼 db table1 < db.table1.sql --為db數據庫table1表導入數據 / mysqljump -h主機 -u賬號 -p密碼 db table1 < db.table1.sql --為db數據庫table1表導入數據
③source 數據庫文件路徑(.sql)
二、導出
①mysqldump 工具導出
mysqldump -h主機 -u賬號 -p密碼 數據庫 > 存放路徑(db.sql-->默認是在mysql安裝路徑下bin目錄下)------------導出數據庫
mysqldump -h主機 -u賬號 -p密碼 數據庫 數據表 > 存放路徑 ------------導出數據表下面的某張表
rem 表示在批處理文件執行過程中,只顯示結果,而不顯示執行的命令 echo on 的作用很明顯與echo off相反
@echo off
rem 開啟延遲變量擴展
SETLOCAL ENABLEDELAYEDEXPANSION
rem set是定義賦值變量 賦值變量 = 前后不能有空格 rem 和 :: 都是起到注釋的作用
set mysql_data_path=D:\mysqldata2\data\ set back_path=D:\DATA_BAK\MYSQL\ @set yy=%date:~0,4% @set mm=%date:~5,2% @set dd=%date:~8,2% @set datedir=%yy%-%mm%-%dd% if not exist %back_path%%datedir%( echo mkdir%back_path%%datedir% md %back_path%%datedir% ) set "filename1=%date:~0,4%-%date:~5,2%-%date:~8,2%\contractunit.sql" set "filename2=%date:~0,4%-%date:~5,2%-%date:~8,2%\esbdb.sql" set "filename3=%date:~0,4%-%date:~5,2%-%date:~8,2%\g_centerbookdb.sql" set "filename4=%date:~0,4%-%date:~5,2%-%date:~8,2%\g_contractunit.sql" set "filename5=%date:~0,4%-%date:~5,2%-%date:~8,2%\g_customerdb.sql" set "filename6=%date:~0,4%-%date:~5,2%-%date:~8,2%\g_esbdb.sql" set "filename7=%date:~0,4%-%date:~5,2%-%date:~8,2%\g_membercomponentdb.sql" set "filename8=%date:~0,4%-%date:~5,2%-%date:~8,2%\g_stockdb.sql" set "filename9=%date:~0,4%-%date:~5,2%-%date:~8,2%\g_systemcomponentdb.sql" set "filename10=%date:~0,4%-%date:~5,2%-%date:~8,2%\jccrmdb.sql" set "filename11=%date:~0,4%-%date:~5,2%-%date:~8,2%\jddasynreqdb.sql" set "filename12=%date:~0,4%-%date:~5,2%-%date:~8,2%\mysql.sql" set "filename13=%date:~0,4%-%date:~5,2%-%date:~8,2%\shopdb.sql" set "filename14=%date:~0,4%-%date:~5,2%-%date:~8,2%\stockdb.sql" set "filename15=%date:~0,4%-%date:~5,2%-%date:~8,2%\tcontractunit.sql" set "filename16=%date:~0,4%-%date:~5,2%-%date:~8,2%\tjccrmdb.sql" set "filename17=%date:~0,4%-%date:~5,2%-%date:~8,2%\tjddasynreqdb.sql" set "filename18=%date:~0,4%-%date:~5,2%-%date:~8,2%\tshopdb.sql" set "filename19=%date:~0,4%-%date:~5,2%-%date:~8,2%\tstockdb.sql" "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -uqtsa -pqtvip@123456 --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x contractunit > %back_path%!filename1! "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -uqtsa -pqtvip@123456 --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x esbdb > %back_path%!filename2! "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -uqtsa -pqtvip@123456 --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x g_centerbookdb > %back_path%!filename3! "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -uqtsa -pqtvip@123456 --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x g_contractunit > %back_path%!filename4! "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -uqtsa -pqtvip@123456 --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x g_customerdb > %back_path%!filename5! "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -uqtsa -pqtvip@123456 --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x g_esbdb > %back_path%!filename6! "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -uqtsa -pqtvip@123456 --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x g_membercomponentdb > %back_path%!filename7! "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -uqtsa -pqtvip@123456 --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x g_stockdb > %back_path%!filename8! "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -uqtsa -pqtvip@123456 --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x g_systemcomponentdb > %back_path%!filename9! "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -uqtsa -pqtvip@123456 --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x jccrmdb > %back_path%!filename10! "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -uqtsa -pqtvip@123456 --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x jddasynreqdb > %back_path%!filename11! "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -uqtsa -pqtvip@123456 --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x mysql > %back_path%!filename12! "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -uqtsa -pqtvip@123456 --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x shopdb > %back_path%!filename13! "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -uqtsa -pqtvip@123456 --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x stockdb > %back_path%!filename14! "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -uqtsa -pqtvip@123456 --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x tcontractunit > %back_path%!filename15! "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -uqtsa -pqtvip@123456 --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x tjccrmdb > %back_path%!filename16! "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -uqtsa -pqtvip@123456 --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x tjddasynreqdb > %back_path%!filename17! "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -uqtsa -pqtvip@123456 --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x tshopdb > %back_path%!filename18! "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -uqtsa -pqtvip@123456 --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x tstockdb > %back_path%!filename19! REM D: REM cd %mysql_data_path% REM for /R %%s in (.,*) do ( REM if exist %%s\nul ( REM if "%%s" NEQ "%mysql_data_path%." ( REM set a=%%~nxs REM set "filename=%date:~0,4%-%date:~5,2%-%date:~8,2%\!a!.sql" REM "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -uqtsa -pqtvip@123456 --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x !dbname! > %back_path%!filename! REM ) REM ) REM ) REM 不知道為什么這個for循環導出數據有問題,哎!知道的朋友請留下的你美言 echo backup success #pause
-----------------這個bat編程是今天現學的,懂不了太多
②復制data文件夾備份
操作之前一定得關閉mysql服務 net stop mysql(如果加入系統服務的話)
*******************************Code Start****************************
net stop mysql
xcopy c:\mysql\data\bbs\*.* c:\db_bak\bbs\%date:~0,10%\ /S /I net start mysql *******************************Code End*****************************
③利用WinRAR對MySQL數據庫進行定時備份
對於MySQL的備份,最好的方法就是直接備份MySQL數據庫的Data目錄。下面提供了一個利用WinRAR來對Data目錄進行定時備份的方法。
*******************************Code Start*****************************
net stop mysql
c:\progra~1\winrar\winrar a -ag -k -r -s d:\mysql.rar d:\mysql\data net start mysql *******************************Code End*****************************
小編提示下 :以上所有的路徑都是小編所使用環境的路徑,如果大家使用請根據自己的路徑來改寫程序,同時對於bat編程請大家百度學習,因為我也是今天學習的,略懂一二!
最后的定時操作,對於window我們可以使用任務計划程序 設置每天定時任務 ;對於linux我們可以使用Crontab來處理。還有就是linux下面也可以使用mysqldump source 來導出導入數據庫