я использую 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
Дебиан Джесси
Мне нужен способ сохранения для извлечения моей базы данных без выключения Apache или MySQL.
Я думаю ты просто хочешь избегать любых модификаций в вашу базу данных во время резервного копирования, чтобы сохранить последовательность. Вы можете просто усложнить это своим сценарием перенаправления, если все находится в одной базе данных. Справочное руководство MySQL 5.7 для mysqldump
здесь нам помогает:
Для каждой выгружаемой базы данных заблокируйте все таблицы, которые будут выгружены, прежде чем выгружать их. Таблицы заблокированы
READ LOCAL
чтобы разрешить одновременные вставки в случаеMyISAM
таблицы. Для транзакционных таблиц, таких какInnoDB
,--single-transaction
намного лучше, чем--lock-tables
потому что ему вообще не нужно блокировать таблицы.Так как
--lock-tables
блокирует таблицы для каждой базы данных отдельно, этот параметр не гарантирует, что таблицы в файле дампа логически согласованы между базами данных. Таблицы в разных базах могут выгружаться в совершенно разных состояниях.Эта опция устанавливает режим изоляции транзакции REPEATABLE READ и отправляет сообщение НАЧАТЬ СДЕЛКУ Оператор SQL на сервер перед сбросом данных. Это полезно только с транзакционными таблицами, такими как
InnoDB
, потому что тогда он сбрасывает согласованное состояние базы данных в то время, когда НАЧАТЬ СДЕЛКУ был выдан без блокировки каких-либо приложений.При использовании этой опции следует помнить, что только
InnoDB
таблицы выгружаются в согласованном состоянии. Например, любойMyISAM
илиMEMORY
таблицы, сброшенные при использовании этой опции, могут по-прежнему изменять состояние.