Как предотвратить изменение содержимого каталога при выполнении резервного копирования?
У меня есть веб-приложение, которое хранит данные в базе данных MySQL и в файловой системе. Некоторые из записей базы данных ссылаются на некоторые файлы в файловой системе.
Теперь я хочу создать снимок всей партии. Конечно, я хочу убедиться, что в обратном направлении все файлы, на которые есть ссылки в снимке базы данных, присутствуют в снимке файловой системы. И все файлы в снимке файловой системы правильно указаны в снимке базы данных.
Если бы я побежал mysqldump
сначала, а потом tar
вверх файлы (или наоборот), есть определенное состояние гонки. Кроме того, я сомневаюсь, что что-то мешает другим процессам изменять файлы, пока я выполняю свою резервную копию.
Моей первой мыслью было просто chmod 444
каталог перед началом процесса резервного копирования. Но я не уверен во всех негативных последствиях, которые привели бы к живой системе (я могу представить несколько).
Очевидно, что в этом случае я мог бы просто отключить Apache и, таким образом, предотвратить любые изменения во время резервного копирования. Но отключение веб-сервера тоже не самое элегантное решение.
1 ответ
Если вы храните файлы внутри тома LVM, вы можете заблокировать базу данных, а затем выполнить mysqldump, сделать снимок LVM и, наконец, разблокировать базу данных. Затем сделайте резервную копию из снимка LVM. Таким образом, вы бы синхронизировали содержимое БД и ФС с минимальным временем блокировки.