Как выполнить резервное копирование файлов данных MySQL напрямую (физически), но согласованно в Windows?

MySQL поставляется с командами "dump" и утилитами, которые преобразуют базу данных в текстовую форму и хранят этот текст где-то на диске. Для большой базы данных преобразование в текст может быть медленной операцией и генерировать большие файлы SQL, содержащие текст.

MySQL поддерживает три или четыре внутренних и компактных файла в папке Windows, названной для базы данных и расположенной в ее папке данных. Копирование этих файлов происходит намного быстрее, чем копирование текстовых файлов SQL.

Но эти файлы не обновляются во время работы сервера MySQL, поэтому копирование из этих файлов может привести к старым данным, а копирование в эти файлы может не показать новые данные в приложениях MySQL.

Есть ли команда BAT/CMD, которую я могу использовать, чтобы сделать файлы данных согласованными (правильными), чтобы их можно было скопировать из или в MySQL?

1 ответ

Мое собственное предложение - использовать следующую команду Windows:

set bin=C:\Program Files\MySQL\MySQL Server 5.6\bin
"%bin%/mysql" -e "FLUSH TABLES WITH READ LOCK; UNLOCK TABLES;" --user=UserName --password=Password DatabaseName

Это быстро приводит все внутренние данные MySQL для базы данных в свои файлы в папку базы данных в папке данных MySQL, откуда они могут быть скопированы в другую папку (для резервного копирования или репликации). Вам придется настроить эту команду для вашей конкретной версии MySQL, а также для вашей базы данных и администратора.

Эта команда BAT/CMD работает быстро и хорошо по моему опыту. Я часто использую его для резервного копирования и обновления приложений MySQL между двумя компьютерами.

Единственное другое предложение, которое я могу сделать, - это использовать MySQL Workbench (который поставляется с MySQL) для остановки сервера MySQL. Когда он остановлен, он записывается на диск. Не забудьте запустить сервер MySQL, когда вы закончили использовать файлы напрямую (в это время MySQL считывает файлы базы данных с диска).

Примечание: если вы просто скопируете файлы данных для базы данных в папку данных другого уже открытого экземпляра MySQL, вы не увидите данные в приложениях MySQL! Можно подумать, что MySQL будет проверять дату / время изменения файлов на диске для обнаружения обновлений, но это не так. И он не держит свои файлы заблокированными, показывая Windows, что они используются, что они на самом деле.

Другие вопросы по тегам