Я работаю с сервером Fedora, на котором работает настроенный программный пакет. Программное обеспечение сервера довольно старое, и его база данных состоит из 1723 файлов. Файлы базы данных постоянно меняются - они постоянно растут, и изменения не обязательно добавляются в конец. Итак, прямо сейчас мы выполняем резервное копирование каждые 24 часа в полночь, когда все пользователи отключены от системы, а база данных находится во внутренне согласованном состоянии.
Проблема в том, что у нас есть шанс потерять рабочий день, который будет безвозвратно. Итак, я хотел бы знать, есть ли способ сделать мгновенный снимок этих файлов базы данных, который можно было бы создавать каждые 30 минут или около того.
Я читал о снимках Linux LVM и думаю, что, возможно, смогу достичь цели, сделав снимок, синхронизируя файлы с сервером резервного копирования, а затем сбросив снимок. Но я никогда раньше этого не делал, поэтому не знаю, «правильное» ли это исправление.
Есть идеи по этому поводу? Есть лучшие решения?
Спасибо!
Все зависит от базы данных. Если у вас нет способа сказать ядру базы данных «привести все ваши файлы в согласованное состояние», тогда вы не сможете сделать снимок, потому что у снимка нет гарантии, что файлы в нем согласованы между собой - вы можете сделать снимок в тот момент, когда один файл в базе данных был изменен, а другой - нет.
На самом деле, похоже, что у вас есть настоящий clusterfudge проприетарного приложения, и вам нужно обсудить возможности резервного копирования с поставщиком указанного приложения. Мы не сможем вам помочь в все не зная, что это за кошмар, да и то ...
Однако, если вы можете найти способ сказать ядру базы данных «синхронизировать все ваши изменения с диском», то да, снимок LVM - вполне разумный способ завершить копирование остальной части данных. В качестве примера того, как выполнить весь процесс (синхронизация с диском, моментальный снимок, монтировать моментальный снимок, копировать данные), взгляните на mylvmbackup. Именно этот процесс выполняется для серверов MySQL.
Я думаю, что LVM - хороший вариант, но прежде всего вам нужно убедиться, что ваши файлы находятся в согласованном состоянии. Поэтому какие бы решения вы ни использовали, если файлы повреждены, нет смысла их использовать.
Допустим, вы делаете снимок, но в то же время ваша база данных записывает некоторые данные в файлы. Если моментальный снимок сделан, когда файлы синхронизированы только частично, у вас проблемы.
Вы знаете, что они говорят, что плохая резервная копия хуже, чем ее отсутствие.
Поэтому я бы порекомендовал узнать, как можно временно заблокировать запись в базу данных, затем синхронизировать диск, сделать снимок и снова разблокировать базу данных. Снимок не займет много времени, поэтому, если пользователи могут выжить с некоторой задержкой, я бы выбрал этот путь.