Rambler's Top100

(c)2009-2017 openinfotech.ru

СУБД HyTech

Документация
Архивирование базы данных

Архивирование базы данных

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

Существует два основных способа архивирования:

  • архивирование базы данных в оперативном режиме;
  • архивирование базы данных в автономном режиме.

Оба метода архивирования предусматривают архивирование файлов базы данных, системных файлов, файлов параметров инициализации.

Важно также архивировать другие, относящиеся к базе данных, файлы, даже если они и не являются частью этой базы. Например, при архивировании базы данных нужно предусмотреть дублирование следующих файлов:

  • файлы приложений, такие как выполняемые модули, исходный код, файлы конфигурации, файлы данных, которые не хранятся в самой базе данных, справочники и т.д.;
  • файлы конфигураций программ, используемых совместно с сервером, таких, как HTAT;
  • командные файлы, созданные администратором и другими пользователями и т.д.

Эти действия необходимо предусматривать при разработке информационных систем на основе СУБД.

Архивирование базы данных в автономном режиме

Одним из способов создания резервной копии базы данных является ее останов и последующее архивирование. Такой тип создания резервной копии называется архивированием базы данных в автономном режиме. Чтобы ее выполнить, необходимо сделать следующие действия:

  • Если необходимо, остановить SQL сервер. Убедиться, что база данных нормально завершила свою работу. Если пришлось прервать работу, то лучше вновь запустить сервер, проверить таблицы, а затем остановить сервер.
  • С помощью команд операционной системы создать резервные копии таблиц пользователей, системных таблиц, файла параметров инициализации.
  • После выполнения архивирования всех файлов можно запустить базу данных и продолжить работу.

После выполнения архивирования базы данных в автономном режиме создается полный комплект файлов, составляющих базу данных на момент архивирования, а точнее на момент останова сервера. Иногда архивирование базы данных в автономном режиме называют получением согласованной копии базы данных.

Архивирование базы данных в оперативном режиме

Многие СУБД не могут допустить частого останова базы данных для выполнения архивирования. В таких случаях необходимо архивирование базы данных в оперативном режиме, то есть в то время, когда она открыта и используется. Архивирование базы данных в оперативном режиме несколько сложнее, чем архивирование автономных баз данных. Это связано с тем, что файлы, резервные копии которых необходимо создать, в момент архивирования могут использоваться, и более того, находиться в переходном состоянии (то есть часть содержимого файлов может находиться в памяти). Чтобы провести архивирование базы данных в оперативном режиме, необходимо проделать следующие шаги:

  • Сделать резервные копии таблиц пользователей;
  • Сделать резервные копии системных таблиц;
  • Сделать резервную копию файла инициализации.

Архивирование таблиц пользователей

Для архивирования таблиц пользователей предварительно надо составить список таких таблиц. Например, можно создать таблицу, в которую можно поместить список таблиц, которые подлежат архивированию:

create table BACKTABL(NAME char(32));
insert into BACKTABL values('BACKTABL');
insert into BACKTABL values('TAB1');
insert into BACKTABL values('TAB2');
insert into BACKTABL values('TAB3');

Для каждой из таблиц, резервную копию которой надо получить, вызвать функцию htBackupTable(). Как правило, интересует также результат выполнения операции архивирования. Для протоколирования операций архивирования можно создать таблицу протокола, в которую и заносить коды завершения операций архивирования.

create table BACKLOG(DTLOG date, TMLOG dword, TBLOG char(32), ERLOG int);
var path = 'c:/backup/';
insert into BACKLOG values(DTLOG, TMLOG, TBLOG, ERLOG)
 select today(), gettick(), NAME, htBackupTable(NAME, :path+NAME) 
 from BACKTABL;

Более сложные действия необходимо проделать, чтобы получить согласованную копию таблиц. Для этого необходимо объявить транзакцию по всем таблицам, согласованную копию которых собираемся получить. И только после этого выполнить функцию htBackupTable для каждой таблицы.

Архивирование системных таблиц

Для архивирования системных таблиц в оперативном режиме, необходимо вызвать функцию htCatalogBackup(). Эта функция создаст архивный файл, содержащий системные таблицы, коды хранимых процедур и коды триггеров, хранящихся на сервере.

Архивирование файла инициализации

Файл инициализации в процессе работы используется только для чтения параметров и никак не меняется. Поэтому для создания резервной копии файла инициализации достаточно скопировать его командой операционной системы. Команду операционной системы можно выполнить и с помощью функции system() из SQL-скрипта.

Планирование стратегии архивирования базы данных

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

  • Как следует выполнять архивирование, и в каком объеме?
  • Как часто следует архивировать базу данных, и в каком объеме?
  • Как долго следует хранить старые копии базы данных?
  • Где следует хранить старые копии базы данных?

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

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

Тестирование архивных копий

Для выполнения успешного выполнения восстановления базы данных необходимо регулярно тестировать архивные копии. Это обеспечит проверку правильности выбранной стратегии архивирования и проверку работоспособности все используемых программных и аппаратных компонентов.

Для проверки стратегии восстановления базы данных надо выбрать время, когда можно остановить базы данных на достаточно большой период. Далее необходимо сначала скопировать все файлы рабочей базы данных, создав резервные копии, которые останутся в неприкосновенности. Этот шаг важен для защиты рабочей базы данных на тот случай, если с копией базы данных возникнут проблемы. Затем надо восстановить базу данных, воспользовавшись для этого тестируемой копией. После процедуры копирования и восстановления надо проверить, корректно ли работает восстановленная база данных. Тестирование архивных копий позволяет своевременно обнаружить проблемы в архивировании базы данных и накопить необходимый опыт восстановления базы данных.


Copyright © SKAZ_M, 1994-2006
Last modified 05.05.04