mysqldump — процесс создания файла .sql, содержащего структуру всех таблиц и все данные в ней. Дамп можно делать для каждой базы в отдельности, для некоторых баз или для всех на сервере. Рассмотрим простейший пример использования mysqldump и несколько часто применяемых ключей.
Утилита mysqldump хороша тем, что позволяет избежать лимитов веб-сервера. Они будут если пользоваться PHPMYADMIN и через него создавать дампы объемом от нескольких гигабайт. Также mysqldump не является угрозой безопасности в отличие от любого веб-интерфейса для работы с БД.
Обратная созданию дампа процедура — восстановление ввыполняется за счет инструмента командной строки с именем mysql. Это клиент для работы с MySQL сервером.
При разворачивании сайта на сервере в созданную базу данных требуется загрузить дамп. Дамп представляет собой структуру всех таблиц и их содержимое. Это информация о всех материалах на сайте, товарах в интернет-магазине и т.п.
Утилита практически всегда есть на сервере и устанавливать ее дополнительно не нужно.
Пример базового использования mysqldump
mysqldump -u USERNAME -pPASSWORD dbname > dbname.sql
dbname.sql — произвольное имя файла дампа, имя таблицы можно посмотреть в конфигурационном файле сайта.
Восстановление из дампа выполняется так (предварительно нужно создать базу dbname):
mysql -u USERNAME -pPASSWORD dbname < dbname.sql
Если на сервере проводятся какие-то потенциально опасные работы всегда нужно делать дампы всех баз, если их много можно использовать ключ --all-databases
. Будут включены системных базы, такие как база mysql, содержащая информацию о всех созданных пользователях.
mysqldump -u USERNAME -pPASSWORD
--all-databases
> all.sql
Как в mysqldump исключить таблицу
С дополнительным ключом можно исключить одну из таблиц базы --ignore-table=tablename.one-table
, это может потребоваться когда, например, в базе есть объемная таблица с логами и она не представляет ценности .
mysqldump -u USERNAME -pPASSWORD tablename
--ignore-table
=tablename.one-table > tablename.sql
Пример mysqldump с исключением блокировки таблиц
mysqldump при создании дампа блокирует таблицы. На момент создания копии запись в них невозможна, это стоит учитывать в больших проектах для которых свойственна постоянная работа с базой большое количество запросов к ней.
Утилита позволяет снять SQL дамп без блокировок. Потребуется добавить 2 ключа.
mysqldump -u USERNAME -pPASSWORD --single-transaction --skip-lock-tables dbname > dbname.sql
При успешном завершении процесса вывода в консоль не будет:
С skip-lock-tables из базы в процессе создания дампа можно читать информацию, для добавления данных она заблокирована.
Это подходящее решение для сравнительно небольших баз. С объемными базами и для ответственных проектов, в которых консистентность данных критична оно не самое лучшее.
Для таких проектов нужны специальные техники, такие как репликация с созданием копии с реплики или горячие бэкапы. Горячие бэкапы делаются без блокировок, дамп затем снимается с копии.