Появление Wi-Fi позволило легко связать в сеть несколько компьютеров в нашей многоэтажке. Теперь мы можем, не выходя из квартир, совместно работать над нашими проектами. Кроме того у всех установлена программа, которая использует единую базу данных, база находится на сервере. После краха базы данных в ноябре 2005 года, стал вопрос о необходимости резервного копирования важных данных. Копия должна создаваться в автоматическом режиме, и использование базы во время сжатия её в архив не должно приводить к сбою резервного копирования.
Первоначально я хотел реализовать следующую схему:
- проверяем, используются ли файлы базы данных;
если не используется, архивируем;
если используется, откладываем архивирование, к примеру, на 20 мин;
через 20 минут все повторяется.
Но у такой схемы есть одно слабое место. Если база постоянно используется, архивация может быть отложена несколько раз подряд. А если у кого-нибудь программа, использующая базу, будет открыта целый день, архив базы так и не будет создан в течение дня.
Теперь же, реализованная мной схема, выглядит так:
- создаётся временная папка, в неё копируются все файлы и директории, которые необходимо архивировать (список файлов и папок берётся из текстового файла, через выражение TextLoop);
архивируется базу из временной папки;
чистится временная папка;
записываются результаты всех операций в лог файл, файл выводится на экран;
резервная копия готова.
Данная схема дает гарантированное сохранение базы в определённое время, в независимости от того, используется база или нет. Теперь xStarter автоматически делает резервные копии базы данных, в начале и середине рабочего дня. Архивы называются именами, содержащими текущую дату и время (пример: 2006-01-11(17-07-27)base.zip ), и складываются в папки, название которых соответствует текущему году и месяцу (для хранения копии за январь 2006 xStarter создаст директорию [2006], а в ней поддиректорию [01]). Это позволяет легко ориентироваться в большом количестве архивов и быстро находить нужную копию.
xStarter постоянно следит за датой создания архивов базы, в случае обнаружения копий старше 3-х месяцев напоминает о необходимости записать такие копии на компакт диск и удалить их с винчестера. Это не дает папке с архивами разрастаться до огромных размеров, старые копии хранятся на компакт дисках.
Кроме того, xStarter синхронизирует папку, в которой содержатся резервные копии, с аналогичной папкой на другом жестком диске, это гарантирует, что базы не будут потеряны даже в случае выхода из строя одного из жестких дисков.
Совокупность вышеизложенных операций практически полностью исключает большие потери важной информации. Все операции выполняются автоматически, я лишь время от времени просматриваю лог файлы, дабы убедиться, что сбоев нет.