Документация FirebirdДокументация по FirebirdУтилита nbackup → Блокирование и разблокирование
Firebird home Firebird home Пред.: Резервирование и восстановлениеНачало: Документация FirebirdУровень выше: Утилита nbackupСлед.: История документа

Блокирование и разблокирование

Блокировка базы данных и самостоятельное резервное копирование
Восстановление из резервной копии, сделанной после выполнения "nbackup -L"
Механизмы работы

Если Вы предпочитаете использовать какие-то другие утилиты для создания резервных копий базы данных или просто делать обычную копию базы данных как резервную, то в игру вступает режим блокировки/разблокировки программы nbackup. «Блокировка» в данном случае означает, что основной файл базы данных временно замораживается, а не невозможность внесения изменений в базу данных. Как и в режиме резервирования, изменения фиксируются во временном файле дельты; при разблокировании файл дельты объединяется с основным файлом базы данных.

В качестве напоминания: nbackup.exe находится в подпапке bin папки, куда установлена СУБД Firebird. Типичными местонахождениями, например, являются C:\Program Files\Firebird\Firebird_2_0\bin (Windows) или /opt/firebird/bin (Linux). У утилиты нет графического интерфейса; Вы запускаете ее из командной строки (или из пакетного файла, или из другого приложения).

Блокировка базы данных и самостоятельное резервное копирование

Типичным сценарием является следующий:

  1. Блокировать базу данных с помощью параметра -L (Lock):

    nbackup [-U <пользователь> -P <пароль>] -L <база_данных>
  2. Теперь можно создать резервную копию, сжать файл базы данных (и много еще чего можно делать с содержимым файла базы данных), используя Ваши любимые программы. Простое копирование файла также допустимо.

  3. Разблокировать базу данных с помощью параметра -N (uNlock):

    nbackup [-U <пользователь> -P <пароль>] -N <база_данных>

Последняя команда также приведет к объединению файла дельты, куда записывались все изменения (мета)данных за время блокировки, с основным файлом базы данных.

Созанная резервная копия будет содержать данные, которые являлись актуальными на момент начала блокировки; эти данные не зависят от длительности блокировки, а также от периода времени, прошедшего с начала блокировки до момента начала резервного копирования.

Внимание

Что применимо к резервированию/восстановлению, также применимо и к блокированию/разблокированию: не используйте блокирование/разблокирование на многофайловых базах данных. Пока ситуация не изменится, не подпускайте nbackup к многофайловым базам данных!

Восстановление из резервной копии, сделанной после выполнения "nbackup -L"

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

  1. Разархивируйте/скопируйте/восстановите файл базы данных с помощью используемых Вами утилит.

  2. Теперь разблокируйте базу данных, но не с параметром -N, а с параметром -F (Fixup):

    nbackup -F <база_данных>

Почему существует два параметра командной строки, -N и -F?

  • При использовании параметра -N сначала определяется наличие любых изменений с момента блокирования базы данных (после использования параметра -L) и производится объединение временного файла дельты и основного файла базы данных. После этого база данных переводится в нормальный режим чтения/записи, а временный файл удаляется.

  • При использовании параметра -F только изменяется в «нормальное» значение флага состояния самостоятельно восстановленной базы данных.

Итак, Вы используете:

  • параметр -N после создания резервной копии своими силами (для возвращения флага состояния после ранее выполненного блокирования файла с параметром -L);

  • параметр -F после самостоятельного восстановления из такой резервной копии.

Замечание

Не очень хорошо получилось, что последний параметр -F назван по слову Fixup (поправить): его предназначение не исправлять что-либо, а только разблокировать базу данных. Параметр -N (uNlock, разблокировать), с другой стороны, не только разблокирует базу данных, но и вносит в нее некоторые правки (внедряет сделанные изменения в базу данных). Однако, нам придется работать с тем, что есть.

Механизмы работы

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

nbackup -L делает следующее:

  1. соединяется с базой данных;

  2. запускает транзакцию;

  3. выполняет оператор ALTER DATABASE BEGIN BACKUP (этот оператор обсуждался в разделе дополнительной информации по nbackup -B);

  4. завершает (commit) транзакцию;

  5. отсоединяется от базы данных.

nbackup -N делает те же шаги, но выполняет оператор ...END BACKUP на шаге 3.

nbackup -F работает следующим образом:

  1. открывается восстановленный файл базы данных;

  2. в файле базы данных флаг состояния изменяется с блокированного (nbak_state_stalled) в нормальное (nbak_state_normal) состояние;

  3. файл закрывается.

Замечание

nbackup -F работает на файловом уровне, а поэтому может быть выполнена даже при отсутствии работающего сервера Firebird. Любой из дополнительно указанных параметров -U и -P полностью игнорируются.

Пред.: Резервирование и восстановлениеНачало: Документация FirebirdУровень выше: Утилита nbackupСлед.: История документа
Документация FirebirdДокументация по FirebirdУтилита nbackup → Блокирование и разблокирование