Home » Ошибки » Mysqldump error 1412: Table definition has changed, please retry transaction when dumping table

Mysqldump error 1412: Table definition has changed, please retry transaction when dumping table

Меня в одном проекте стала донимать немного странная ошибка, с которой никак не получалось справиться. Время от времени не выполнялся бэкап базы данных с помощью обычного дампа в mysqldump. Дамп падал с ошибкой: "mysqldump: Error 1412: Table definition has changed, please retry transaction when dumping table". Рассказываю, как я ее победил.

Теоретический курс по основам сетевых технологий. Позволит системным администраторам упорядочить и восполнить пробелы в знаниях. Цена очень доступная, есть бесплатный доступ. Все подробности по . Можно пройти тест на знание сетей, бесплатно и без регистрации.

Ошибка была связана всегда с одной и той же таблицей. По тексту ошибки примерно понятно, в чем ее суть. Во время бэкапа таблица меняется и это приводит к проблемам. Не понятно только, как ее победить. Проще всего было бы включить блокировку таблиц во время дампа, но это не подходящая в моем случае идея. База дампится секунд 10-15. Нельзя заблокировать таблицы на это время.

Возникать подобная ошибка может в двух случаях:

  1. Таблицы не существовало на момент старта бэкапа, а потом в процессе она появилась.
  2. Таблица существовала до начала бэкапа, а затем ее удалили до того, как успели забэкапить.

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

--ignore-table=vdakernel.b_xml_tree_import_1c

Проблема исчезла. Более подробно о том, как я выполняю бэкап баз данных mysql с помощью mysqldump можно почитать в отдельной статье. Там не только про сами дампы рассказано, но и том, как их потом проверять через систему мониторинга.

Онлайн курс по Linux

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом "Administrator Linux. Professional" в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Что даст вам этот курс:
  • Знание архитектуры Linux.
  • Освоение современных методов и инструментов анализа и обработки данных.
  • Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
  • Владение основными рабочими инструментами системного администратора.
  • Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
  • Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.
Проверьте себя на вступительном тесте и смотрите подробнее программу по . Цены 2020 года.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

Добавить комментарий

Ваш адрес email не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.