|
|
Защита данных - After-imaging
After-imaging
Основы баз данных OpenEdge
Защита данных
Стратегия резервного копирования (backup)
Востановление базы данных
After-imaging
Области и екстенты After-image
Оценка необходимого места для использования After-imaging
Создание областей After-image
Активирование After-imaging в Offline
Активирование After-imaging в Online
Управление after-image файлами
Мониторинг статусов AI файлов
Переключение на новый AI файл
Архивирование AI файлов
Планирование
Выполнение копирования
Защита копии
Извлечение AI блоков
Получение доступного AI файла для использования
Утилиты AI File Management
Архивация AI файлов в указанное место расположение
Активирование автоматического режима AI File Management
Мониторинг и установка параметров Ai File Management
Архивные экстенты
Журнал архива
Добавление и изменений AI экстентов
Выполнение наката (roll-forward recovery)
Последовательность After-image
Деактивация after-imaging
Обеспечение безопасности
Auditing
Репликация данных
Failover Clusters
Поддержка и мониторинг базы данных
Команды запуска и останова
Параметры запуска баз данных
Утилиты OpenEdge RDBMS
Виртуальные системные таблиц (VST)
After-imaging позволяет восстановить базу данных когда она будет повреждена или потеряна. Когда этот механизм активирован, движок базы данных записывает описания всех изменений в базе данных в after-image (AI) файлы. Эти файлы используются для последовательного наката на восстановленную из резервной копии базу данных, тем самым, исключая потерю транзакций, совершенных с момента формирования последней резервной копии, до момента, когда база оказалась поврежденной или потерянной.
Области и екстенты After-image
AI области определяются в структурном файле базы данных (.st). Можно создать как одну, так и множество областей AI, так же размещать их можно как на одном, так и на многочисленных дисках. Если имеется более одной AI области, вы без проблем можете выполнять online копирование при активированном After - imaging. Независимо от того, сколько AI областей определено, каждая такая область состоит только из одного экстента. Перед тем как определять количество AI экстентов, рассмотрите следующее:
- Движок базы данных использует AI области, определенные в структурном файле. При определении областей, можно размещать более чем одну область на диск. Тем не менее, не рекомендуется размещать их на диске, на котором расположены файлы базы данных (DB) и файлы before-image (BI).
- Как для экстентов с фиксированным размером, так и для экстентов с переменным размером, движок базы одинаково переключает экстенты, если текущий заполнен, на следующий пустой экстент. Если определяется три экстента фиксированного размера, в течение дня, вы можете использовать для заполнения 1 экстент, а второй пустой использовать при необходимости переключения. Третий экстент также остается пустым, на случай, если активность базы возрастает, увеличивая количество транзакций, и используется при заполнении второго.
Движок базы данных использует Ai области последовательно, в порядке описания их в структурном файле. Области AI имеют расширение “.an”, где n это порядковый номер области. После того как последняя область будет заполнена, движок переключится на первую область, если конечно она к этому времени уже пустая. Переключение экстентов, это действие по переходу от использования одной области до использования другой. Это механизм наглядно показан на рисунке 7-1.
Рисунок 7-1 Переключение AI областей
Перед переключением, необходимо проверять статус экстента, чтобы не пытаться использовать несуществующий файл.
Как и файлы базы данных и BI файлы, AI экстенты могут быть двух типов:
- Фиксированного размера
- Переменного размера.
Экстенты фиксированного размера
Это экстенты, размер которых, предварительно зафиксирован и отформатирован на диске. Он позволят точно определять размеры экстентов на диске, и определяется в структурном файле.
Экстенты переменной длины
Такие экстенты не имеют ограничения по размеру. Они заполняются, пока весь диск не заполнится, или поеп вы не скопируете базу данных или не используете команду RFUTIL AIMAGE NEW. Первоначальный размер задается автоматически равным 128К. Вы можете создать более чем один экстент для одной базы данных.
Оценка необходимого места для использования After-imaging
Перед активацией After-imaging очень важно правильно оценить необходимое дисковое пространство, позволяющее содержать все ai – файлы базы данных. Так как, например, если вы используете экстенты переменной длины, а свободное дисковое пространство закончится и при этом не возможно будет переключиться на пустой доступный экстент, база данных будет вынуждена остановиться, до вмешательства администратора. Подобный вариант можно предотвратить, если при запуске базы использовать параметр старта after-image stall (-aistall). Если этот параметр активирован, при возникновении такой ситуации, база приостановит свою деятельность, и отправит сообщении о недостаточности места в виде ошибки в лог база данных.
Для определения необходимого дискового пространства, воспользуйтесь отчетом BI Log Activity Display утилиты PROMON, для определения количества записей в BI за промежуток времени. Информация, записываемая в BI файлы, тесно связана с файлами AI. Следовательно, статистика PROMON BI Bytes written это то же самое, что и если бы это была статистика по AI файлам.
Измерьте статистику BI Bytes written несколько раз. Так как эти значения могут меняться в зависимости от периода работы, загрузки и активности в системе, поэтому за основу можно взять максимальное значение самого закруженного дня. Если нагрузка имеет тенденцию возрастать, увеличьте доступное пространство для AI файлов. Помните, лучше иметь запас свободного пространства, чем потом тратить время на восстановление.
Другой путь расчета размеров AI файлов, это использование Before-Image Cluster Size из утилиты PROMON окна BI Log Activity Display и Checkpoints из окна Activity Display. Если вы хотите, чтобы ai файл содержал все изменения в течение двух часов, определите, сколько контрольных точек (checkpoints) было в течение этих двух часов при максимальной нагрузке. Количество checkpoints умноженное на размер BI кластера (BI Cluster Size) равняется минимальному размеру AI экстента, необходимого для хранения изменений. Например, если в течение двух часов было четыре контрольных точки и размер кластера 0,5Mb, значит размер ai файла, для хранения двух часовых изменений, должен быть, по крайней мере, 2 Mb.
После того как были установлены размеры AI областей, необходимо постоянно следить за ними, чтобы обеспечивать необходимое свободное пространство для записи в экстенты.
Создание областей After-image
Создать AI области можно с помощью утилиты PROSTRCT и структурного файла. При создании новой базы используется команда PROSTRCT CREATE, а для добавления ai областей в существующую базу – PROSTRCT ADD.
Добавление ai областей для новой базы:
1. Создайте структурный файл
- Определите экстенты данных
- Определите BI экстенты
- Определите необходимой количество ai экстентов фиксированной длины. Экстенты определяются четырьмя признаками. Их описание находится в таблице:
Признак |
Описание |
Storage area Type |
Определяет тип файла. Тип “a” определяет, что этот файл – ai экстент |
Extent path and file name |
Определяет путь к файлу экстента. Введите путь по правилам текущей
операционной системы. Если вы не установите расширение, OE
автоматически проставит его по правилу “.an” |
Extent type |
Определяет тип экстента – переменной или фиксированной длины. Экстент фиксированной длины определяется как – f. |
Extent size |
Определяет размер экстента в килобайтах. Минимальное значение – 16 K.
Размер экстента должен быть кратным 16K для всех операционных систем.
Если будет определен другой размер, PROSTRCT выдаст предупреждение и
автоматически округлит значение до следующего кратного 16 K.
Максимальный размер ограничен возможностями операционной системы и
размерами диска. |
Следующий пример показывает пример определения ai экстента фиксированной длины:
a db/mary/apdir/test.a1 f 2048
- Определите необходимое количество ai экстентов переменной длины. Вам необходимо указать только первые два признака в определении: тип экстента и путь к файлу экстента. В отличие от BI экстентов, вы можете определять сколько угодно ai экстентов переменной длины для базы данных.
2. Создайте базу данных, используя для формирования структуры одну из команд PROSTRCT, PROCOPY или PROREST.
Добавление AI областей в существующую базу:
1. Создайте структурный файл, содержащий информацию о добавляемых экстентах.
2. Используйте PROSTRCT ADD совместно с созданным структурным файлом, для добавления экстентов.
3. Используйте PROSTRCT LIST для обновления st-файла базы данных.
Активирование After-imaging в Offline
Для активации after-imaging необходимо использовать классификатор AIMAGE BEGIN утилиты RFUTIL. Для использования after-imaging необходимо выполнить полную резервную копию, т.к. ai файлы и полная копия используются совместно для восстановления базы данных.
Для активации в offline необходимо:
1. Создать ai области для базы
2. Сформировать резервную полную копию
3. После копирования использовать следующую команду для активации
rfutil db-name -C aimage begin
Если база данных будет изменена после формирования копии, и до активации after-imaging, RFUTIL отобразит сообщение об ошибке и не выполнит активацию.
Активирование After-imaging в Online
Используйте утилиту PROBKUP с классификаторами online и enable ai для активации after-imaging при запущенной базе данных. Время завершения копирования будет являться базовой точкой для наката ai файлов.
Для активации необходимо:
1. Создать области ai в базе данных
2. Одновременно скопируйте базу данных и активируйте after-imaging, используя следующую команду:
probkup online dbname output-device enableai
В данном случае возможны дополнительные классификаторы, для их использования обратитесь в соответствующий раздел.
Управление after-image файлами
Многое в управлении after-imaging может работать в автоматическом режиме, но, тем не менее, важно понимать, как эти процедуры работают, и как их можно выполнять вручную. Далее подробно описывается каждая процедура при работе в ручном режиме.
Мониторинг статусов AI файлов
Статус ai файлов может принимать следующие значения:
- Empty – ai файл пустой и доступен для использования
- Busy – текущий используемый ai экстент
- Full – когда текущий экстент заполняется, происходит переключение экстентов: состояние текущего (busy) экстента меняется на заполненный (full) и следующий пустой (empty) экстент становится текущим (busy)
- Locked – при работающей репликации, заполненный экстент заблокирован (locked) пока его данные не будут реплицированы на целевую (target) базу. Как только репликация будет завершена, экстент будет разблокирован и помечен как полный (full).
- Archived – при работающем OE Replication и AI File Management, экстент, который был заблокирован, и заархивирован утилитой AI File Management, и будет помечен как архивный (archived) пока процесс репликации не будет завершен. После завершения репликации экстент будет помечен как пустой (empty).
Существует три способа определить статус AI файла.
1. RFUTIL AIMAGE EXTENT LIST
Эта команда отображает всю информацию о каждом ai экстенте, включая их статус:
rfutil db-name -C aimage extent list
Команда не выдаст информацию, если after-imaging не активирован.
2. PROMON
В PROMON также можно просмотреть информацию о статусе экстентов в мониторе PROMON -> R&D -> Status Displays -> AI Extents
3. RFUTIL AIMAGE QUERY
Классификатор AIMAGE QUERY утилиты RFUTIL позволяет определять статус конкретного ai экстента. Возвращаемое значение для большинства запросов он будет равен либо простому числу, либо слову. Это сделано для того, чтобы возвращаемое значение было легко использовать и обрабатывать в скриптах.
Используйте следующую команду для осуществления запроса:
rfutil db-name -C aimage query query-option by search-option search-value
Query-option определяет, какую информацию вы хотите собрать об ai экстенте. Search-option определяет способ определения ai экстентов для запроса. Search-value определяет значения для использования в search-option. Например, если вы хотите определить, когда after-imaging начал запись в конкретный экстент, определенный своим порядковым номером, используйте следующую команду:
rfutil db1 -C aimage query startdate by sequence 1
Возвращаемое значение будет датой:
Wed May 26 15:06:49 2004
Если необходимо получить полную информацию об экстенте, определенном по имени, используйте следующую команду:
rfutil db1 -C aimage query all by name db1.a1
Возвращено будет следующее:
Extent: 1
Status: Busy
Type: Fixed Length
Path: /dbshare/databases/db1.a1
Size: 120
Used: 1
Start: Wed May 26 15:06:49 2004
Seqno: 1
RFUTIL AIMAGE EXTENT FULL показывает имя самого старшего полного (full) ai экстента. Используйте эту информацию для архивирования ai – файлов в правильном порядке их заполнения. Даже если будут существовать одновременно несколько заполненных (full) ai файлов, команда сообщит о наиболее старшем из них.
rfutil db-name -C aimage extent full
Переключение на новый AI файл
Переключение между ai файлами может понадобиться в следующих случаях:
- Как часть резервной спецификации
- Когда текущий экстент фиксированного размера заполнен или когда свободное пространство на диске, на котором расположен экстент, закончилось
- После архивации ai экстента
Кроме того, переключение на новый ai экстент устанавливает точку для формирования резервной копии. После восстановления базы из копии, накат ai файлов происходит именно с этого ai файла.
Примечание: при выполнении ONLINE BACKUP, происходит автоматическое переключение на следующий пустой (empty) экстент. Поэтому, желательно предварительно убедиться, что такой экстент имеется.
Экстенты фиксированной длины имеют строго определенный размер, поэтому движок базы данных в состоянии самостоятельно определить, когда экстент заполнится.
В отличие от экстентов фиксированной длины, экстенты переменной длины не ограничены по размеру. Следовательно, движок базы данных не может определить, когда экстент будет заполнен. Если не используется RFUTIL AIMAGE NEW, экстент будет продолжать заполняться, пока не достигнет ограничения по размеру файла, выставленный операционной системой, или будет достигнут предел в 2Gb адресного пространства для OpenEdge, если не активирована поддержка больших файлов, или просто не закончится место на диске. Когда текущий экстент будет заполнен (full), произойдет автоматическое переключение на следующий экстент, при условии что он пустой (empty).
Если же следующий экстент заполнен (full), база данных будет остановлена. Однако можно использовать параметр запуска базы данных After-image Stall (-aistall), для приостановления активности базы и отправки сообщения в лог базы или до отключения after-imaging с помощью классификатора AIMAGE AIOFF утилиты RFUTIL. При использовании –aistall, можно заархивировать старший заполненный экстент и пометить его как пустой (empty). Тогда система автоматически переключит экстенты и восстановит активность базы данных. Если вы используете RFUTIL AIMAGE AIOFF, after-imaging будет выведен из строя и больше не сможет записывать ai файлы.
Примечание: использование параметра –aistall и RFUTIL AIMAGE AIOFF можно только в многопользовательском режиме.
Когда база данных приостанавливает активность или происходит ее останов, в лог базы данных отправляется следующее сообщение:
Can’t switch to after-image extent filename it is full.
Backup ai extent and mark it as empty (3774)
База данных не сможет восстановить активность, пока необходимый для переключения экстент, не будет заархивирован и помечен как пустой.
Можно вручную выполнять в online переключение ai файлов, для обеспечения архивации файлов не дожидаясь их полного заполнения.
Для переключения необходимо:
1. Проверить был ли архивирован текущий экстент, и если нет – сделать это.
2. Используйте RFUTIL AIMAGE NEW со следующим синтаксисом:
rfutil db-name -C aimage new
При запуске RFUTIL AIMAGE NEW, утилита изменяет статус текущего экстента на full и изменяет статус следующего на busy.
Архивирование AI файлов
Планирование
План зависит от расписания резервного копирования для вашей базы данных и необходимости резервного копирования ai файлов:
- При выполнении резервного копирования базы данных: Копируйте ai файлы каждый раз при выполнении резервной копии базы. Они должны быть обычной частью резервного копирования. Также, старайтесь копировать ai файлы на отдельный диск, на котором не хранятся файлы базы данных, лог и bi файлы. Эта техника обеспечит восстановление базы данных путем наката ai файлов на восстановленную из полной копии базу. Если же вы выберете тот же диск, вам необходимо обеспечить их восстановление отдельно от восстанавливаемой базы. Примечание: при одновременном копировании ai файлов и файлов базы данных имейте в виду, что ai файлы базируются на предыдущей копии базы, а не на текущей. Также на базе данных, имеющей ai экстенты, в online можно использовать утилиту RFUTIL. Можно выполнять online резервное копирование, когда after-imaging активирован. Утилита резервного копирования автоматически пометит busy экстенты как full и переключит экстенты.
- Ежедневно: Вы можете принять этот метод в следующих случаях: в вашей резервной спецификации определено еженедельное резервное копирование базы данных, а ai файлы в течение недели вырастают до больших размеров; вы решаете выполнять ежедневные копии ai файлов вместо инкрементальных копий базы данных. Тем не менее, имейте в виду, что восстановления базы из инкрементальной копии происходит намного быстрее, чем с использованием наката ai файлов.
Если используется один ai файл, очень важно копировать его, прежде чем свободное место на диске, на котором он находится, закончится. Если вы своевременно этого не сделаете, база данных будет остановлена. Опять же, нежелательно использовать только один ai файл, так как усложняется процедура управления after-imaging, например, в данном случае, для копирования необходимо останавливать базу.
Если же используется множество ai файлов, нужно следить за их размерами и производить своевременное копирования, чтобы не допустить использования всего дискового пространства. Так же, имейте в виду, что восстановление из одного большого ai файла проще, чем из множества файлов маленького размера.
Выполнение копирования
Вы можете использовать утилиты операционной системы для копирования как одного ai файла, так и для многочисленных файлов. В этом случае проверьте, что они поддерживают целостность файлов. Во многих Unix системах некоторые утилиты (например, cpio) копируют только часть файла, это регулируется параметром ULIMIT. Копии таких файлов не пригодны для использования. Если вы копируете файлы по ftp, то обязательно должна быть включена поддержка бинарных файлов. Так как бинарные файлы могут быть некорректно скопированы по ftp.
Защита копии
После копирования AI файлов необходимо убедиться в следующем:
- Метка резервной копии. Информативное именование копии, гарантирует быструю идентификацию, а, следовательно, вам не понадобится много времени для нахождения необходимой копии при необходимости восстановления. Рекомендуется, чтобы имя копии содержало:
Дату и время формирования
Имя базы данных
Имя и тип файла
Номер тома и общее количество томов, даже если копия состоит из одного файла
Инициалы сотрудника, создавшего копию
Имя утилиты, с помощью которой можно выполнить восстановление. Конечно же, это лишь рекомендация, и вы можете добавить дополнительную необходимую вам информацию, либо убрать не нужную.
- Храните копии в легко доступном месте, по крайней мере, в течение недели
- Храните архивные копии на другом компьютере, а лучше всего, даже в другом здании
Извлечение AI блоков
Извлечение AI блоков из AI экстента, позволит вам значительно уменьшить размер хранимого файла. Это очень удобно, в случае, когда необходимо пересылать файлы на другой сервер, так как с файлы меньшего размера копируются быстрее.
Используйте классификатор AIMAGE EXTRACT утилиты RFUTIL для выгрузки AI блоков:
rfutil db-name -C aimage extract -a ai-extent -o output-file
Итоговый файл будет аналогичен исходному файлу, и его можно использовать точно так же для наката с помощью утилиты RFUTIL.
Примечание: подобное извлечение имеет смысл только для экстентов фиксированной длины. Для экстентов переменной длины эффект будет минимальным.
Получение доступного AI файла для использования
После того, как текущий AI файл будет скопирован, он должен быть помечен как пустой (empty) для обеспечения повторного использования. Пометить файл можно с помощью классификатора AIMAGE EXTENT EMPTY утилиты RFUTIL. После того как файл будет помечен как пустой, его содержимое будет автоматически перезаписано.
Для выполнения процедуры используйте следующую команду:
rfutil db-name -C aimage extent empty [ extent-number | extent-path ]
Если параметры extent-number и extent-path не будут указаны, RFUTIL автоматически пометит самый старший заполненный (full) экстент.
Для определения необходимого вам экстента, используйте RFUTIL AIMAGE LIST и RFUTIL AIMAGE EXTENT FULL.
Утилиты AI File Management
AI File Management предоставляет хорошие средства для управления after-imaging. AI File Management может работать в двух режимах: ручном и автоматическом. Автоматический режим предназначен для использования пользователями с небольшим опытом, либо с полным его отсутствием. В автоматическом режиме легко происходит архивирование AI файлов. В ручном режиме, опытный пользователь имеет больше возможностей по управлению архивированием.
Архивация AI файлов в указанное место расположение
Автоматическое архивирование экстентов выполняется демоном, запущенным брокером базы данных. Он может работать в двух режимах: временном и мгновенном (on-demand). Во временном режиме переключение экстентов выполняется через интервал времени, при использовании специального параметра, даже если экстент еще не заполнен. Минимальный интервал – 120 секунд, максимальный – 86400 секунд (24 часа). В режиме мгновенного реагирования (on-demand), переключение происходит, только если экстент заполнен (full). В любом случае, проверка экстента на заполнение происходит каждые пять секунд. При использовании AI File Management вы должны иметь достаточное количество экстентов, чтобы всегда имелся хотя бы один файл доступный для записи.
Временной режим архивации без OE Replication
Как только истекает установленный интервал, демон AI File Management выполняет следующее:
1. “Просыпается” по истечению пять секунд, и архивирует все заполненные AI экстенты.
2. Проверяет, истек ли интервал. Если интервал истек, текущий экстент переключается. Текущий экстент со статусом BUSY помечается как FULL, а следующий EMPTY экстент помечается как BUSY.
3. Заархивированный экстент помечается как EMPTY.
4. “засыпание” на 5 секунд
Возможно, что во время многих повторений этих действий, не будет найден ни один экстент со статусом FULL. По истечении периода, обычно обязательно находится как минимум один FULL экстент для архивирования, и один для установки статуса FULL, при выполнении шага 2. В загруженной системе, возможно, что экстенты будут заполнены еще при выполнении шагов 3 и 4. Они обработаются, когда демон в следующий раз “проснется”.
Временной режим архивации с OE Replication
Когда для базы данных активирован OE Replication, демон выполняет следующие шаги:
1. “Просыпается” после 5 секундного сна, и архивирует все FULL и LOCKED экстенты.
2. Проверяет, истек ли интервал. Если истек – переключает текущий экстент. При переключении BUSY экстент помечается как LOCKED, а следующий EMPTY экстент помечается как BUSY.
3. Помечает заархивированные FULL экстенты как EMPTY, а LOCKED экстенты как ARCHIVED.
4. “Засыпает” на пять секунд.
Отличие заключается в том что, при активированном OE Replication, экстент не может быть помечен как EMPTY, пока он не будет полностью скопирован. Экстенты переходят из состояния BUSY в состояние LOCKED. Если LOCKED экстент будет скопирован до того, как архивирован, он перейдет в состояние FULL, и AI File Management будет архивировать уже его. Если же LOCKED экстент будет архивирован до того, как скопирован, то он перейдет в состояние ARCHIVED, и ответственность за перевод его в состояние EMPTY будет возложена в этом случае на OE Replication.
Рисунок: схема смены статусов AI экстентов
Процесс мгновенной архивации без OE Replication
При работе демона в режиме мгновенной реакции (on-demand), он выполняет следующие шаги:
1. “Просыпается” после пять секундного сна. Архивирует все FULL AI экстенты и помечает их как EMPTY.
2. При нормальной активности базы данных, заполненный текущий BUSY экстент, помечается как FULL, а следующий EMPTY экстент помечается как BUSY.
3. “Засыпает” на пять секунд.
Процесс мгновенной архивации с OE Replication
При активированном OE Replication и работе демона AI File Management в режиме мгновенного реагирования, выполняются следующие шаги:
1. “Просыпается” после пять секундного сна. Архивирует FULL и LOCKED экстенты. LOCKED экстенты помечает как архивные, а FULL – как EMPTY.
2. Текущий заполняемый BUSY экстент помечается как LOCKED, а следующий EMPTY экстент как BUSY.
3. Когда OE Replication скопирует LOCKED экстент, он пометит его как EMPTY.
4. Демон “засыпает” на пять секунд.
Активирование автоматического режима AI File Management
Если after-imaging для вашей базы данных активирован, следующий шаги продемонстрируют, как активировать автоматический режим для работы AI File Management. Если after-imaging не активирован, вы можете активировать его и Ai File Management одновременно в online.
Активация в Offline:
1. Проверьте, имеются ли в базе данных AI области и активирован ли after-imaging. Если нет, то добавьте области и активируйте after-imaging.
2. Создайте каталог, в который будет производиться архивация AI файлов
3. Активируйте Ai File Management для базы данных
rfutil mydb -C aiarchiver enable
4. Запустите брокер базы данных со следующими параметрами Ai File Management:
proserve mydb -S 6931
-aiarcdir /usr1/aiarchives/mydb/,/usr2/aiarchives/mydb/
-aiarcinterval 120
Активация в Online:
1. Проверьте, имеются ли в базе данных AI области и активирован ли after-imaging. Если нет, то добавьте области и активируйте after-imaging.
2. Создайте каталог, в который будет производиться архивация AI файлов
3. Выполните online резервное копирование базы с активацией Ai File Management, копия базы будет считаться отправной точкой для наката Ai файлов:
probkup online mydb /usr4/backups/mydb.bck enableaiarchiver -aiarcdir
/usr1/aiarchives/mydb/,/usr2/aiarchives/mydb/
-aiarcinterval 120
В обоих примерах, определены два каталога для расположения архивов файлов, это usr1/aiarchives/mydb/,/usr2/aiarchives/mydb/. Если эти директории будут отсутствовать, они могут быть созданы автоматически при условии, что указан параметр –aiarcdircreate.Для Windows при определении более чем одного каталога, необходимо указать их в кавычках. Ai File Management переключится на следующий каталог, если в текущем каталоге закончится доступное место (диск заполнен). Поэтому, если определяется более одного каталога, то это имеет смысл только тогда, когда они размещены на разных носителях. Естественно, что параметр –aistall должен быть активирован.
Параметр –aiarcinterval установлен в 120, чтобы будить демона для архивации ai экстентов каждые 2 минуты. Этот интервал может быть установлен от 1 минуты до 24 часов. Если этот параметр не указан, демон будет просыпаться каждый раз, когда экстенты будут заполнены для их архивации, не зависимо от времени.
Если вы не уверены в выборе интервала для параметра –aiarcinterval, можете временного его не указывать, и по истечении определенного срока, проанализировав лог ai архивирования (db.archival.log) окончательно определиться с интервалом.
Мониторинг и установка параметров Ai File Management
Как только автоматический режим архивации был включен, вам следует постоянно проводить мониторинг производительности демона и состояние архивных каталогов. Утилита RFUTIL обеспечивает вас необходимыми классификаторами для изменения параметров в online.
Для изменения списка каталогов, используемых для архивации ai файлов, используйте следующую команду:
rfutil mydb -C aiarchiver setdir
/usr3/aiarchives/mydb/,/usr4/aiarchives/mydb/
Команда заменяет установленные ранее каталоги на новые. Если новых каталогов не существует, необходимо добавить параметр –aiarcdircreate, чтобы Ai File Management их создал.
Для изменения интервала архивирования, используйте следующую команду:
rfutil mydb -C aiarchiver setinterval 600
В данном случае таймер для демона будет установлен на 10 минут.
Для того чтобы следующий FULL Ai экстент немедленно архивировать, используйте:
rfutil mydb -C aiarchive nextextent
Команду архивирует следующий FULL экстент в указанный по списку каталог. Если демон работает во временном режиме, то в этом случае его таймер будет сброшен. Если активность базы будет приостановлена из-за заполнения всех экстентов, эта команда освободит экстент. Как только активность будет восстановлена, установите таймер демона в меньшее значение или вообще на ноль, чтобы предотвратить повторную остановку активности.
Архивные экстенты
При автоматическом архивировании экстентов демоном Ai File Management архивам присваиваются уникальные имена. Имя архивного файла, это комбинация из имени архивируемого файла, номера экстента, идентифицирующих исходный файл, и состояния исходной базы данных на момент архивации.
Элементы имени архивного файла следующие:
- Полный путь к исходной базе данных, в котором разделителем каталогов является “~”
- В Windows, двоеточие (:) - символ, следующий за символом диска, заменен на восклицательный знак (!)
- Порядковый номер копии в мастер-блоке базы данных в момент, когда экстент получил статус FULL
- Порядковый номер AI экстента или номер файла
- Имя AI экстента
Из этих элементов, связанных в одно имя файла, получается следующее:
directory~spec~database.backup-sequence.ai-sequence.extent-name
Например, если имя архивного файла usr1~dbs~sales.01.03.sales.a3, то можно получить следующую информацию:
- /usr1/dbs/sales.db, это имя исходной базы данных
- Номер резервной копии – 01
- Порядковый номер экстента - 03
- Имя экстента - sales.a3
Журнал архива
Ai File Management, ведет журнал (log) архивируемых экстентов. Этот журнал находится в том же каталоге, что и файл базы данных (.db), и называется - database-name.archival.log. Он создается в момент архивирования первого экстента. Информация, в нем хранимая, обеспечивает вас всеми данным, такими как время формирования архива, резервных копиях базы и экстентах, необходимыми для разработки автоматического или ручного способа восстановления базы данных. Этот файл поддерживается AI File Management, он может быть прочитан, но нельзя его менять.
Каждый раз, когда демон Ai File Management запускается, в журнал записывается две строки, содержащих дату, время и информацию о версии, в следующем формате:
# After-image Extent Manager started on : Tuesday October 11, 2005 at 10:02:25
# 0255,20051011,100225,100100
Вторая строка содержит версию и информацию о запуске и имеет следующий смысл:
# 0255, date, time, release
Таблица: Формат линии запуска в журнале архива
Поле
|
Значение
|
Индикатор версии (0255) |
Индикатор линии версии |
Date |
дата старта утилиты в формате YYYYMMDD |
Time |
Время старта утилиты в формате HHMMSS |
После заголовка, каждая строка содержит информацию об архивах, разделенную запятой.
Линия архивов
Архивная линия хранится в следующем формате:
Extent archive indicator,database,date,time,buseq,aibegin-date,aibegin-time, aiseq,extent-name,target-directory,target-extent-name
Таблица: Формат линии архивного AI экстента в журнале архива
Поле
|
Значение
|
Extent archive indicator |
Может принимать следующие значения:
0001 – Экстент архивирован автоматически
0003 – Экстент архивирован вручную
0004 – Экстент архивирован вручную в NULL устройство
|
database |
Имя базы данных |
date |
Дата резервной копии в формате YYYYMMDD |
Time |
Время резервной копии в формате HHMMSS |
Buseq |
Порядковый номер копии |
aibegin-date |
Дата старта after imaging для базы данных в формате YYYYMMDD |
aibegin-time |
Время старта after imaging для базы данных в формате HHMMSS |
aiseq |
Порядковый номер AI, с указанием ведущих нулей |
extent-name |
Исходное имя архивируемого экстента |
target-directory |
Каталог, в который архивирован экстент |
target-extent-name |
Имя архивируемого экстента |
Линия резервного копировании базы данных
Backup indicator,database,date,time,online indicator,buseq,backup-date,
backup-time,incr-seq,target-count,backup-targets,backupset-name
Таблица: формат линии резервного копирования базы данных
Поле
|
Значение |
Backup indicator |
Тип резервной копии:
0032 – Полная копия
0033 – Инкрементальная копия
|
Database |
Имя базы данных |
Date |
Дата записи в журнал в формате YYYYMMDD |
Time |
Время записи в журнал в формате HHMMSS |
online indicator |
Индикатор типа копии:
0 – offline
1 – online |
buseq |
Порядковый номер копии |
backup-date |
Дата формирования копии в формате YYYYMMDD |
backup-time |
Время формирования копии в формате HHMMSS |
incr-seq |
Если это инкрементальная копия, то указывается ее порядковый номер, иначе, значение остается пустым |
target-count |
Количество файлов в копии |
backup-targets |
Список имен файлов копии, разделенных запятой |
backupset-name |
Копии установлено имя. Имеет следующий формат:
BACKUP_SET_YYYYMMDD_HHMMSS. Где дата и время установлены на основании
значений backup-date и backup-time.s |
Добавление и изменений AI экстентов
Добавление AI экстента может понадобиться, когда не возможно выполнить переключение экстентов из-за того, что все они заполнены, и нет возможности перевести любой из них в состояние EMPTY. В такой ситуации база данных либо будет остановлена, либо ее активность будет заморожена, при условии, что при старте был указан параметр after-image stall.
Для добавления экстент используйте команды PROSTRCT ADD или PROSTRCT ADDONLINE. При добавлении AI экстента, он будет добавлен к концу списка экстентов базы данных. Утилита PROSTRCT REORDER AI переместит новый AI экстент так, чтобы он находился сразу за заполненным экстентом. Таким образом, реорганизация AI экстентов необходима, когда следующий по порядку экстент заполнен. Это так же может произойти, когда при активированном OE Replication, все экстенты имеют статус LOCKED, так как репликация блокирует экстент от использования его утилитой RFUTIL.
Для реорганизации AI экстентов используйте следующую команду:
prostrct reorder ai db-name
Предупреждение: PROSTRCT REORDER AI изменяет имена AI файлов, а именно расширение .an. Номер области так же меняется. Обязательно после использования утилиты, выполните PROSTRCT LIST, для переформирования st файла.
Следующий пример иллюстрирует эффект от PROSTRCT REORDER для экстентов.
На рисунке показан случай, когда при заполнении экстента A1 база данных будет остановлена, т.к. невозможно будет переключиться на следующий экстент, потому что A2 и A3 заполнены.
Добавляем новые AI экстенты:
Но простое добавление экстентов не достаточно для предотвращения остановки базы данных, т.к. по-прежнему экстент A1 не сможет переключиться на следующий экстент A2, потому что он всё еще заполнен. На следующем рисунке показан результат реорганизации ai файлов утилитой PROSTRCT REORDER AI.
После реорганизации ai файлы снова смогут продолжить работу по переключению. Это произойдет из-за того, что добавленные пустые экстенты будут перемещены сразу за занятым (BUSY) экстентом. Их номера и имена файлов будут изменены, но при этом, их физическое размещение и размеры затронуты не будут.
Выполнение наката (roll-forward recovery)
Для того чтобы выполнить roll-forward recovery, далее, я его буду называть “накат ai файлов”, необходимы все ai экстенты, созданные после формирования последней резервной копии. Так же имейте в виду, что последний файл обычно является файлом, созданным в момент сбоя, и, следовательно, может содержать информацию, приведшую к нему, поэтому, если вы не уверены, то лучше его не накатывать. К тому же, если какой-то из файлов был потерян, то восстановление будет возможным только до этого файла. Накат ai файлов должен быть осуществлен до того как целевая база данных будет изменена. Если вы случайно, даже просто, запустите базу данных до завершения наката, все не завершенные транзакции будут отменены. Так как эти транзакции могли быть завершены в ai файлах, которые еще не накатились, а, следовательно, они будут считаться не завершенными. В этом случае, если вы хотите получить целую, работоспособную базу данных, вам необходимо заново провести всю процедуру восстановления, начиная с последней резервной копии.
Используйте классификатор ROLL FORWARD утилиты RFUTIL для наката каждого ai файла. Синтаксис следующий:
rfutil db-name -C roll forward -a ai-name
При использовании классификатора обычно допускают следующие ошибки, будьте внимательны:
- Не указывают параметр –a для ai файла
- Не правильные права доступа на открытие ai файла
- Указано не правильное имя ai файла
В случае возникновения системного сбоя во время наката ai файлов, придется восстановить базу и повторить процесс наката.
Классификатор ROLL FORWARD, прежде чем начать накат, всегда деактивирует механизм after-imaging. Следовательно, по завершении процедуры восстановления, необходимо заново активировать after-imaging, средствами классификатора AIMAGE BEGIN.
Так же у классификатора ROLL FORWARD имеются параметры, позволяющие лишь частичное производить накат ai файла, это end time и entrants. Первый позволяет до конкретного времени, а второй – до конкретной транзакции.
Последовательность After-image
Классификатор SEQUENCE утилиты RFUTIL позволяет администратору базы данных изменять номера AI в последовательности, тем самым, обеспечивая “горячее резервирование” базы даны в соответствии вашей стратегии.
RFUTIL SEQUENCE изменяет номер последовательности в целевой базе данных, чтобы соответствовать номеру последовательности занятого (BUSY) AI экстента в момент формирования резервной копии.
После выполнения этой команды, ваша целевая база данных будет синхронизирована, в плане нумерации последовательности, занятой (BUSY) в момент копирования AI экстента, и работа базы начнется именно с него. Для получения большей информации о команде смотрите раздел “Классификатор RFUTIL SEQUENCE”.
Стоит заметить, что использовать эту команду нужно только, если копия базы данных выполнялась средствами операционной системы. При использовании же PROCOPY или PROBKUP, эти утилиты автоматически закладывают в копию информацию о нумерации последовательности, необходимой для восстановления с AI файлов.
Следующий пример показывает, как получить копию базы данных для “горячего резервирования” без корректировки SEQUENCE.
# Update your source database by adding after-imaging extents
#
prostrct add production_db add.st
# truncate the database BI file and mark as backed up
#
proutil production_db -C truncate bi
rfutil production_db -C mark backedup
# Activate after-imaging
#
rfutil production_db -C aimage begin
# Make a copy of the database using operating system commands
#
cp production_db* /db_standby
# Mark the source database as backed up
#
rfutil production_db -C mark backedup
# Fix the target database file specifications and make new database st file.
#
prostrct repair /db_standby/production_db /db_standby/standby.st
prostrct list /db_standby/production_db /db_standby/production_db.st
# At this point allow updates to the source database
#
# Roll forward the first AI extent from production_db to standby copy
#
rfutil /db_standby/production_db -C roll forward -a production_db.a1
# Continue allowing updates and regularly roll forward the AI extents from
# the production_db to the standby copy.
В следующем примере происходит почти тоже, за исключением, что базу данных успели изменить до копирования, а, следовательно, требуется корректировка с последовательности с помощью классификатора SEQUENCE.
# Update your source database by adding after-imaging extents
#
prostrct add production_db add.st
# truncate the database BI file and mark as backed up
#
proutil production_db -C truncate bi
rfutil production_db -C mark backedup
# Activate after-imaging
#
rfutil production_db -C aimage begin
# At this point allow updates to the source database. This activity will
# fill the first AI extent, production_db.a1, and causing a switch to the
# second AI extent, production_db.a2.
# Make a copy of the database using operating system commands
#
cp production_db* /db_standby
# Mark the source database as backed up
#
rfutil production_db -C mark backedup
# Fix the target database file specifications and make new database st file.
#
prostrct repair /db_standby/production_db /db_standby/standby.st
prostrct list /db_standby/production_db /db_standby/production_db.st
# Correct the sequence number of target database.
#
rfutil /db_standby/production_db -C sequence
# Roll forward the second AI extent from production_db to standby copy.
# This is the extent which was BUSY at the time the copy of the database
# was made.
#
rfutil /db_standby/production_db -C roll forward -a production_db.a2
# Continue allowing updates and regularly roll forward the subsequent AI
# extents from the production_db to the standby copy.
Обратите внимание, что SEQUENCE был применен до того, как начался накат AI файлов. Это связано с тем, что накат деактивирует After-imaging, а значит, будет не возможно изменить нумерацию последовательности.
Деактивация after-imaging
Для деактивации after-imaging используется утилита RFUTIL.
1. Скопируйте все заполненные экстенты (FULL). Это необходимо, чтобы не потерять данные в ai экстентах, т.к. RFUTIL после деактивации пометит все экстенты как пустые, и вы потеряете данные.
2. Скопируйте экстенты, которые на данный момент заняты (BUSY).
3. Деактивируете after-imaging с помощью классификатора AIMAGE END утилиты RFUTIL:
rfutil db-name -C aimage end
Вы так же можете использовать классификатор AIMAGE AIOFF той же утилиты, когда вам необходимо приостановить работу механизма на время, например, при выполнении технических работ.
|
|
|
|