2013-02-02 6 views
26

Czy istnieje sposób na automatyczne tworzenie kopii zapasowych bazy danych MySQL o określonych porach dnia dla wyznaczonych serwerów lub wysłanie wiadomości e-mail z załącznikiem. Czy uważasz, że jest to najlepszy i najbezpieczniejszy sposób? osiągnąć to?Kopia zapasowa bazy danych MySQL automatycznie na serwerze Windows

+1

Możesz użyć MySQLBackupFTP, aby wykonać kopię zapasową baz danych MySQL i ustawić harmonogram według potrzeb. Ponadto to narzędzie może wysyłać potwierdzenia e-mail dotyczące powodzenia lub niepowodzenia pracy. http://mysqlbackupftp.com/mysql-blog/how-to-backup-mysql-databases/ –

Odpowiedz

18

Chciałbym użyć Windows Task Scehduler/cron (w zależności od systemu) i mysqldump. Przewiń w dół link, zawiera kilka wskazówek, jak osiągnąć to, co chcesz.

+0

Tak, wydaje się, że ten link zawiera wszystkie informacje, których potrzebuję, mam nadzieję, że mogę je połączyć. Dziękuję bardzo, Martin.i Jak korzystać z programu do planowania zadań systemu Windows na serwerze? – Coderwannabe

+0

Harmonogram zadań na serwerze Windows jest prawie taki sam jak na stacji roboczej. Jeśli nie czujesz się z tym dobrze, możesz uzyskać lepsze odpowiedzi na stronie http://superuser.com/ lub http://serverfault.com/. Jeśli uważasz, że moja odpowiedź pomogła ci rozwiązać twój problem, zaakceptowanie go byłoby dla ciebie życzliwe. – martin

6

można dodać jeden z tych poleceń do Windows task scheduler:

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

lub w zwarty sposób:

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

czyli

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

Najlepszym sposobem na to byłoby

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" 

Wzór backup.%date:~10,4%%date:~7,2%%date:~4,2%.sql stworzy unikalną nazwę (backup20131010.sql) za każdym razem, to będzie działać

Teraz wystarczy zadzwonić do tego polecenia w swojej harmonogramu zadań. to jest to! :)

+0

Dzięki formatowi daty @Tarun nie można odczytać w jaki sposób można zmienić format YYYY-MM_DD? –

+1

kopia zapasowa.% Data: ~ 10,4 %% - data: ~ 4,2% _ data: ~ 7,2 %%. Sql @MohammadFaizanKhan nadzieję, że to pomoże. –

+0

dzięki! Cóż, znalazłem już to, ale jeszcze raz dziękuję –

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" 

Aby utworzyć plik, którego nazwa jest na podstawie daty i czasu, należy %date% i %time%. Uwaga że 2 zmienne są na podstawie ustawień regionalnych i cmd powłoki wersji

  • otworzyć CMD okien
  • wejście echo %time% i echo %date% kopalnia 22:11:16.80, 06/29/2016 Wed
  • substr zmienną poprzez %variable:~startpos,length% Chcę czas rozdzielany przecinkiem, więc cmd przechodzi na echo %time:~0,2%,%time:~3,2%,%time:~6,2%,%time:~9,2%
  • , aby uzyskać nazwę pliku, taką jak databaseW.2016,06,29-22,31,48-15.sql Zastosowanie 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"
  • Sprawdź date i time z góry
  • użyć opcji zamiast >--result-file; Zgodnie z Mysql Manuel, charset pliku zapisywane za pomocą „>” jest UTF-16, natomiast --result-file następuje po --default-character-set
  • zapisać do pliku BackpDay-databaseW.cmd
  • dodać go do nowego zadania Action i ustawić wyzwalacz (Windows Task Scheduler)