Решение проблемы backup mysql
Решение проблемы backup mysql
Столкнулся недавно с проблемой бэкапов, внезапно перестал делаться бэкап одного сайта и только по mysql. Ничего не делал ни в панели, ни в mysql, ни где либо ещё, просто вот перестал работать и всё. Выяснилось, что при создании бэкапа БД команда выдаёт
Причём нигде в логах или консоли эта ошибка не выводилась, нашел опытным путём расковыряв скрипт бэкапа и повторив команду дампа, а выгляди она так
Я пробовал увеличивать в my.conf и в секции mysqld и в секции mysqldump max_allowed_packet, но результат это не дало, т.е. при запросе в pma эта переменная выводится правильно, но дамп так и не делается выдавая ошибку 2020.
Я так понимаю, что при дампе мы передаём конфиг --defaults-file где прописаны только логин, пароль, хост, а остальные параметры берутся по дэфолту при дампе, по этому и игнорируются наш конфиг my.conf. Решил пробему добавив параметр --max_allowed_packet=512M в команду в скрипте.
Файл /usr/local/vesta/func/db.sh строка 47(у меня по крайней мере), функция mysql_dump(). Найти
и отредактировать чтобы получилось
При редактировании скриптов надо помнить, что если ваш редактор поменяет формат переноса строк с Unix(LF) и/или кодировку файла с UTF8 можно встретить проблемы, так что будьте аккуратны, если опыта в этом деле не имеете, лучше пользоваться консольным редактором, хотя бы mcedit или на крайняк npp контролируя эти параметры.
Надеюсь кому-то будет полезным.
Code: Select all
mysqldump: Error 2020: Got packet bigger than 'max_allowed_packet' bytes when dumping table `table_name` at row: 3369
Code: Select all
mysqldump --defaults-file={конфиг /usr/local/vesta/conf/.mysql.localhost} --single-transaction -r {путь_куда_положить} {имя_бд}
Я так понимаю, что при дампе мы передаём конфиг --defaults-file где прописаны только логин, пароль, хост, а остальные параметры берутся по дэфолту при дампе, по этому и игнорируются наш конфиг my.conf. Решил пробему добавив параметр --max_allowed_packet=512M в команду в скрипте.
Файл /usr/local/vesta/func/db.sh строка 47(у меня по крайней мере), функция mysql_dump(). Найти
Code: Select all
mysqldump --defaults-file=$mycnf --single-transaction -r $1 $2 2> $err
Code: Select all
mysqldump --defaults-file=$mycnf --max_allowed_packet=512M --single-transaction -r $1 $2 2> $err
Надеюсь кому-то будет полезным.