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

Материал из GedeminWiki
Перейти к: навигация, поиск

Стандартный способ переноса БД включает создание архивной копии утилитой gbak и восстановление из нее рабочей базы на другом сервере. Однако, если база данных имеет значительный размер (скажем, от 20 Гб и более), восстановление из архива может занимать весьма длительное время. Альтернативный способ -- простое копирование файла базы данных. Как известно, копировать файл из-под работающего сервера нельзя -- можно получить битую базу. Остановить сервер на большом предприятии тоже проблематично. Здесь на помощь приходит утилита nbackup из стандартной поставки сервера Firebird.

Первым делом следует заблокировать файл базы данных:

 nbackup -L <database> -U sysdba -P masterkey  

С этого момента файл можно свободно копировать. Все изменения с момента блокировки, если таковые будут, Firebird запишет в отдельный дельта файл, который нас не интересует. По окончании копирования базу ОБЯЗАТЕЛЬНО следует разблокировать командой:

 nbackup -N <database> -U sysdba -P masterkey

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

 nbackup -F <database> -U sysdba -P masterkey

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

Естественный вопрос: в чем различие между командами разблокирования -N и -F? В первом случае, дополнительно, дельта файл сливается с основным файлом базы данных. Во втором -- база просто переводится в рабочий режим.

Использование команды ALTER DATABASE

Если утилиты nbackup нет под рукой, но есть возможность выполнять SQL команды, например, через окно SQL редактора Гедымина, то заблокировать файл базы данных для последующего копирования можно командой:

 alter database begin backup

После окончания копирования следует выполнить команду:

 alter database end backup

Проверка файла базы данных на повреждения

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

 gfix -v -full <database> -user sysdba -pas masterkey

При обнаружении ошибок следует выполнить процедуру восстановления, причем не только копии, но и основной базы данных.

См. также

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты