Форма "Конвертор базы данных"

Форма «Резервная копия» предназначена для управлением процессом создания резервной копии «Исходной» базы данных.

В частности, в случае когда версия Firebird «Резервной копии» старше версии Firebird «Исходной» базы данных, выполняется конвертирование.

Для выполнения конвертирования должны быть доступны Firebird обеих версий.
Пункт главного меню «Настройка Firebird» позволяет посмотреть список служб Firebird

Настройка параметров создания резервной копии

1. Проверяем поля «Файл базы данных» и «Порт».
2. Выбираем «Firebird для «Новой» базы данных».
Если «Версия Firebird резервной копии» совпадает с версий «Исходной» базы данных, то выполняется обычный Backup/Restory.
Кнопка для выполнения операции называется «Создание резервной копии».
Если «Версия Firebird резервной копии» больше версии «Исходной» базы данных, то выполняется конвертирование базы данных к новой версии Firebird.
Кнопка для выполнения операции меняет название на «Конвертация БД».

Если конвертация доступна, то в строке состояния будет выведено сообщение «База данных готова для выполнения конвертации».
В случае возникновения проблем кнопка для выполнения операции становится недоступной, а в строке состояния выводится текст с информацией о проблеме.
Например, с случае отсутствия свободного места на диске, будет сообщение «Выполнение конвертации недоступно. Недостаточно свободного места на диске e: для создания резервной копии базы данных. Требуется 19049 M, имеется 7058 M.»

Backup выполняется программой gbak исходной версии, Restory программой gbak новой версии.

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

Создание резервной копии

Запускается кнопкой «Создание резервной копии».

1. Установка Firebird.

Для Firebird 2.5 устанавливается, если необходимо, Embedded версия в папку Firebird_2_x64_Embedded.
Для Firebird 3.0 устанавливается, если необходимо, Firebird 3.0.7.33374 как служба в папку Firebird_3_x64.

2. Настройка конфигурации

Для того чтобы во время создания пользователи не могли параллельно править базу данных Firebird переключается на временный порт.
В логе будет сообщение «Выполнена замена порта для «Исходной» с 3050 на 3051».

3. Остановка служб

Останавливаются все службы Firebird.

4. Создание резервной копии

Для создания резервной копии используется режим Embedded, то есть используется монопольный режим подключения к базе данных.
Создание резервной копии выполняется в режиме конвейера без создания промежуточного fbk-файла.
Запускаются одновременно две копии программы gbak.exe: первая в режиме backup, которая сразу передает данные на вторую копию gbak.exe, которая работает в режиме restory.

Резервная копия размещается в файле с суффиксом «_NEW».
Например, пусть файл базы данных ARM.FDB, тогда копия будет иметь имя ARM_NEW.FDB.

5. Запуск Firebird

Запускается служба Firebird на временном порту, что гарантирует монопольное подключение к базе данных.
Подключаются обе базы данных: «Исходная» и «Новая».

6. Проверка структуры

Прежде чем переключит работу на новую базу делается проверка структуры новой базы данных:

  • сравнивается количество доменов
  • сравнивается количество представлений
  • сравнивается количество процедур
  • сравнивается количество триггеров
  • сравнивается количество генераторов
  • сравнивается количество исключений
  • сравнивается количество UDF
  • сравнивается количество ролей
  • сравнивается количество индексов

Если количество элементов в исходной и новой базах данных совпадает, то считается что копия успешно создана.
В логе появится сообщение: «Проверка структуры успешно завершена. Различия не найдены.»

7. Остановка Firebird

8. Замещение «Исходной» БД на «Новую»

  • Если новая база успешно создана, то «Исходную» базу переименовываем добавлением суффикса _дата_время.

В нашем примере это ARM_20210209_133237.FDB.
Новая база переименовывается в «Исходную» ARM.FDB

  • Если новая база создана с ошибками, то «Исходная» база остается без изменения, новая переименовывается добавлением суффикса _bad.

В нашем примере это ARM_NEW_BAD.FDB.

При успешном завершении создания новой базы данных дефектная база данных (с суффиксом _BAD) удаляется.

9. Запуск служб

Серверу Firebird возвращается исходный порт и запускается служба Firebird.
В строке состояния появится сообщение «Резервная копия успешно создана.»

Процесс завершен. Пользователи Химчистки могут продолжить работать.

Конвертация базы данных

Запускается кнопкой «Конвертация БД».

Процесс выполняется аналогично процессу описанному в пункте «Создание резервной копии».
Отличия возникают в пунктах: «4. Создание резервной копии», «5. Запуск Firebird» и «9. Запуск служб».

4. Создание резервной копии

В режиме backup запускаются программы gbak.exe из Firebird 2, а в режиме restory запускаются программы gbak.exe из Firebird 3.
В результате получается конвертирование базы данных к новой версии Firebird.

5. Запуск Firebird

Запускаются обе службы Firebird на временных портах. «Исходная» база подключается к Firebird 2, а новая база подключается к Firebird 3.

9. Запуск служб

  • Если новая база успешно создана, то Firebird 3 получает исходный порт на котором раньше работал Firebird 2, а Firebird 2 получает новый порт.
  • Если новая база создана с ошибками, то Firebird 2 получает исходный порт и работал раньше, а Firebird 3 получает новый порт, чтобы через него случайно не смогли подключиться к исходной базе.

Дополнительная информация