Дамп MySQL базы данных
Несколько полезных приемов, которые позволят вам значительно ускорить работу с резервным копированием и восстановлением баз данных. Конечно дамп MySQL можно делать и с помощью стороннего ПО, того же phpMyAdmin, но встроенными утилитами самого сервера БД это удобнее и быстрее.
Делаем резервную копию (он же дамп, он же бекап)
Все данные одной базы
1 | mysqldump-uUSER-pPASSWORD DATABASE>dumpname.sql |
USER
– логин пользователя,
PASSWORD
– пароль. Обратите внимание, что между
-p
и
PASSWORD
нет пробела.
Все данные нескольких определенных баз
Добавляем параметр
--databases
или
-B
1 | mysqldump-uUSER-pPASSWORD--databases DATABASE1 DATABASE2 DATABASE3...>dumpname.sql |
USER
– логин пользователя,
PASSWORD
– пароль. Обратите внимание, что между
-p
и
PASSWORD
нет пробела.
Данные всех баз
Указываем ключ
--all-databases
или
-A
.
1 | mysqldump-uUSER-pPASSWORD--all-databases>dumpname.sql |
USER
– логин пользователя,
PASSWORD
– пароль. Обратите внимание, что между
-p
и
PASSWORD
нет пробела.
Дамп только структуры базы данных MySQL
За это это отвечает параметр
--no-data
или
-d
.
1 | mysqldump--no-data-uUSER-pPASSWORD DATABASE>dumpstruct.sql |
Дамп определенных таблиц
1 | mysqldump-uUSER-pPASSWORD DATABASE TABLENAME1 TABLENAME2.. >dumpstruct.sql |
Сразу архивируем дамп MySQL
1 | mysqldump-uUSER-pPASSWORD DATABASE|gzip>dumpname.sql.gz |
Добавляем дату и время к дампу
1 | mysqldump-uUSER-pPASSWORD DATABASE|gzip>`date+dumpname.%Y%m%d_%H%M%S.sql.gz` |
Восстанавливаем дамп MySQL
Заливаем все данные
1 | mysql-uUSER-pPASSWORD<dumpname.sql |
Заливаем данные в конкретную базу
1 | mysql-uUSER-pPASSWORD DATABASE<dumpname.sql |
Заливаем данные из заархивированного дампа
1 | gunzip<dumpfile.sql.gz|mysql-uUSER-pPASSWORD DATABASE |
Распространенные ошибки, возникающие при создании дампа MySQL
1 | Error2013:Lost connection toMySQL server during query... |
Ошибка связана с тем, что не хватает времени для выполнения операции. Для исправления в конфигурационном файле /etc/my.cnf в секции [mysqldump] увеличьте значение параметров
wait_timeout=600
и
interactive_timeout=600
. Значение времени подберите под ваши условия.
1 | Error2020:Got packet bigger than'max_allowed_packet'bytes when dumping table... |
Ошибка связана с тем, что объем вносимых данных превышает разрешенный. Решается 2-я способами:
- добавить параметр
--max_allowed_packet=128M
к нашим командам - Добавить параметр
max_allowed_packet=128M
в секцию [mysqldump] конфигурационного файла /etc/my.cnf
Соответственно, размер данных указываем тот, который нам необходим.
1 | Error2006:MySQL server has gone away |
Данная ошибка может быть связана, как с недостаточным значение параметра
wait_timeout
, так и с маленьким размером
max_allowed_packet
. Решения собственно уже приведены.