Перенаправить сайт при создании резервной копии

Я использую 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 Таблицы, сбрасываемые при использовании этой опции, могут все еще изменять состояние.

Другие вопросы по тегам