Подтвердить что ты не робот

Резервное копирование базы данных MySQL автоматически на сервере Windows

Есть ли способ создать резервную копию базы данных MySQL автоматически в определенное время дня для назначенных серверов или отправить электронное письмо с приложением. Какой из них вы считаете лучшим и безопасным способом для достижения этого?

4b9b3361

Ответ 1

Я бы использовал Windows Task Scehduler/cron (в зависимости от вашей системы) и mysqldump. Прокрутите вниз по ссылке, она включает в себя некоторые идеи о том, как достичь того, чего вы хотите.

Ответ 2

Лучший способ сделать это:

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) при каждом запуске

Теперь вам просто нужно вызвать эту команду в своем планировщике задач. Это.:)

Ответ 3

Вы можете добавить одну из этих команд в 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]

Ответ 4

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.80, 06/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"
  • заранее проверьте date и time
  • используйте параметр --result-file вместо >; Согласно Mysql Manuel, кодировка файла, сохраненная с помощью " > ", равна UTF-16, а --result-file следует за --default-character-set
  • сохранить в файл BackpDay-databaseW.cmd
  • добавьте его в новую задачу Action и установите триггер (Планировщик задач Windows)

Ответ 5

Я сделал работу, похожую на ту, что объясняли другие люди... но с небольшой разницей и дополнительной работой:

1) я сделал командный файл
2) Запустил этот пакетный файл через планировщик Windows
3) Составил соответствующий график для этой задачи
4) Внутри командного файла выполняются следующие шаги:

  • 4-1) Подготовлено имя файла на основе текущей даты
  • 4-2) Получил резервную копию mysqldump.exe в соответствующей директории и имени файла
  • 4-3) Создайте файл сжатия с помощью приложения 7-Zip (установите его) и затем удалите несжатую резервную копию
  • 4-4) Разместите копию в нашей сети File-Server

Вот пример скрипта (.bat):

@echo off
set current=%date:~10,4%%date:~4,2%%date:~7,2%
set filename="E:\MySQL Backups\DBName-%current%.sql"
set filename2="E:\MySQL Backups\DBName-%current%.zip"
echo %filename%
cd "E:\MySQL Backups"
C:\"Program Files"\MySQL\"MySQL Server 5.5"\bin\mysqldump.exe db_name --user=root --password=rootpass --host="127.0.0.1" --port=instancePort --result-file=%filename% --default-character-set=utf8 --single-transaction=TRUE
echo backup-finished

if exist %filename% (
    "C:\Program Files\7-Zip\7z.exe" a %filename2% %filename%
    echo zip-finished
    del %filename%
)
if exist %filename2% (
    copy %filename2% "\\192.168.x.x\MySQL Backups"
    echo copy-finished
)