2013-02-02 201 views
26

有沒有辦法在一天的特定時間爲指定的服務器自動備份MySQL數據庫或發送帶有附件的電子郵件?您認爲哪種方式是最好和最安全的方式爲了達成這個?在Windows服務器上自動備份MySQL數據庫

+1

您可以使用MySQLBackupFTP備份您的MySQL數據庫並根據需要設置計劃。此外,此工具可以發送有關作業成功或失敗的電子郵件確認。 http://mysqlbackupftp.com/mysql-blog/how-to-backup-mysql-databases/ –

回答

18

我會使用Windows Task Scehduler/cron(取決於您的系統)和mysqldump。向下滾動鏈接,它包含一些見解如何實現你想要的。

+0

是的,它似乎這個鏈接有我需要的所有信息,希望我可以把它放在一起。非常感謝Martin。以及如何在服務器中使用Windows任務計劃程序? – Coderwannabe

+0

Windows服務器上的任務調度程序幾乎與工作站上的相同。如果您對此不滿意,可以在http://superuser.com/或http://serverfault.com/上獲得更好的答案。如果你覺得我的答案幫助你解決了你的問題,那麼你會接受它。 – martin

6

您可以添加這些命令之一Windows task scheduler

mysqldump –-user [username] –-password=[password] [database name] > [dump file] 

或以緊湊的方式:

mysqldump –u[username] –p[password] [database name] > [dump file] 

或:

mysqldump -u[user] -p[password] --result-file="c:\<path>\backup.%DATE:~0,3%.sql" [database] 
16

最好的辦法,這將是

mysqldump.exe --user=YourUserName --password=YourPassword --host=localhost --port=3306 --result-file="Path\dump.sql" --databases "DatabaseName1" "Database2" 


mysqldump.exe --user=root --password=root --host=localhost --port=3306 --result-file="c:\www\db\backup.%date:~10,4%%date:~7,2%%date:~4,2%.sql" --default-character-set=utf8 --single-transaction=TRUE --databases "dbtest1" "dbtest2" 

模式backup.%date:~10,4%%date:~7,2%%date:~4,2%.sql將創建一個唯一的名稱(backup20131010.sql)每次它將運行

現在你只需要在你的任務調度程序來調用這個命令。而已。 :)

+0

謝謝@Tarun日期格式不可讀,它如何隨YYYY-MM_DD格式改變? –

+1

備份%date:〜10,4 %% - date:〜4,2%_date:〜7,2 %%。sql @MohammadFaizanKhan希望這會有所幫助。 –

+0

謝謝!以及我已經發現,但再次感謝你 –

2

databaseW.2016,06,29-22,31,48-15.sql

@echo off 
rem Backup Database (Daily,via Task Scheduler) 
rem databaseW 
set filename="c:\xampp\dbk\databaseW.%date:~6,4%,%date:~0,2%,%date:~3,2%-%time:~0,2%,%time:~3,2%,%time:~6,2%-%time:~9,2%.sql" 
c:\xampp\mysql\bin\mysqldump.exe --user=root [email protected] --host=localhost --port=3306 --result-file=%filename% --default-character-set=utf8 --single-transaction=TRUE --databases "databaseW" 

要創建文件,其名稱是基於日期和時間,使用%date%%time%。 注意,2個變量是基於本地化和CMD外殼版本

  • 打開CMD窗口
  • 輸入echo %time%echo %date%22:11:16.8006/29/2016 Wed
  • SUBSTR通過%variable:~startpos,length% 變量我想要的時間用逗號分隔,所以cmd去 echo %time:~0,2%,%time:~3,2%,%time:~6,2%,%time:~9,2%
  • 得到一個像databaseW.2016,06,29-22,31,48-15.sql 使用set filename="databaseW.%date:~6,4%,%date:~0,2%,%date:~3,2%-%time:~0,2%,%time:~3,2%,%time:~6,2%-%time:~9,2%.sql"
  • 檢查datetime提前
  • 使用--result-file選項,而不是>;根據Mysql的曼努埃爾,文件的字符集使用「>」是UTF-16保存,而--result-file遵循--default-character-set
  • 保存到文件BackpDay-databaseW.cmd
  • 將它添加到一個新的任務Action並設置一個觸發(Windows任務調度程序)
相關問題