Восстановление базы данных
В случае серьёзного повреждения базы данных восстановить её можно только из резервной копии. Утилита командной строки prorest используется как для восстановления полной, так и для восстановления инкрементальных копий. В качестве альтернативы этой утилите можно создать задачу в OpenEdge Management и выполнить её, когда будет необходимо.
Обычно в промышленной среде редко требуется восстановление базы данных. Чаще это требуется для выполнения тестирования приложения или отладки каких-либо новых функций, для чего создаётся копия базы данных в тестовой среде. Тем не менее, процесс восстановления базы данных – это важная задача и многие администраторы баз данных регулярно тестируют этот процесс для проверки процедур резервного копирования и восстановления, а также для улучшения навыков восстановления базы данных в экстремальных ситуациях.
Для успешного восстановления базы данных придерживайтесь следующих рекомендаций:
- Всегда восстанавливайте резервную копию либо в новую пустую базу данных, либо в пустые каталоги.
- Инкрементальная копия должна восстанавливаться в существующую базу данных и соответствовать порядковому номеру.
- Восстанавливайте резервную копию с той же версией базы данных, которая использовалась для её создания.
- Если восстанавливать резервную копию предполагается поверх существующей базы данных, то предварительно создайте копию перезаписываемой базы.
- Если перед восстановлением не будет специально создан структурный файл для целевой базы данных, то prorest автоматически создаст для восстанавливаемой базы по одному экстенту переменного размера для каждой области хранения.
- Если необходимо восстановить базу данных с конфигурацией областей хранения, соответствующей исходной базе данных, то сделайте копию структурного файла исходной базы и обновите путь к экстентам в соответствии с новым расположением базы. После этого используйте обновлённый структурный файл в процессе восстановления.
- Если восстановление выполняется поверх существующей базы данных, то убедитесь, что она имеет такой же размер блока и конфигурацию областей хранения, которые содержатся в резервной копии.
- После восстановления базы данных рекомендуется выполнить утилиту PROUTIL DBANALYS для проверки целостности восстановленной базы данных, см. документацию к OpenEdge.
Для восстановления полной и соответствующих инкрементальных резервных копий придерживайтесь следующих правил:
- При условии, что не существуют перекрывающих инкрементальных копий, восстанавливайте резервные копии в том же порядке, в котором они были созданы.
- В первую очередь восстановите полную резервную копию.
- Затем восстановите первую инкрементальную копию.
- Далее восстановите вторую и все последующие инкрементальные копии.
- После восстановления полной резервной копии не вносите изменения в базу данных, инкрементальная копия должна быть восстановлена немедленно.
Внимание! Если порядок восстановления инкрементальных копий будет нарушен, то СУБД OpenEdge выдаст предупреждение и если после этого вы продолжите восстановление, то в результате база данных будет повреждена.
Если во время резервного копирования базы данных не был скопирован её структурный файл, то его можно восстановить на основании хранящейся в резервной копии информации. С помощью этих данных можно восстановить структуры областей хранения базы данных и сформировать соответствующий резервной копии структурный файл. Для получения этой информации используется утилита prorest с параметром –list.
Синтаксис:
prorest <db-name> <backup-filename> -list
Пример вывода на экран:
Area Name: Employee
Size: 3040, Records/Block: 32, Area Number: 7, Cluster Size 1
Полученная информация будет содержать размер области, количество записей в блоке, номер области и размер кластера для каждой области хранения базы данных. Используйте эти данные для создания структурного файла.
Утилита PROREST
Утилита командной строки prorest позволяет восстанавливать полную или инкрементальные копии, созданные утилитой probkup.
Синтаксис:
prorest <db-name> <backup-filename>
Пример восстановления полной резервной копии базы данных sports в базу данных sports2 из резервной копии SportsFulOffline.bak:
prorest sports2 .\backup\SportsFulOffline.bak
Пример восстановления инкрементальной копии сразу после восстановления полной копии:
prorest sports2 .\backupinc\SportsOnlInc1.bak
Использование OpenEdge Management
Для восстановления полной или инкрементальных копий с помощью OpenEdge Management необходимо создать отдельные задачи (job). Такие задачи могут быть созданы «с нуля» или с использованием шаблона Database Restore.
Следующие шаги описывают процесс создания задачи восстановления базы данных с помощью шаблона Database Restore в OpenEdge Management:
- В консоли OpenEdge Management открыть верхнее меню Jobs и щёлкнуть по ссылке Job from a Template. Откроется страница Create Custom Job.
- В секции Database Maintenance щёлкнуть мышью по ссылке Database Restore.
- На странице Database Restore Job указать название задачи (Name) и её описание (Description).
- В секции Restore from указать информацию о резервной копии, из которой необходимо выполнить восстановление:
- Если резервная копия находится на ленточном устройстве, то выбрать Tape и указать абсолютный путь к каталогу ленточного устройства.
- Если файл резервной копии находится на диске, то выбрать Disk. Указать путь к каталогу с файлом резервной копии (Directory) и имя файла резервной копии (File name).
- В секции Restore to выбрать контейнер и полное имя базы данных которую необходимо восстановить из резервной копии. Если необходимо перезаписать существующую базу данных в указанном расположении, то установить флаг Overwrite Database.
- Для восстановления базы данных указать параметр No Verification.
- Остальные параметры задачи оставить без изменений.
- Для сохранения задачи щёлкнуть мышью по кнопке Save.
После сохранения задачи откроется страница с общей информацией о ней. На этой странице можно выполнить задачу немедленно или запланировать её выполнения по расписанию. Процедура выполнения задачи восстановления аналогична процедуре выполнения задачи резервного копирования.