mysql數據備份(windows,linux)


今天我有個朋友讓我幫他在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 來導出導入數據庫 

        

      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM