Яндекс.Метрика
  Афина. Зачем  и как делать backup/restore для SQL баз под управлением FireBird/InterBase/Yaffil.
 
К содержанию
 

Само по себе резервное копирование баз не представляет проблемы как и любых других файлов находящихся на компьютере и которые представляют какую-то ценность для вас. Делать это можно по своему разумению и на свой вкус.

Дальше описывается не то чтобы проблема, но некоторый напряг, который наступает после какого-то времени эксплуатации баз на основе InterBase, приемниками которого так же являются FireBird и Yaffil.
Не знаю как с другими SQL-базами (подозреваю что везде есть похожая проблема), но в этих базах со временем скапливается мусор (удаленные записи и зависшие транзакции, и прочее - чего мне неведомо) - это раз, второе: никто не застрахован от аварийного отключения компьютера в тот момент когда с базой соединены клиенты, какие бы меры предосторожности в этом направлении не предпринимались.
Большая работа с настройками (постоянные изменения в проекте) так же оставляет "мусор" и удаленные записи.

Периодичность операции backup/restore определяется, в общем-то, опытным путем.
Мелкие базы с не очень интенсивной нагрузкой можно раз в месяц, если работа интенсивная и база постоянно растет, то раз-два в неделю. Для очень важных баз администраторы делают это каждый день (обычно по ночам в автоматическом режиме).
В любом случае эти операции на базу влияют благоприятно.

Поэтому во всех SQL серверах на основе InterBase (FB) поставляется утилита gbak.exe, которая "ремонтирует" базы (я это называю профилактикой).
Утилита запускается в командной строке.
Предлагаю batch файл atsys.bat (взять можно здесь как архивный файл: atsys.zip), где приведены команды для backup/restore.
Файл размещается в каталоге ...\alkord\bases на сервере (т.е. в том же каталоге что и базы).

gbak работает только если запущен SQL-server;
использует файлы firebird.msg из каталога ...\FireBird;
поэтому на сервере должен быть установлен полный FireBird.


Обязательно надо делать копии перед операциями (как? Это дело уже администратора, хотя в atsys.bat включена команда копирования перед тем как запускаются другие команды);

Перед копированием обязательно убедитесь, что с базой никто не конектится. Сделать можно так: открыть scktsrvr.exe (socket server в рабочем состоянии находится в трее), если список Users пустой, то можно копировать базы. Для того чтобы быть уверенным, что в момент копирования и выполнения операций
backup/restore к базе никто не подключится scktsrvr.exe надо закрыть или его остановить, если он запущен как сервис.
Ни в коем случае не начинайте никаких операций с базой если к ней подсоединен хотя бы один клиент, иначе получите 100% испорченную копию.

- Операции backup/restore можно делать с выводом сообщений на экран или в файл.
Если сообщения, которые поставляет gbak при своей работе необходимо выводить в файлы, то для каждой базы желательно создавать свои log-файлы (впрочем, это по желанию). В команде gbak они упоминается после ключа "-y".  Этот ключ, собственно и перенаправляет все сообщения в файл с указанным за ним именем. Чтобы выводить сообщения на экран необходимо убрать этот параметр и имя файла, которое следует за ним.

Что находится в atsys.bat.

В этом примере операции проводятся только над одной базой atsys.gdb, которая всегда существует в системе Афина.
По образу и подобию надо добавить такие же команды для "ремонта" других баз. Или можно сделать копию atsys.bat, переименовав ее, и в копии изменить наименования файлов баз и резервных копий.

Если вы выводите сообщения в в файл, то команда DEL удаляет лог-файлы, сделанные предыдущим запуском (обязательно, иначе будет ошибка при последующих запусках batch-файла).
Имя лог-файла произвольное, указывается в команде gbak после ключа y.

Первая команда gbak запускает backup (резервирование базы). Создает файл с расширением gbk или fbk - кому что нравиться (fbk для FireBird версии 1.5, но это не существенно), он утилитой еще и сжимается.
Вторая команда gbak запускает restore (восстановление базы из backup-файла)

После этих операций файл базы становится меньше (иногда заметно меньше).

Если скопировать gbak.exe в каталог ...\alkord\bases, то можно не писать длинные пути до gbak.exe, который находится в папке ...\FireBird\bin.
Путь в batch-файле к gbak.exe, естественно, нужно поменять, если его расположить в другом каталоге откуда он запускается.

Некоторые ключи в команде gbak означают:
-b делает резервирование базы в файл, имя которого указано последним параметром.
-v проверка внутренних ограничений (при restore нужен обязательно, при backup - не вреден).
восстановление базы из резервной копии, которая была сделана первой командой.

Если нужна более подробная информация об утилитах и манипуляции с базами сходите на
http://ibase.ru

Есть практика, что специализированные приложения для работы с SQL базами на основе InterBase (наверняка могу говорить только о IBExpert - www.ibexpert.com) делают операции backup/restore в несколько раз быстрее чем входящая в поставку Firebird утилита gbak.exe.

 

  К содержанию
   
Hosted by uCoz