СУБД ЛИНТЕР. Технический обзор

         

Архивирование таблиц (базы данных)


Утилита архивирования ЛИНТЕР - lhb позволяет сохранять (со сжатием) базы данных целиком/выборочно.

При этом, работа lhb не останавливает работу других пользователей СУБД. lhb делает просто “сжатый снимок” базы данных на какой-то момент времени.

Таким образом, поврежденная база данных может быть всегда восстановлена из последнего lhb-архива.

lhb - мощная программа, обладающая возможностями, которые облегчат пользователю организацию необходимого алгоритма архивирования.

Здесь искушенный пользователь обнаружит следующие возможности:

  • ведение архива (системы архивов) на магнитной ленте;
  • нарастающее (инкрементное) архивирование;
  • установка системы и расписания (графика) архивирования базы данных;
  • развитая система реакций на временные события;
  • возможность написания скриптов на языке архиватора BSL (Backup Script Language);
  • мощная система для селекции архивируемых объектов базы данных;
  • тестирование архива;
  • шифрация данных архива и авторизация доступа к нему.
  • Особый интерес, конечно же, представляет определение графика или сценария архивирования с помощью языка BSL, наиболее важными возможностями которого являются:

  • отслеживание интервалов времени для запуска lhb или других программ в нужный момент,
  • достаточно развитая система управления работы программы (операторы типа if, else, while, …),
  • система обработки ошибок, возникающих при запуске программ,
  • функции для управления файлами (копирование, перенос, удаление и пр.),
  • набор операций со строковыми переменными.
  • Сам сценарий или график на языке BSL составляет пользователь (с правами администратора). Здесь могут быть указаны периодичность и порядок автоматических действий архиватора, например:

  • архивирование базы данных;
  • создание резервных копий;
  • перенос архива или резервных копий на другие носители данных (в том числе и на магнитную ленту);
  • удаление устаревших архивов и их копий.
  • Файл сценария может содержать определение периодичности действий (ежедневно + время, еженедельно + день недели + время, ежемесячно + число месяца + время), а также особенные даты, выходящие за пределы периодичности (когда требуется или, наоборот, исключено действие).


    Например:

    Variables: NUM = 1; Rights: Everyday ( time = ‘12:00’ ) { if ( CWEEKDAY() == “Sun” ) { /* New archive on Sunday */ move (FILENAME + TOSTR(NUM) + “.lhb” , “c:\arc” ); NUM =NUM +1; backup ( “s –u “ +NAME +”/” +PASSWORD + “ –f “ +FILENAME +TOSTR(NUM) +”.lhb –startinc” ); } else /* Incremental backup */ backup ( “s –u “ + NAME + ”/” + PASSWORD +“ –f “ + FILENAME + TOSTR(NUM) + ”.lhb –inc” ); Exception: /* for ‘everyday’ */ print(“Error=” +TOSTR(СERROR) +“ , LinError=” +TOSTR(LINERROR) +“ , SysError=” +TOSTR(SYSERROR) ); stop; } Special: before { /* just after the start */ print ( “Start backup system” ); backup(“s –u “ + NAME + ”/” + PASSWORD +“ –f “ + FILENAME + TOSTR(NUM) + ”.lhb –startinc” ); } after { /* after ‘stop’ or Ctrl-C */ print ( “Stop backup system” ); if ( ERROR != 0 ) logprint ( “Error present: “ + TOSTR(ERROR) ); } iferr { /* global */ print(“Error =” + TOSTR(СERROR) +“ , LinError=” +TOSTR(LINERROR) +“ , SysError=” +TOSTR(SYSERROR) ); stop; }


    Содержание раздела