====== Форма "Конвертор базы данных" ====== Проект **"[[:dba_agbDBConvertor|Агбис Конвертор БД]]"**\\ Форма **"Резервная копия"** предназначена для управлением процессом создания резервной копии "Исходной" базы данных.\\ {{:pasted:20210302-122121.png}}\\ В частности, в случае когда версия Firebird "Резервной копии" старше версии Firebird "Исходной" базы данных, выполняется конвертирование.\\ {{:pasted:20210302-123740.png}}\\ Для выполнения конвертирования должны быть доступны Firebird обеих версий.\\ Пункт главного меню "Настройка Firebird" позволяет посмотреть [[:dba_TFormFirebird|список служб Firebird]]\\ ===== Настройка параметров создания резервной копии ===== 1. Проверяем поля "Файл базы данных" и "Порт".\\ 2. Выбираем "Firebird для "Новой" базы данных".\\ Если "Версия Firebird резервной копии" совпадает с версий "Исходной" базы данных, то выполняется обычный Backup/Restory.\\ Кнопка для выполнения операции называется **"Создание резервной копии"**.\\ Если "Версия Firebird резервной копии" больше версии "Исходной" базы данных, то выполняется конвертирование базы данных к новой версии Firebird.\\ Кнопка для выполнения операции меняет название на **"Конвертация БД"**.\\ Если конвертация доступна, то в строке состояния будет выведено сообщение "База данных готова для выполнения конвертации".\\ В случае возникновения проблем кнопка для выполнения операции становится недоступной, а в строке состояния выводится текст с информацией о проблеме.\\ Например, с случае отсутствия свободного места на диске, будет сообщение "Выполнение конвертации недоступно. Недостаточно свободного места на диске e: для создания резервной копии базы данных. Требуется 19049 M, имеется 7058 M."\\ Backup выполняется программой gbak исходной версии, Restory программой gbak новой версии.\\ В случае конвертации нет необходимости предварительно устанавливать новый Firebird.\\ Все необходимые модули, если они доступны, автоматически устанавливаются в процессе создания резервной копии.\\ ===== Создание резервной копии ===== Запускается кнопкой **"Создание резервной копии"**.\\ {{:pasted:20210209-093533.png}}\\ 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.\\ В строке состояния появится сообщение **"Резервная копия успешно создана."**\\ Процесс завершен. Пользователи Химчистки могут продолжить работать. ===== Конвертация базы данных ===== Запускается кнопкой **"Конвертация БД"**.\\ {{:pasted:20210209-093622.png}}\\ Процесс выполняется аналогично процессу описанному в пункте "Создание резервной копии".\\ Отличия возникают в пунктах: "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 получает новый порт, чтобы через него случайно не смогли подключиться к исходной базе. \\ ===== Дополнительная информация ===== * [[dbc_agbdbconvertor|Проект "Агбис Конвертор БД"]]\\ * [[:dba_TFormFirebird|Форма "Настройка Firebird"]]\\