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

Mysqldump путаница?

  • Если вы используете mysqldump для резервного копирования ваших таблиц и кто-то пытается изменить заблокированную таблицу, их обновление будет заблокировано до тех пор, пока таблица не будет разблокирована mysqldump.
  • Если вы не заблокируете свои таблицы при попытке сделать резервную копию, вполне возможно, что ваша резервная копия окажется в несогласованном состоянии. В зависимости от вашего приложения это может вызвать проблемы.
  • Как заявляет @tsykoduk, лучше всего делать резервные копии с реплики вашего производственного сервера, доступной только для чтения. Если это невозможно, лучшее решение зависит от вашей среды. Например, если вы используете только таблицы InnoDB, вы можете запустить mysqldump с --single-transaction для обеспечения согласованного резервного копирования без блокировки обновлений.

В документации по MySQL более подробно описывается большинство из этих параметров:

http://dev.mysql.com/doc/refman/5.1/en/backup-methods.html

Лучше всего сделать резервную копию реплики, доступной только для чтения, так как при блокировке таблиц любая запись будет ошибочной. Кроме того, резервное копирование может быть довольно ресурсоемкой операцией, поэтому это может повлиять на производительность.

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

Кроме того, если вы не заблокируете таблицы или не воспользуетесь продуктом горячего резервного копирования, вы рискуете не получить полную резервную копию. IE, если кто-то пишет в таблицу, и она заблокирована при запуске резервного копирования, вы получите поврежденные данные.