home   map   mail  
 
:: О нас :: Координаты :: Прайс-лист :: Форум :: Статьи :: Наши клиенты ::  
  rs    
 

E-Mail: support@nerusoft.com
Телефоны:
      +380 67 901-63-22
      +380 63 108-17-00
ICQ: 131-674-371
Skype: rudjuk

 
   
OTPCapital   OTPCapital - Компания
управления активами
OTP-Банк   OTP-Банк - крупнейший
банк Украины
Бухгалтерское обслуживание Факториал Консалт   Бухгалтерское,
аудиторское и
юридическое
обслуживание от
Факториал-Консалт
lightnight   Информационно-
развлекательный сайт
LightNight.
Компания РМед   Компания по продаже
медицинского
оборудования РМед.
Casa-De-Confraria   Casa-De-Confraria -
вилла в Португалии.
Н.Транс   Компания по продаже
косметики Н.Транс
Клуб SportLife   Спортивный клуб
SportLife
  Сайт
“Пригласи
Деда Мороза"
  Американская
компания
“CharlieMotors”
  Национальный
Цирк Украины
Все проекты   Все проекты >>>
 
Внимание!
Это старый наш сайт. Новый сайт находится по адресу: http://corp2.net
 
 

 Резервное копирование базы данных и последующее восстановление

 

Автор: Волох Д.А.

Компания НеРуСофт




Резервное копирование базы данных и последующее восстановление



Резервное копирование и восстановление из копии является одним из самых важных процессов в администрировании базы данных InterBase/FireBird.

Резервное копирование – один из самых надежных способов сохранить и предохранить свои данные от потери или порчи. Процесс резервного копирования также делается в профилактических целях, для увеличения производительности базы данных – это достигается за счет того, что в момент копирования происходит считывание последних версий всех записей, старые же версии в копию никогда не попадают. Здесь важно заметить, что недостаточно одного лишь резеврного копирования, нужно иногда проверять восстанавливаемость базы данных из резеверной копии, потому что бывают случаи, что база данных работает в режиме 24*7, то есть 24 часа в сутки и 7 дней в неделю, backup базы данных может происходит нормально, но в силу определенных причин база данных не восстанавливается, последствия могут быть плачевными для всех данных.

Причины могут следующими: в базе данных есть ограничения, такие как NOT NULL поля, внешние ключи, уникальность, а существующие данные в базе данных этим ограничениям не соответствуют по каким-либо причинам. Такие данные могут мирно существовать до тех пор, пока они не будут задействованы в операциях редактирования или удаления. В процессе восстановления «прощупываются» все данные - в первую очередь создаются ограничения и затем заливаются данные, в этот момент и происходит ошибка. Для профилактики следует восстанавливать базу данных в тестовую, и лишь при успешном завершении процесса восстановления, делать Restore в текущую базу. В случае возникновения ситуации с поврежденным файлом backup’а следует найти в базе данных несоответствия и исправить их.



Рассмотрим два способа резервирования/восстановления базы данных с помощью утилиты gbak и компонентов FIBPlus:

1. Утилита gbak с соответствующими ключами позволяет совершать резервирование и восстановление базы данных, синтаксис выполнения операций следующий:

  • Резервирование

gbak [-B] [ключи] файл_базы_данных файл_резервной_копии

Значение ключей:

-g не собирать мусор во время резервного копирования;

-l игнорировать лимбо-транзакции;

-m резервирование только метаданных;

-user имя пользователя;

-password пароль пользователя;

-v показать протоколирование во время выполнения процесса;

-z показать версию gbak.


Пример:

gbak -b –user SYSDBA –password masterkey C:workwork.gdb C:workwork.gbk

  • Восстановление:
gbak [-R/-С] [ключи] файл_базы_данных файл_резервной_копии

Ключи:

-R восстановление базы данных в уже существующий файл;

-С восстановление базы данных в новый файл, если файл уже существует, то процесс будет прерван с ошибкой;

-p размер страницы (1024,2048,4196 или 8192). По умолчанию 1024;


Пример:

gbak -R –user SYSDBA –password masterkey C:workwork.gbk C:workwork.gdb

Следует отметить один нюанс, если запустить утилиту gbak без ключа –B или –R/-C, то будет начат процесс резервного копирования базы данных.

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


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

fibBackUp.DatabaseName := edBackUpPath.Text; // указываем путь к базе данных

fibBackUp.ServerName :=’localhost’; //имя сервера

// создаем и указываем имя будущего файла резервной копии базы данных

fibBackUp.BackupFile.Add(frmMain.CurrentBackUpPath + ExtractFileName(edBackUpPath.Text)

+ '_' + DateToStr(now) + '.gbk');

fibBackUp.Params.Add('user_name=SYSDBA’);

fibBackUp.Params.Add('password=masterkey');

fibBackUp.Active := True; // активируем процесс

try

Screen.Cursor := crSQLWait;

fibBackUp.ServiceStart; // и стартуем его

mBackup.Lines.Add('**************** Резервное копирование начато базы: ' + dBackUpPath.Text + '****************' );

mBackup.Lines.Add('' );

// пока не завершится процесс выводим логии о процессе, для того чтобы логии отображались нужно свойство Verbose поставить в значение TRUE

while not (fibBackUp.Eof) do

begin

mBackup.Lines.Add(fibBackUp.GetNextLine);

end;

mBackup.Lines.Add('*************** Резервное копирование закончено ***************');

fibBackUp.Active := false; //закрываем процесс

Screen.Cursor := crDefault;

except

MessageDlg('Ошибка при резервном копировании базы данных',mtError,[mbOk],0);

end;

Результат бекапа будет выведен в Memo-поле:


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


 
Для процесса restore использовался компонент TpFIBRestoreService, в листинге показаны часть настроек, которые необходимо установить перед запуском процесса восстановления.

//восстанавливаем базу данных в новый указанный файл

if chNewDB.Checked then fibRestore.Options := [CreateNewDB];

//перезаписываем базу данный при restore

if chReplace.Checked then fibRestore.Options := [Replace];

fibRestore.BackupFile.Add(edPathGBK.Text); //указываем GBK файл

fibRestore.DatabaseName.Add(edDirGDB.Text); //указываем файл базы данных

fibRestore.PageSize := StrToInt(cxComboBox1.Text); //размер страницы

fibRestore.ServerName := ‘localhost’;

fibRestore.Params.Add('user_name=SYSDBA');

fibRestore.Params.Add('password=masterkey');

try

Screen.Cursor := crSQLWait;

fibRestore.Active := True;

fibRestore.ServiceStart;

mRestore.Lines.Add('**************** Начат процесс восстановления: ' + edPathGBK.Text + '****************');

mRestore.Lines.Add('');

while not (fibRestore.Eof) do mRestore.Lines.Add(fibRestore.GetNextLine);

mRestore.Lines.Add('');

mRestore.Lines.Add('**************** Восстановление закончено ****************');

fibRestore.Active := false;

Screen.Cursor := crDefault;

except

MessageDlg('Ошибка при восстановление базы данных',mtError,[mbOk],0);

end;

Результат восстановления представлен на следующем рисунке:


 

 

 

 

 Предложения


 Акции и объявления

Для партнёров скидки
-10%


 На правах рекламы


 
:: О нас :: Координаты :: Прайс-лист :: Форум :: Статьи :: Наши клиенты ::
Яндекс цитирования
© Copyright 1997-2008 RS™