Как выполнить резервное копирование файлов данных 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, что они используются, что они на самом деле.