Перенаправить сайт при создании резервной копии
Я использую incron
создавать резервные копии для веб-сайта, и мне нравится перенаправлять все запросы на другой сайт, когда / во время выполнения моих сценариев.
Что я сделал до сих пор...incron
запускает некоторые скрипты каждый раз, когда я обновляю файлы в /var/www
, Сначала он добавляет некоторые записи в базу данных. Затем он делает инкрементное резервное копирование GNU с tar
, После этого он использует mysqldump
для извлечения базы данных и gzip
для сжатия файла sql.
Теперь я тоже люблю добавлять статистику в свою базу данных. Я думал о добавлении /var/log/apache2/access.log
в incron
,
Но таким образом я могу испортить мои резервные копии базы данных. Мне нужен безопасный способ извлечь мою базу данных без выключения apache
ни mysql
, Я мог бы заблокировать доступ на запись в MySQL, но мой веб-сайт все еще будет доступен, и я не могу обновлять статистику в это время без ошибок.
Есть ли способ перенаправить весь доступ к одному домену, пока мои скрипты работают? Может быть mod_rewrite
с некоторыми if
но какие аргументы я должен использовать тогда?
чтобы быть честным, я понятия не имею, как архивировать это, и я буду рад услышать несколько советов.
Apache 2.4.10
MySQL 5.7
Debian Джесси
1 ответ
Мне нужен безопасный способ извлечь мою базу данных, не выключая ни Apache, ни MySQL.
Я думаю, что вы просто хотите избежать каких-либо изменений в вашей базе данных во время резервного копирования, чтобы сохранить ее согласованность. Возможно, вы слишком усложняете это своим сценарием перенаправления, если все находится в одной базе данных. Справочное руководство по MySQL 5.7 для mysqldump
помогает нам здесь:
--lock-tables, -l
Для каждой сбрасываемой базы данных заблокируйте все таблицы, которые должны быть выгружены, перед тем как их вывести. Столы закрыты
READ LOCAL
разрешить одновременные вставки в случаеMyISAM
столы. Для транзакционных таблиц, таких какInnoDB
,--single-transaction
это гораздо лучший вариант, чем--lock-tables
потому что он не должен блокировать таблицы вообще.Так как
--lock-tables
блокирует таблицы для каждой базы данных отдельно, эта опция не гарантирует, что таблицы в файле дампа логически согласованы между базами данных. Таблицы в разных базах данных могут быть выгружены в совершенно разных состояниях.
--single-transaction
Этот параметр устанавливает режим изоляции транзакции на REPEATABLE READ и отправляет инструкцию SQL START TRANSACTION на сервер перед выгрузкой данных. Это полезно только для транзакционных таблиц, таких как
InnoDB
потому что тогда он сбрасывает согласованное состояние базы данных в момент, когда был запущен START TRANSACTION, без блокировки каких-либо приложений.При использовании этой опции, вы должны иметь в виду, что только
InnoDB
таблицы сбрасываются в согласованном состоянии. Например, любойMyISAM
или жеMEMORY
Таблицы, сбрасываемые при использовании этой опции, могут все еще изменять состояние.