Назад | Перейти на главную страницу

Mysqldump останавливает службу веб-сайта во время процесса резервного копирования

У меня есть веб-сайт, работающий на сервере базы данных MySQL, резервное копирование которого выполняется ежедневно с помощью следующей команды:

mysqldump -h server.com -uuser -ppass database > /home/directory/backup`date +"%Y%m%d"`.sql

Я заметил, что поскольку база данных стала больше, а резервное копирование занимает больше времени (возможно, несколько минут), сайт не работает правильно во время процесса резервного копирования.

Страницы, которые требуют загрузки базы данных во время резервного копирования, зависают во время резервного копирования и не загружаются, пока резервное копирование не будет завершено. Часто кажется, что они не истекают по таймауту, пока после завершения резервного копирования не появится ошибка MySql timeout 30 секунд - даже если прошло более 30 секунд.

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

Я запускаю mysql 5 на сервере, а таблицы находятся в формате ISAM.

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

Для таблиц MyISAM вы также можете использовать mysqlhotcopy. Однако это не решит вашу проблему, поскольку при этом также используются блокировки таблиц. Поэтому я бы тоже порекомендовал посмотреть репликацию.