Назад | Перейти на главную страницу

Как безопасно сделать резервную копию MySQL с помощью решений для резервного копирования на основе VSS

Один из моих клиентов работает с MySQL в системе Windows Server 2008. Их регулярное резервное копирование выполняется с помощью StorageCraft ShadowCopy, который использует службу VSS для резервного копирования открытых файлов.

Некоторые исследования показывают, что MySQL не полностью поддерживает VSS и что таблицы необходимо заблокировать перед теневой операцией, а затем разблокировать. Есть сообщение на http://forum.storagecraft.com/Community/forums/p/548/2702.aspx который указывает шаги, которые необходимо выполнить, однако у пользователя возникли некоторые трудности при их выполнении, и никакого последующего решения не было опубликовано. В частности, им удалось написать пакетный файл для блокировки базы данных, однако, как только пакетный файл возвращается из MySQL, он разрывает соединение и, таким образом, снимает блокировку.

Я ищу способ отправить команду MySQL FLUSH TABLES WITH READ LOCK, затем выполните резервное копирование и отправьте UNLOCK TABLES когда резервное копирование будет завершено.

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

Могу я дать несколько рекомендаций?

Поскольку инструкция MySQL «system» или «!» Работает только под Linux, вы застряли с остановкой вашей службы, сделайте снимок вашего vss и запустите службу.

Системная команда позволит сделать снимок vss из mysql, чтобы вы не потеряли блокировки. Я считаю, что он используется для резервного копирования LVM Snapshot.

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

РЕДАКТИРОВАТЬ: Также не уверен, насколько это будет полезно для ShadowProtect, но, возможно, посмотрите, сможете ли вы запустить процесс резервного копирования из командной строки и запустить его как запланированное задание. Это определенно поможет, если вы хотите использовать VSS изначально.

Вот командный файл, который я использую, он называется flush_lock_vss.bat - Приводы M и L предназначены для журналов данных и двоичных журналов соответственно:

@echo off

echo FLUSH TABLES WITH READ LOCK;

vssadmin create shadow /for=m: >&2
vssadmin create shadow /for=l: >&2

echo UNLOCK TABLES;
echo \q

Подключите ввод этого в mysql процесс - запускать конечно от имени администратора:

C:\where\you\are> flush_lock_vss | C:\path\to\mysql-install\bin\mysql.exe -u username --password=TotallySecretPwd!

Вы увидите вывод для команд vssadmin, но FLUSH и UNLOCK команды будут отправлены в ваш экземпляр MySQL.