mysqldump пример создания дампа


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



При успешном завершении процесса вывода в консоль не будет:

mysqldump пример


С skip-lock-tables из базы в процессе создания дампа можно читать информацию, для добавления данных она заблокирована.

Это подходящее решение для сравнительно небольших баз. С объемными базами и для ответственных проектов, в которых консистентность данных критична оно не самое лучшее.



Для таких проектов нужны специальные техники, такие как репликация с созданием копии с реплики или горячие бэкапы. Горячие бэкапы делаются без блокировок, дамп затем снимается с копии.

Сказать спасибо