Это, скорее всего, тот факт, что mysqldump блокирует таблицу во время резервного копирования.
Когда вы используете таблицы InnoDB, вы можете использовать параметр --single-transaction
.Обязательно прочитайте руководство :
Этот параметр устанавливает режим изоляции транзакции на REPEATABLE READ иотправляет инструкцию SQL START TRANSACTION на сервер перед тем, как вывести данные.Это полезно только для транзакционных таблиц, таких как InnoDB, потому что тогда он выводит согласованное состояние базы данных в момент, когда был запущен START TRANSACTION, не блокируя какие-либо приложения.
При использовании этой опции следует помнитьчто только таблицы InnoDB выгружаются в согласованном состоянии.Например, любые таблицы MyISAM или MEMORY, выгруженные при использовании этой опции, могут по-прежнему изменять состояние.
Во время обработки дампа --single-транзакции для обеспечения правильного файла дампа (правильное содержимое таблицы и двоичные координаты журнала)), никакое другое соединение не должно использовать следующие операторы: ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE.Непротиворечивое чтение не изолировано от этих операторов, поэтому использование их для таблицы, которая должна быть выгружена, может привести к тому, что SELECT, выполняемый mysqldump, получит содержимое таблицы, чтобы получить неправильное содержимое или произойдет сбой.
- -опция одной транзакции и опция --lock-tables являются взаимоисключающими, поскольку LOCK TABLES вызывает неявную фиксацию любых ожидающих транзакций.
Когда вы используете таблицы MyISAM (не рекомендуется), вы 'в значительной степени обречены.Тогда лучший вариант - настроить репликацию на другой хост.Чтобы сделать резервные копии, остановите репликацию на ведомом устройстве, запустите ведомое устройство снова, когда MySQL завершит работу.(Google, я не буду объяснять это здесь подробно).
Другим возможным решением будет использование xtrabackup от Percona.Снова, Google и прочитайте целом руководство!Я не могу подчеркнуть это достаточно.