GetInfo.Ru – Компьютерная библиотека
Последние поступления
Как выбрать систему управления базы данных
Базы данных03/09/14
Этапы загрузки UNIX (в схеме)
Unix27/03/12
Gatewall Antispam: тотальный контроль электронной почты
Спам21/04/11
Мастер-класс: создаем Интернет-магазин (Часть 1)
Обзоры ПО20/04/11
CorelDRAW Graphics Suite X5: Что нового?
Обзоры ПО20/07/10
Добавить статью
Самые читаемые материалы
Дерево каталогов NESTED SETS (вложенные множества) и управление им(148273)
Дерево каталогов NESTED SETS (вложенные множества) и управление им. Часть 2(25396)
SQL сервер PostgreSQL(23240)
Теоретические основы реляционных баз данных(22195)
Введение в Базы данных(17973)
Всего статей: 793Всего авторов: 364Подразделов: 47Добавлено за сутки: 0
Статьи  СТАТЬИ Форум  ФОРУМ Рейтинг  РЕЙТИНГ Поиск  ПОИСК Контакты  КОНТАКТЫ
» Главная » Базы данных » Резервное копирование базы данных и последующее восстановление

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


Рудюк Сергей
sergey@rudjuk.kiev.ua
http://www.rudjuk.kiev.ua/

Резервное копирование и восстановление из копии является одним из самых важных процессов в администрировании базы данных 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;
    

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

 
16.03.2006
Версия для печати Версия для печати Запомнить ссылку Запомнить ссылку
Ваша оценка:  1   2   3   4   5     

 О проектеПерепечаткаАвторамПартнерыО нас пишут
Наверх
©2003—2007. GETINFO.RU. ВСЕ ПРАВА ЗАЩИЩЕНЫ.