мета-данные страницы
Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
dba_agbdbadmin [05.11.2020 04:52] Анисютин |
dba_agbdbadmin [24.10.2022 10:28] (текущий) gileva_ms |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Восстановление базы данных ====== | + | ====== Проект "Агбис Сервисные работы" ====== |
- | Проект **"DBRecovery"**\\ | + | ===== Установка программы ===== |
- | E:\_Projects\Agbis.dxe\DBRecovery\DBRecovery.dpr\\ | + | |
- | Предназначен для выполнения следующих операций: | + | Программу можно загрузить по ссылке\\ |
- | * тестирования базы данных | + | <code> |
- | * восстановления базы данных | + | http://agbis.co/download/admin_tools/agbdbadmin.zip или http://download.agbis.ru/download/admin_tools/agbdbadmin.zip |
- | * конвертации базы данных при изменении версии Firebird | + | </code> |
+ | для тестирования\\ | ||
+ | <code> | ||
+ | \\\WebDAV\AgbisShare\Agbis\_TestBuilds\Boris\agbdbadmin\agbdbadmin.exe | ||
+ | </code> | ||
- | Выступает как дополнение к действиям проекта "Восстановление базы данных" (RecoveryDB).\\ | + | Папку AgbDBAdmin с программой AgbDBAdmin.exe следует разместить в папку с программами АГБИС.\\ |
+ | Обычно это **e:\Agbis\agbDBAdmin\agbDBAdmin.exe**\\ | ||
- | ===== Схема работы ===== | + | ===== Запуск программы ===== |
+ | |||
+ | Параметры задачи могут быть заданы в файле **agbDBAdmin.ini** или непосредственно в командной строке.\\ | ||
+ | Параметры в командной строке имеют более высокий приоритет.\\ | ||
+ | |||
+ | Пример **agbDBAdmin.ini**\\ | ||
+ | <code> | ||
+ | AliasBase="Agbis" | ||
+ | FirebirdNum= | ||
+ | CLIENT_DEP_ID= | ||
+ | timeout= | ||
+ | </code> | ||
+ | |||
+ | Если параметры не заданы, то из agbis.xml берется последняя активная запись базы данных и выполняется оптимизация.\\ | ||
+ | |||
+ | Программа запускается от имени администратора, для того чтобы была возможность установить необходимые службы и клиенты Firebird.\\ | ||
+ | |||
+ | ==== Параметры задачи ==== | ||
+ | |||
+ | Файл agbis.xml ищется в родительской папке. Если agbis.xml не найден, то нужно будет задавать параметры БД "Исходная" вручную.\\ | ||
+ | |||
+ | * **AliasBase** - алиас "Исходной" БД для поиска в списке БД agbis.xml. По умолчанию берется последняя активная БД. | ||
+ | * **FirebirdNum** - версия Firebird для новой базы данных при конвертировании (используется только первая цифра). По умолчанию совпадает с версией "Исходной" БД | ||
+ | * **CLIENT_DEP_ID** - номер подразделения в БД PC (client_dep_params.id). Используется для отправки отчета в PC при запуске из ReplIn. По умолчанию отчет не отправляется. | ||
+ | * **timeout** - задержка в секундах перед выполнением основной части программы. Используется для остановки ReplIn перед обработкой БД. По умолчанию 0. | ||
+ | |||
+ | Пример команды\\ | ||
+ | <code> | ||
+ | AgbDBAdmin.exe AliasBase="Agbis" FirebirdNum=3 | ||
+ | </code> | ||
+ | |||
+ | Хост, порт и файл **"Исходной"** базы данных берутся из agbis.xml | ||
+ | Если база данных работает под Firebird 2, то будет выполнена конвертация базы данных для работы под Firebird 3.\\ | ||
+ | Если база данных работает под Firebird 3, то будет выполнена оптимизация базы данных.\\ | ||
+ | Настройки выставляются как значения по умолчанию и перед выполнением операций их можно изменить.\\ | ||
+ | |||
+ | <alert info> | ||
+ | Подключение к **"Исходной"** базе данных должно быть локальным, так как для выполнения операций требуется прямой доступ к файлам для | ||
+ | переименования и копирования, а также используется режим Embedded Firebird.\\ | ||
+ | </alert> | ||
+ | |||
+ | ===== Режимы работы ===== | ||
+ | |||
+ | Для удобства пользователя добавлена возможность выбора режима работы в соответствии с уровнем его подготовки:\\ | ||
+ | * Экспресс | ||
+ | * Нормальный | ||
+ | * Эксперт | ||
+ | |||
+ | ===== Режимы работы "Нормальный" ===== | ||
+ | |||
+ | Предназначен для использования сотрудниками технической поддержки.\\ | ||
+ | Предназначен для пошагового выполнения процедуры восстановления.\\ | ||
+ | В частности возможно конвертирование базы данных при изменении версии Firebird.\\ | ||
+ | Доступно расширенное тестирования базы данных.\\ | ||
+ | |||
+ | При этом некоторые операции возможно выполнить в ручном режиме сторонними средствами.\\ | ||
+ | |||
+ | {{:dba_agbdbadmin_tformmain_detail.png}}\\ | ||
+ | |||
+ | ==== Этапы выполнения ==== | ||
+ | |||
+ | Процесс восстановления база данных проходит несколько этапов: \\ | ||
+ | - Подготовка базы данных к восстановлению.\\ | ||
+ | - Восстановление структуры записей базы данных.\\ | ||
+ | - Оптимизация базы данных.\\ | ||
+ | - Тестирование БД **Новая**.\\ | ||
+ | - Возвращение в режим обслуживания пользователей.\\ | ||
+ | |||
+ | В процессе восстановления будут использоваться разные файлы базы данных. | ||
+ | Для того чтобы отслеживать эти изменения создаются объекты с параметрами баз данных, которые будем называть | ||
+ | |||
+ | * БД **Исходная** | ||
+ | * БД **Переименованная** | ||
+ | * БД **Копия** | ||
+ | * БД **Новая** | ||
+ | Кроме этого будет использоваться еще один объект, который ссылается на базу данных с данными для сверки \\ | ||
+ | * БД **Эталонная** | ||
+ | |||
+ | Ниже рассматривается движение базы данных по этапам восстановления | ||
+ | |||
+ | === Подготовка базы данных к восстановлению === | ||
+ | |||
+ | Требования: | ||
+ | * Требуется гарантировать возвращение базы данных в рабочее состояние.\\ | ||
+ | * Так как в результате процедур восстановления база данных может быть разрушена, то перед восстановлением должна обязательно быть сделана резервная копия.\\ | ||
+ | * В момент выполнения процедур восстановления база данных должна работать в монопольном режиме, чтобы исключить конфликты обработки записей.\\ | ||
+ | |||
+ | Объект БД **Исходная** содержит параметры: имя файла, порт и др. - которые соответствуют рабочему режму базы данных, когда база данных выполняет свои основные функции, к ней подключаются пользовательские приложения.\\ | ||
+ | После завершения процедуры восстановления база данных должна соответствовать этим параметрам.\\ | ||
+ | |||
+ | Для гарантии восстановления рабочего режима базы данных и обеспечения монопольного доступа выполняется | ||
+ | отключение всех пользователей, переименование файла базы данных и создание копии файла базы данных.\\ | ||
+ | |||
+ | БД **Переименованная** содержит параметры переименованной базы данных. По умолчанию в имени файла базы данных добавляется подчерк.\\ | ||
+ | Пусть, например, БД **Исходная** имеет файл D:\DB\TestConv\ARM.fdb, тогда БД **Переименованная** будет иметь файл D:\DB\TestConv\ARM_.fdb\\ | ||
+ | БД **Копия** содержит параметры переименованной базы данных. По умолчанию в имени файла базы данных добавляется суффикс "_clone".\\ | ||
+ | Пусть, например, БД **Исходная** имеет файл D:\DB\TestConv\ARM.fdb, тогда БД **Копия** будет иметь файл D:\DB\TestConv\ARM_clone.fdb\\ | ||
+ | |||
+ | C БД **Переименованная** никакие действия не выполняются. Переименование делается только с целью блокировать изменения базы данных на время восстановления и | ||
+ | таким образом избежать потери данных при замене исходной базы данных исправленную.\\ | ||
+ | Все обработки будут выполняться в БД **Копия** и БД **Новая**.\\ | ||
+ | |||
+ | Операции выполняются на [[:dba_TFormDBCopy_Prepare|форме "Переименование и копирование базы данных"]]\\ | ||
+ | |||
+ | === Восстановление структуры записей базы данных === | ||
+ | |||
+ | В процессе работы при аварийном отключении питания, при появлении физических дефектов на жестком диске или по другим причинам могут теряться записи. | ||
+ | База данных продолжает работать однако происходит потеря данных и ее целостность нарушается. Это рано или поздно приводить к потере доступа и к остальным данным. | ||
+ | Поэтому нужно своевременно устранять эти ошибки. Часть ошибок может быть устранена в автоматическом режиме. | ||
+ | Однако потерянные записи таким образом восстановить невозможно. Поэтому восстановление выполняется в два этапа: | ||
+ | - добавляются фиктивные записи, для того чтобы можно было завершить процедуры восстановления и оптимизации. При этом составляется список документов, которые требуют восстановления.\\ | ||
+ | - исправляются испорченные документы вручную на основании бумажных документов или из более ранних резервных копий, которые подключаются как БД **Эталонная**. | ||
+ | Второй этап может выполняться позже после завершения работы программы восстановления.\\ | ||
+ | |||
+ | Все операции выполняются в БД **Копия**.\\ | ||
+ | |||
+ | Операции выполняются на [[:dba_TFormDBFirstAid|форме "Первичное восстановление структуры базы данных"]]\\ | ||
+ | |||
+ | === Оптимизация базы данных === | ||
+ | |||
+ | В процессе работы данные размещаются на различных страницах в результате чего для чтения одной записи может потребоваться считывание нескольких страниц | ||
+ | размещенных достаточно далеко друг от друга.\\ | ||
+ | В момент создания бэкапа из базы данных удаляется уже неиспользуемая информация: удаленные записи, удаленные значения BLOB-полей. | ||
+ | После восстановления базы данных размер базы может существенно сократиться, а также записи располагаются на страницах компактно. | ||
+ | В результате быстродействие работы базы данных может возрасти в несколько раз. | ||
+ | Для выполнения операции Backup/Restory требуется, чтобы успешно завершился предыдущий этап.\\ | ||
+ | |||
+ | **Backup** делается из БД **Копия** программой GBAK, **Restory** выполняется в БД **Новая** другой программой GBAK.\\ | ||
+ | Операция Backup/Restory формируется конвейер программ GBAK. Это позволяет сократить требуемый объем свободного места на диске, так как не создается промежуточный фал бэкапа, а сразу делается резервная копия. | ||
+ | И дополнительно сокращается время выполнения операции.\\ | ||
+ | |||
+ | Есть возможность для операции **Backup** использовать одну версию Firebird, а для **Restory** другую версию Firebird.\\ | ||
+ | В этом случае получится конвертирование базы данных под новую версию Firebird.\\ | ||
+ | В этом случае есть особенность - нужно переключить работу приложений на новую версию Firebird.\\ | ||
+ | |||
+ | Операции выполняются на [[:dba_TFormDBBackup|форме "Оптимизация/Конвертирование"]]\\ | ||
+ | |||
+ | === Тестирование БД **Новая** === | ||
+ | |||
+ | Во время операции Backup/Restory возможна потеря данных. Поэтому требуется проверка результата выполнения этой операции.\\ | ||
+ | * Сравнение структуры | ||
+ | * Активация индексов базы данных | ||
+ | |||
+ | Для проверки выполняется сравнение БД **Новая** и БД **Эталонная**\\ | ||
+ | В качестве БД **Эталонная** по умолчанию используется БД **Переименованная**, то есть фактически БД **Исходная**.\\ | ||
+ | Однако можно заменить БД **Переименованная** на любую другую. | ||
+ | |||
+ | == Сравнение структуры == | ||
+ | |||
+ | Сейчас просто сравнивается количество объектов разного типа. | ||
+ | |||
+ | * Сравнение количества доменов | ||
+ | * Сравнение количества таблиц | ||
+ | * Сравнение количества представлений | ||
+ | * Сравнение количества процедур | ||
+ | * Сравнение количества триггеров | ||
+ | * Сравнение количества генераторов | ||
+ | * Сравнение количества исключений | ||
+ | * Сравнение количества UDF | ||
+ | * Сравнение количества ролей | ||
+ | * Сравнение количества индексов | ||
+ | |||
+ | Операции выполняются на [[:dba_TFormDBVerify|форме "Проверка успешности оптимизации/конвертации"]]\\ | ||
+ | * [[:dba_TFormDBVerify|Форма "Проверка успешности оптимизации/конвертации"]]\\ | ||
+ | |||
+ | == Активация индексов базы данных == | ||
+ | |||
+ | В момент оптимизации базы данных часть индексов может не включится. Это может произойти, например, из-за потерянных записей и, как следствие, нарушении целостности базы данных.\\ | ||
+ | Запускается процедура включения всех индексов БД **Новая**.\\ | ||
+ | |||
+ | Операции выполняются на [[:dba_TFormDBIndexes|форме "Активация индексов базы данных"]]\\ | ||
+ | Выполняются работы, которые делались через xStarter и программу «Восстановление базы данных» (RecoveryDB). | ||
+ | |||
+ | === Возвращение в режим обслуживания пользователей === | ||
+ | |||
+ | Для того чтобы база данных могла отвечать на запросы пользователей нужно восстановить базу данных указанную в объекте БД **Исходная**.\\ | ||
+ | Восстановление выполняется в зависимости от результатов выполнения процедур восстановления.\\ | ||
+ | * Если при восстановлении возникла ошибка, то в качестве БД **Исходная** берется БД **Переименованная**, то есть просто просто возвращаем к работе старую базу данных.\\ | ||
+ | * Если при восстановлении выполнен этап **Восстановление структуры записей базы данных**, а этап **Оптимизация базы данных** и дальше не выполнялись, | ||
+ | то в качестве БД **Исходная** берется БД **Копия**, то есть файл БД **Копия** переименовываем в файл БД **Исходная**.\\ | ||
+ | * Если при восстановлении выполнены все этапы, | ||
+ | то в качестве БД **Исходная** берется БД **Новая**, то есть файл БД **Новая** переименовываем в файл БД **Исходная**.\\ | ||
+ | |||
+ | Операции выполняются на [[:dba_TFormDBCopy|форме "Возвращение в режим обслуживания пользователей"]]\\ | ||
+ | |||
+ | |||
+ | ===== Режимы работы "Экспресс" ===== | ||
+ | |||
+ | Предназначен для выполнения работ по восстановлению базы данных в режиме максимальной автоматизации.\\ | ||
+ | {{:dba_agbdbadmin_tformmain_express.png}}\\ | ||
+ | В этом случае для работы доступна только одна форма [[:dba_TFormExpressRecovery| "Экспресс восстановление"]]\\ | ||
+ | Работа по восстановлению не требует специальных знаний по архитектуре базы данных АГБИС.\\ | ||
+ | Достаточно знать в какой папке размещается файл базы данных.\\ | ||
+ | Работа может выполняться, например, системными админиcтраторами.\\ | ||
+ | <alert info> | ||
+ | Если повреждения оказываются более серьезными и в автоматическом режиме их исправить не удается, | ||
+ | то система будет возвращена в состояние до момента запуска восстановления.\\ | ||
+ | </alert> | ||
+ | В этом случае рекомендуется обратится в отдел технической поддержки АГБИС для проведения восстановления.\\ | ||
+ | Если будут предоставлены журналы выполнения восстановления, то процесс выяснения проблем в базе данных и самого восстановления займет меньше времени.\\ | ||
+ | |||
+ | ===== Режимы работы "Эксперт" ===== | ||
+ | |||
+ | Предназначен для использования сотрудниками технической поддержки.\\ | ||
+ | |||
+ | Предназначен для пошагового выполнения процедуры восстановления и настройки базы данных для работы на новом компьютере.\\ | ||
+ | К возможностям доступным в режиме работы "Нормальный" добавляются возможности по переключению номера подразделения, установка и настройка Firbird и др.\\ | ||
+ | {{:dba_agbdbadmin_tformmain_Expert.png}}\\ | ||
+ | |||
+ | Для выполнения операций используются формы:\\ | ||
+ | * [[:dba_TFormFirebird|Форма "Подразделения"]]\\ | ||
+ | Показывает список подразделений из таблицы DEPS\\ | ||
+ | * [[:dba_TFormFirebird|Форма "Идентификация базы данных"]]\\ | ||
+ | Показывает параметры, которые используются при идентификации базы данных.\\ | ||
+ | Позволяет изменить DEP_ID в базе данных. (Требует доработки)\\ | ||
+ | * [[:dba_TFormFirebird|Форма "Настройка Firebird"]]\\ | ||
+ | Позволяет настроить службы Firebird.\\ | ||
+ | Переустановить клиентов Firebird. (Требует доработки)\\ | ||
- | - На главной форме проекта размещаются кнопки для выбора вида работ | ||
- | * [[:dbr_Test|Тестирование базы данных]]\\ | ||
- | * [[:dbr_Recovery|Восстановление базы данных]]\\ | ||
- | * [[:dbr_Coversion|Конвертация базы данных]]\\ | ||
===== Дополнительная информация ===== | ===== Дополнительная информация ===== | ||
+ | * [[:dba_TFormExpressRecovery|Форма "Экспресс восстановление"]]\\ | ||
+ | |||
+ | * [[:dba_TFormDBCopy_Prepare|Форма "Переименование и копирование базы данных"]]\\ | ||
+ | * [[:dba_TFormDBFirstAid|Форма "Первичное восстановление структуры базы данных"]]\\ | ||
+ | * [[:dba_TFormDBBackup|Форма "Оптимизация/Конвертирование"]]\\ | ||
+ | * [[:dba_TFormDBVerify|Форма "Проверка успешности оптимизации/конвертации"]]\\ | ||
+ | * [[:dba_TFormDBIndexes|Форма "Активация индексов базы данных"]]\\ | ||
+ | * [[:dba_TFormDBCopy_Revert|Форма "Возвращение в режим обслуживания пользователей"]]\\ | ||
+ | |||
+ | * [[:dba_TFormFirebird|Форма "Подразделения"]]\\ | ||
+ | * [[:dba_TFormFirebird|Форма "Идентификация базы данных"]]\\ | ||
+ | * [[:dba_TFormFirebird|Форма "Настройка Firebird"]]\\ | ||
- | [[:|Назад]]\\ | + | * [[:|Проекты ]]\\ |