Каждый вечер (8:00 вечера PST) я делаю глобальную резервную копию моей производственной базы данных (двигатель innoDB).
Heres команда mysqldump:
mysqldump -u$MYSQLUSER -p$MYSQLPWD -h$MYSQLHOST -Q -c -C --add-drop-table --add-locks --quick --lock-tables surveys > $MYSQLBACKUPDIR/surveys.$NOW.sql;
Резервное копирование занимает приблизительно 45 минут и создает файл размером 480 МБ. Во время этой резервной копии некоторые пользователи моего сайта могут столкнуться с ошибками (500)
Вот что я нашел в своем журнале ошибок apache:
[Sun Dec 10 20:32:58.028079 2017] [:error] [pid 10921] DBD::mysql::db commit failed: MySQL server has gone away at /var/www/---.pl line 17.\n
Это то, что я пытался, чтобы решить эту проблему:
Но без успеха :(
Это может быть до стоп-столов, но я могу ошибаться. Вместо вашего параметра --lock-tables
вы можете использовать: --single-transaction --lock-tables=false
. Таким образом, ваш дамп будет согласован, но так долго не будет блокировать таблицы.
Также - если можно, попробуйте использовать innobackupex. Но резервное копирование и восстановление единой базы данных намного сложнее, чем при использовании mysqldump. Вот некоторые подробности: https://www.percona.com/forums/questions-discussions/percona-xtrabackup/10131-backing-up-and-restoring-a-single-database