Обеспечение стопроцентной сохранности важных файлов

Реально работающие задачи в реальных условиях.
Ответить
Аватара пользователя
Alex
Ас
Сообщения: 2833
Зарегистрирован: Вт апр 05, 2005 3:28 pm
Откуда: Kaliningrad City
Благодарил (а): 2 раза
Поблагодарили: 91 раз
Контактная информация:

Обеспечение стопроцентной сохранности важных файлов

Сообщение Alex » Пн окт 30, 2006 1:02 pm

Появление Wi-Fi позволило легко связать в сеть несколько компьютеров в нашей многоэтажке. Теперь мы можем, не выходя из квартир, совместно работать над нашими проектами. Кроме того у всех установлена программа, которая использует единую базу данных, база находится на сервере. После краха базы данных в ноябре 2005 года, стал вопрос о необходимости резервного копирования важных данных. Копия должна создаваться в автоматическом режиме, и использование базы во время сжатия её в архив не должно приводить к сбою резервного копирования.

Первоначально я хотел реализовать следующую схему:
  • проверяем, используются ли файлы базы данных;
    если не используется, архивируем;
    если используется, откладываем архивирование, к примеру, на 20 мин;
    через 20 минут все повторяется.
Но у такой схемы есть одно слабое место. Если база постоянно используется, архивация может быть отложена несколько раз подряд. А если у кого-нибудь программа, использующая базу, будет открыта целый день, архив базы так и не будет создан в течение дня.

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

xStarter постоянно следит за датой создания архивов базы, в случае обнаружения копий старше 3-х месяцев напоминает о необходимости записать такие копии на компакт диск и удалить их с винчестера. Это не дает папке с архивами разрастаться до огромных размеров, старые копии хранятся на компакт дисках.

Кроме того, xStarter синхронизирует папку, в которой содержатся резервные копии, с аналогичной папкой на другом жестком диске, это гарантирует, что базы не будут потеряны даже в случае выхода из строя одного из жестких дисков.

Совокупность вышеизложенных операций практически полностью исключает большие потери важной информации. Все операции выполняются автоматически, я лишь время от времени просматриваю лог файлы, дабы убедиться, что сбоев нет.
Вложения
Copyandarcfiles.xstk
Пример копирования файлов и ахивирования по расписанию
(27.18 КБ) 2251 скачивание

nacgull
Пассажир
Сообщения: 5
Зарегистрирован: Вт май 15, 2012 10:16 am
Благодарил (а): 0
Поблагодарили: 0

Взаимно-зависимые значения данных в разных таблицах

Сообщение nacgull » Вс май 20, 2012 8:54 am

Думаю, для баз данных типа MySQL & MS SQL лучше бы использовать запуск специальной хранимой программы или функции (скрипта .sql) запросом на сервер, поскольку есть возможность поставить, в очередь выполняемых операторов-хранимых_функций (операторов-хранимых_программ), блокировку всей базы данных - в таком случае сервер наиболее оптимально определит нужный момент для сохранения таблиц баз данных.

К примеру, у меня база данных может насчитывать порядка нескольких сотен запросов/операторов, одновременно нуждающихся в обработке на сервере в течении круглых суток 24/7. Вероятность получения свободного "окна" (момента) для резервирования базы данных - очень мала. База данных в своих таблицах может иметь взаимно-зависимые значения данных в разных таблицах, а изменение значений может производиться отдельными операторами хранимой программы (функции) - вследствие сложности выполнения, в некоторых случаях, изменения значений данных разных таблиц (тем более в разных базах данных на сервере), имеющих большие сложность и количество записей в таблицах.

p.s.Для большей вероятности сохранности резервных файлов можно использовать их автосохранение на разных бесплатных интернет-серверах файлообменников или почты, имеющих очень высокую готовность к работе, предварительно зашифровав файлы для безопасности.

Simple
Ас
Сообщения: 117
Зарегистрирован: Пн янв 25, 2010 10:29 am
Благодарил (а): 3 раза
Поблагодарили: 11 раз

Re: Обеспечение стопроцентной сохранности важных файлов

Сообщение Simple » Пн май 21, 2012 3:59 pm

Как только в MySQL появятся средства резервного копирования - так сразу их и можно будет использовать. :?

krestsoft
Пассажир
Сообщения: 2
Зарегистрирован: Чт июл 30, 2015 8:04 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Обеспечение стопроцентной сохранности важных файлов

Сообщение krestsoft » Чт июл 30, 2015 8:13 pm

Да и теневое копирование уже давно есть... :)

Ответить