Как сделать резервную копию / восстановить базу данных Firebird? - PullRequest
0 голосов
/ 03 февраля 2019

Я действительно запутался в процессе резервного копирования / восстановления Firebird v2.5.Что я должен использовать для резервного копирования / восстановления локальной базы данных Firebird: fbsvcmgr.exe , gbak.exe , isql.exe или nbackup.exe

Это все варианты, или я что-то не так!

Каков практический способ сделать это для приложения C ++?

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

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

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

  • gbak, который создает логическую резервную копию базы данных (описания объектов (например, структура таблицы, представления и т. Д.) И данных)
  • nbackup (также известный как nbak), который создает физическую резервную копию базы данных (физические страницы данных изменились с момента предыдущего nbackup)

В большинстве случаев я бы предложилиспользуйте gbak, потому что он проще и позволяет перемещать резервные копии между платформами и версиями Firebird, тогда как nbackup действительно подходит только для той же платформы и версии Firebird (но имеет преимущество, заключающееся в разрешении инкрементных резервных копий).

ISQL - это интерактивный CLI-запрос, который нельзя использовать для создания резервных копий.Fbsvcmgr - это инструмент Firebird Service Manager, который можно использовать для вызова операций службы на (удаленном) сервере Firebird.Это включает операции резервного копирования и восстановления через gbak и nbackup.Fbsvcmgr довольно низкоуровневый и сложный в использовании (варианты * см. fbsvcmgr -?).

Для gbak вы обычно вызываете службы через исполняемый файл gbak (опция -se[rvice] <service>), см. Также Удаленное резервное копирование и восстановление в документации gbak.Для nbackup вы можете либо использовать инструмент nbackup локально, либо вам нужно использовать fbsvcmgr (или другой инструмент, поддерживающий сервисные операции) для удаленного вызова той же функции (action_nbak и action_nrest), см. Также Резервное копирование наудаленные машины (Firebird 2.5 +) в документации по nbackup.

Подробное описание gbak см. в gbak - Утилита резервного копирования и восстановления Firebird .Информацию о nbackup смотрите в инструменте nbackup Firebird .

. При резервном копировании gbak вы обычно восстанавливаете базу данных, используя «create» (опция -c[reate]) или «create» (-r[ecreate]) без опции o[verwrite]), которая завершится ошибкой, если файл базы данных уже существует.См. Также руководство gbak, ссылки на которое приведены выше, для получения дополнительной информации.

Я действительно не отвечу на ваш вопрос о том, как сделать это из приложения C ++, потому что я не программирую на C ++, и ваш вопрос уже слишком широк, так какявляется.Но знайте, что можно вызывать операции службы Firebird, включая резервное копирование и восстановление, используя gbak и nbackup, из кода C ++ (это, по сути, то, что делают сами инструменты Firebird).Если вы хотите узнать больше об этом, я бы посоветовал вам обратиться в список рассылки поддержки Firebird.

0 голосов
/ 04 февраля 2019

Я обычно использую gbak (не знаю о других).

Резервное копирование

gbak -b -v -user SYSDBA -password "masterkey" D: \ database.FDB E: \ database.fbk

Восстановление

gbak -c -user SYSDBA -password masterkey E: \ database.fbk E: \ database_restore.fdb

Если файл существует для восстановления, вы можете сделать это с помощьюgbak флаги восстановления -c = создать новый файл -r = заменить файл

Вот хорошая страница для резервного копирования / восстановления FB: http://www.destructor.de/firebird/gbak.htm

...