Ежедневное Архивирование Баз Данных Mysql Под Windows

Задача, которая стояла передо мной: Есть сервер с mysql под управлением windows server 2008 R2, на котором помимо всего прочего работает mysql с несколькими десятками баз данных, количество и состав которых периодически меняется.

Необходимо организовать ежедневное резервное копирование этих баз без остановки сервера mysql и таким образом, чтобы каждая база попадала в отдельный архив.

Эта, казалось бы, самая простая задача (возможно, так оно и есть) оказалась для меня довольно сложной.

Что нам говорит Google? Насчет того, что есть mysqlhotcopy и mysqldump. Первый работает напрямую с файлами базы данных, второй делает дампы с помощью запросов.

Мне не удалось заставить работать mysqlhotcopy даже с самыми простыми параметрами, и погуглив, я пришел к выводу (поправьте меня, если я ошибаюсь), что этот скрипт не подходит для Windows. Я начал с mysqlhotcopy, потому что работать напрямую с файлами в моем случае проще — просто втыкаешь файлы в мускул и работай.

Дамп хоть и весит меньше из-за отсутствия индексов, но все равно нужно импортировать.

Но есть другой способ без остановки MySQL Не нашел, сделаем дампы.

Здесь Я нашел отличное руководство по ключам сценариев.

Так, он может сделать общий дамп всех баз в один файл (крайне неудобно), либо сделать дампы перечисленных баз.

Поскольку количество и названия наших баз меняются, писать список не вариант — мы будем каждый раз замучаться его редактировать.

Это означает, что нам нужен скрипт, который будет вставлять каждую базу данных в mysqldump одну за другой.

Я реализовал это так — батник смотрит, какие папки находятся в каталоге данных mysql и в цикле подставляет имя каждой из них (которое является именем базы данных) в строку параметра mysqldump.

   

SET SOURCEDIR=E:\xampp\mysql\data\ set hour=%TIME:~0,2% set minute=%TIME:~3,2% set second=%TIME:~6,2% set HHMMSS=%hour%-%minute% for /d %%i in (%SOURCEDIR%\*) do "E:\xampp\mysql\bin\mysqldump.exe" -uusername -hlocalhost -ppassword -c -n %%~ni | "c:\Program Files\7-Zip\7z.exe" a -tgzip -si"%%~ni_%DATE%_%HHMMSS%.

sql" "D:\backups\data\%DATE%_%HHMMSS%\%%~ni.sql.gzip" eachfile.exe -purge -r -w -e -d 13 -l 0 -dir D:\backups\data\ exit

Полученный дамп немедленно архивируется с помощью 7-молния в формате gzip (чтобы полученный файл можно было скормить мускулу не распаковывая).

Ну а утилитаeachfile удалит устаревшие резервные копии.

Гугля, я тоже наткнулся на программу Инструмент резервного копирования MySQL что, однако, я не осмелился проверить.

Теги: #резервное копирование #MySQL #Windows #Разработка веб-сайтов

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.