這兩天服務器不知道什麼原因,數據庫第三方軟件備份經常失敗,因而考慮換個方式。
基於bat備份數據。個人比較喜歡,原因是不必依賴第三方軟件,而且操作簡單,自定義也很方便。
數據庫:ddhost
mysql用戶名:root
密碼:hhhh
1、新建bat:
(1)生成一個時間戳,例如20160428;
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
(2)保存備份文件的根目錄
set "base_dir=E:\BACK\"
(3)生成一個當天備份文件保存的目錄
set "back_up_dir=%base_dir%ddhost_%Ymd%"
(4)創建一個目錄
md "%back_up_dir%"
(5)使用mysqldump備份sql
cd C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump -h localhost --single-transaction --ignore-table=ddhost.T_SYS_FILE --ignore-table=ddhost.T_SYS_FILE2 -uroot -phhhh --default-character-set=utf8 ddhost > "%back_up_dir%"\ddhost.sql
注:因爲有兩張表情況比較特殊,不需要備份。基於此,排除這兩張表使用【--ignore-table=db_name.table_name】;成功備份後發現中文出現亂碼,百度了一下,可使用【--default-character-set=utf8】。
至此,完成備份數據庫的bat編寫完成。接下來就是考慮定時執行的問題啦~~windows可以設置任務計劃,把這個bat放到任務計劃裏面即可。
在執行bat過程中,mysql的用戶名/密碼都被暴露了出來,那麼能不能讓bat在後臺偷偷跑呢??關於這個問題,網上給出了很多答案,這裏記錄其中一種:
2、新建一個vbs文件;
(1)在文件內加入:createobject("wscript.shell").run "E:\mysql_back\mysql_backup.bat",0;
注:E:\mysql_back\mysql_backup.bat是備份數據庫的bat的路徑!!
(2)把該vbs文件加入到任務計劃。
在操作過程中還發現一個問題:把備份好的sql還原到數據庫提示中文亂碼,關於這個問題也在網上找到了方案,以下是完整的還原語句:
>mysql -hlocalhost --default-character-set=utf8 -uroot -phhhh ddhost3 < E:\BACK\ddhost_20160428\ddhost.sql