В настоящее время я создаю резервную копию своей базы данных MySQL с помощью mysqldump, например:
mysqldump --user USERX --password=PWDX DBNAMEX > dbbackup__`date '+%m-%d-%Y'`.sql
Когда я выполняю резервное копирование (инициированное заданием cron), я устанавливаю правило .htaccess на своем сайте, чтобы перенаправлять любые запросы на статическую страницу «вниз для резервного копирования, вскоре назад». После завершения резервного копирования я удаляю правило, и сайт снова открывается.
Все хорошо, так было много лет, и, как вы понимаете, это работает отлично, и у меня не было никаких проблем.
Тем не мение...
Я бы не хотел закрывать сайт во время резервного копирования, поэтому вопрос в том, могу ли я сделать это с помощью mysqldump? Способен ли инструмент обрабатывать условия, при которых данные изменяются после инициации резервного копирования? Если это живые резервные копии, могу ли я гарантировать, что я не получу поврежденную резервную копию? Есть ли лучший способ сделать живую резервную копию?
Попробуйте взглянуть на mysqlhotcopy - в зависимости от размера вашей базы данных / таблиц и т.д., это может дать вам ответ.
Если вашим механизмом хранения является InnoDB, вы можете получить согласованный mysqldump действующей базы данных с помощью флага --single-transaction (при условии, что вы не меняете структуры таблиц во время резервного копирования). Но с MyISAM это не работает.
Использовать --single-transaction
вариант для баз данных InnoDB или --lock-tables
для MyISAM.