Проект "Агбис Конвертор БД"

Программа прежде всего предназначена для выполнения конвертации базы данных для работы с новой версией сервера Firebird в режиме автоконвертации без диалогового окна.
Программа выполняет запуск двух программ gbak.exe из состава Firebird для выполнения двух операций Backup и Restory.
Если вторая программа gbak.exe берется из состава Firebird старшей версии, то в результате выполняется конвертация данных к новой версии Firebird.
Если вторая программа gbak.exe берется из состава Firebird исходной версии, то в результате выполняется оптимизация данных в рамках текущей версии Firebird.

Перед выполнением конвертации создается резервная копия базы данных.
В случае возникновения ошибок в процессе конвертирования, выполняется откат - резервная копия возвращается на место исходной базы данных и система возвращается к ситуации до начала конвертирования.
Если конвертирование проходит успешно, то новая база заменяет исходную, а новый Firebird переключается на работу через порт на котором работал старый Firebird.
В результате, приложения не требуют дополнительной настройки подключений, сразу начинают работать с новой базой через новый Firebird.
Старый Firebird отключается, чтобы не перехватывал работу с базой.
Новый Firebird автоматически скачивается с серверов АГБИС и устанавливается как служба.

Подготовка к применению

1. Подключение к «Исходной» базе данных должно быть локальным, так как для выполнения операций используется режим Embedded Firebird. Программа должна иметь локальный доступ к файлу базы данных.
2. На время выполнения конвертора отключаются все программы от базы данных, останавливаются службы (агенты), поэтому операцию следует согласовывать с клиентом.
3. Останавливается, а затем заменяется, сервер Firebird, что может повлечь остановку других программ, которые работают с другими базами данных. В этом случае потребуется дополнительная настройка серверов Firebird и подключений приложений: изменение портов и порядка запуска служб Firebird.
4. В процессе конвертации создается две копии базы данных, поэтому следует проверить, что на диске свободного места в 2.5 раза больше чем размер самой базы данных.

Установка программы

Программу можно загрузить по ссылке
ПРОВЕРИТЬ

http://agbis.co/download/admin_tools/agbdbconvertor.zip

Папку agbDBConvertor с программой agbDBConvertor.exe следует разместить в папку с программами АГБИС.
Обычно это e:\Agbis\agbDBConvertor\agbDBConvertor.exe

Параметры командной строки

  • /run – выполняется без видимого окна, все настройки должны быть переданы через параметры командной строки или ini файла.
  • AliasBase – алиас «Исходной» БД в списке из agbis.xml. По умолчанию, если AliasBase не задан, берется последняя активная база из списка в agbis.xml
  • FirebirdNum – номер версии Firebird для новой базы данных при конвертировании. По умолчанию совпадает с версией «Исходной» БД, то есть выполняется оптимизация.
  • CLIENT_DEP_ID – номер подразделения в БД PC (client_dep_params.id). Используется для отправки отчета в PC. По умолчанию отчет не отправляется.
  • timeout – задержка в секундах перед выполнением основной части программы. Используется для задержки перед началом выпонения обработки БД, чтобы дать возможность завершить работу ReplIn. По умолчанию 0.

Все параметры могут быть заданы через файл agbDBConvertor.ini.
Значение параметра в командной строке имеет приоритет перед значение в ini-файле.
Файл agbis.xml ищется в родительской папке. То есть, если запускается D:\Agbis\agbDBConvertor\agbDBConvertor.exe, то будет считываться D:\Agbis\agbis.xml

Запуск программы

Запуск программы интерактивном режиме

agbDBConvertor.exe

Считываются параметры из agbDBConvertor.ini и открывается форма для ввода параметров.

Можно выбрать файл базы данных, порт для подключения к базе данных и версию Firebird для новой базы данных.
Кнопка «Конвертация БД» запускает процесс.
Более подробно можно посмотреть в разделе Форма "Конвертор базы данных"

Дополнительно, пункт главного меню "Настройка Firebird" открывает форму для просмотра и натройки параметров Firebird.

Запуск программы режиме автоконвертации

agbDBConvertor.exe /run AliasBase="Agbis" FirebirdNum=3 CLIENT_DEP_ID=2 timeout=1

Так как задан параметр /run, то после запуска программы сразу запускается процесс конвертации. Все параметры заданы в командной строке. Если параметры не позволяют найти и открыть базу данных, то процесс атоматически завершается. Результат работы можно увидеть в логах в папке Logs\

Возможен вариант

agbDBConvertor.exe /run 

В этом случае, так как задан параметр /run, то после запуска программы также сразу запускается процесс конвертации, но параметры берет из файла agbDBConvertor.ini.

Особенности применения

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

При выполнении Backup/Restory происходит оптимизация базы данных.
Например, при удалении фотографий объем данных сильно уменьшается, однако размер файла базы данных остается прежний и уменьшается только после Backup/Restory.
Кроме этого происходит дефрагментация страниц данных, обновление индексов и тому подобное. Это может существенно увеличить скорость работы базы данных.

  • Оба процесса запускаются в виде конвейера программ gbak.exe, поэтому промежуточный файл .fbk не создается.
  • Для выполнения Firebird используется в режиме Embedded, что приводит к сокращению времени выполнения операции приблизительно 5 - 6 раз.
  • Если для восстановления указывается Firebird X старшей версии, то кроме оптимизации выполняется конвертация базы данных для работы Firebird X указанной версии.

При этом выполняются следующие операции:

  • копирование с сервера AGBIS дистрибутива Firebird X.
  • установка сервера Firebird X в виде службы.
  • установка клиента Firebird X в папку agbis\.
  • замещение клиента Firebird X в системной папке.
  • выполняется конвертация базы данных для работы Firebird X (для Backup используется gbak.exe текущего Firebird , а для восстановления gbak.exe Firebird X).
  • выполняется проверка новой базы данных.
  • выполняется переключение на Firebird X (отключение старого Firebird и смена его порта, включение службы Firebird X через порт, который раньше использовал старый Firebird).

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

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

В случае возникновения ошибок исходная база остается без изменений.
Полученную базу с ошибками и логи выполнения операции требуется передать в техническую поддержку АГБИС для выяснения причин.
В случае успешного завершения исходная база будет переименована и сохранена в прежнем каталоге. Со временем ее можно будет удалить для экономии места.

Термины

  • «Исходная» база данных - это база данных, данные которой проверяются и оптимизируется.

К этой базе, настроено постоянное подключение программ через сервер Firebird.
Подключение выполняется напрямую к базе, поэтому требуются логин и пароль пользователя базы данных.
Логин и пароль пользователя программы, как правило, не совпадают логином и паролем базы данных.

  • «Новая» база данных - это база данных, которая получается в результате создания резервной копии с помощью программ gbak.exe.

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

Оптимизация базы данных

Запускается программа agbDBConvertor.ехе от имени администратора.
Права администратора нужны для включения/выключения служб.
Если доступен файл agbis.xml, то параметры подключения будут считаны из него и дополнительных настроек не потребуется.

На всякий случай, следует проверить путь к базе данных в поле «Файл базы данных».
Далее запускается процесс оптимизации кнопкой «Оптимизация БД (B/R)».

Нажимается кнопка «Да».
Ждем завершения процесса.
В случае успешного завершения должно появится сообщение «База данных успешно пересоздана - выполнены Backup/Restory».

В папке с базой данных появится файл типа arm_20210302_162659.fdb, где суффикс показывает дату и время выполнения оптимизации.
Если потребуется откатить изменения, то достаточно переименовать этот файл в исходный.

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

Запускается программа agbdbconvertor.ехе от имени администратора.
Права администратора нужны для установки и включения/выключения служб.
Если доступен файл agbis.xml, то параметры подключения будут считаны из него.

На всякий случай, следует проверить путь к базе данных в поле «Файл базы данных».
В поле «Firebird для «Новой» базы данных» выбирается Firebird 3.0.
Кнопка «Оптимизация БД (B/R)» меняет название на «Конвертация БД».

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

Нажимается кнопка «Да».
Ждем завершения процесса.
В случае успешного завершения должно появится сообщение «База данных успешно пересоздана - выполнены Backup/Restory».

В папке с базой данных появится файл типа arm_20210302_162659.fdb, где суффикс показывает дату и время выполнения оптимизации.
Если потребуется откатить изменения, то достаточно переименовать этот файл в исходный.

Если потребуется откатить изменения, то нужно

  1. переименовать файл резервной копии в исходный,
  2. остановить Firebird 3,
  3. заменить порт Firebird 2,
  4. включить службу Firebird 2.

Восстановление Firebird можно выполнить через программу agbdbconvertor.ехе с формы "Настройка Firebird"

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