Этот сайт посвящается администрированию баз данных OpenEdge Progress.
Не корысти ради, а познания для!

С уважением,
Валерий Башкатов
Сайт разработан при участии компании Progress Technologies, официального дистрибьютора Progress Software Corp. на территории стран СНГ и Латвии.

RSS RSS подписка на обновления сайта

Поиск по сайту

Лучшие материалы

Orphus System
На сайте функционирует система коррекции ошибок. Обнаружив неточность в тексте, выделите её и нажмите Ctrl+Enter



Результаты опроса: Нужны ли книги по Progress OpenEdge на русском языке? (опрос проводился с мая 2009 по ноябрь 2010)

Да, нужны. Потому что будет легче понять материал - 268
Нет, не нужны. Достаточно материалов на английском языке - 10
Не знаю, мне всё равно - 6

А знаете ли вы что..



After-Image репликация для Windows




(Архив скриптов)

Скрипты switch_a.vbs и roll_forward.vbs выполняют After-Image (AI) репликацию. Репликация выполняется с двумя ai-экстентами каждой базы. Исходим из того, что один всегда в состоянии busy, другой – в состоянии full.

Switch_a.vbs выполняет на боевом сервере следующие действия:

  1. В случае, если нет файлов flag1 или flag2, сигнализирующих о том, что скрипт roll_forward.vbs на резервном сервере не отработал, производит для каждой базы проверку статуса экстента a1. Если статус – BUSY, то происходит очистка экстента a2 и переключение c a1 на a2. Если статус отличен от BUSY, значит происходит очистка экстента a1 и переключение с a2 на a1. И так по циклу.

  2. В случае, если процесс After-imaging для какой-то базы не запущен, создается файл abort, сигнализирующий скрипту roll_forward.vbs о том, что его отработка запрещена.

  3. В случае, если есть файл flag1 или flag2, скрипт не отрабатывает и ждёт, когда отработает roll_forward, который копирует и накатывает на hot-swap базу соответственно a1 или a2 для каждой базы

Roll_forward.vbsвыполняет на резервном сервере следующие действия:

  1. Создает папку AiArchive для хранения накатываемых экстентов, если ее не существует

  2. Создает папку в AiArchive, присваивая имя в формате YYYYMMDDhhmm00, для записи в нее накатываемых экстентов, где YYYY - год, MM – месяц, DD – день, hh – час, mm - минуты

  3. Если нет файла abort и существует файл flag1 или flag2 происходит копирование соответствующего по номеру экстента для каждой базы и его накатывание на резервную базу.

  4. Производится проверка количества экстентов в сессии (в моем случае, число экстентов должно быть равно 6, так как 6 баз). Если условие не выполняется, удаления файла flag1 или flag2 не происходит, что блокирует работу скрипта switch_a.vbs. В то же время отправляется широковещательное сообщение через net на боевой сервер и на хост администратора о том, что требуется его вмешательство (у меня пока таких ситуаций не возникало).

  5. Если проверка на количество экстентов прошла, происходит удаление файла-флага (flag1 или flag2).

Действия обоих скриптов, обеспечивающих репликацию, логгируются в отдельные файлы switch_a.vbs и roll_forward.log.

Запуск скриптов разнесен по времени на 30 минут. У меня расписание такое: switch_a.vbs стартует с 9:00 каждые 30 минут на протяжении 790 минут (то есть до 22:00)

roll_forward работает с 9:05 каждые 30 минут на протяжении 790 минут (то есть до 22:05)

Все накатываемые экстенты хранятся в папке, путь к которой описан в переменной patharchive. Для того, чтобы чистить папки с ненужными экстентами (ненужными считаю экстенты, которые накатывались до полного бэкапа), отрабатывает скрипт ArchCleaner.vbs.

ArchCleaner.vbs выполняет следующие действия:

Проверяет разность дат (текущей и даты-названия папки) по дням (интервал можно менять, см. возможные значение в начале скрипта) со значением, указанным в переменной edge. Если разность больше папка удаляется. В моем случае полный бэкап происходит в субботу, а чистящий скрипт запускается в воскресенье. Поэтому в качестве edge я указываю 1, таким образом остаются только папки с субботней «историей» накатываемых экстентов, всё остальное удаляется.

В 22:30 стартует процесс создания бэкапа, о котором речь пойдет ниже.

Backup.vbs выполняет следующие действия:

В зависимости от названия компьютера, на котором запущен скрипт инициализирует основные переменные (см. таблицу), определяет тип бэкапа (с понедельника по пятницу инкрементальный, в субботу - полный), создается папку для бэкапа, если она отсутствует (для инкрементальных бэкапов в формате YYYYMMDD, для полного - full), в субботу копирует предыдущий полный бэкап в папку oldfull на боевом и резервном серверах, осуществляет бэкап:

  • Выполняется проверка статуса базы (offline или online)

  • Выполняется проверка отключено ли ai-журналирование: если ai-журналирование не отключено, то перед бэкапом выполняется очистка неиспользуемого экстента (full), так как PROBKUP переключит экстенты перед выполнением бэкапа. Создается файл flag1 или flag2, в зависимости от того, какой экстент стал full, после переключения утилитой эктентов. Таким образом мы не потеряем этот экстент и он накатится при следующем запуске скрипта roll_forward.vbs

  • Производится проверка бэкапа

  • Вывод статистики по каждой базе в отдельный файл

  • Удаление «старых» инкрементальных бэкапов на боевом и резервном сервере за последние 7 дней (производится в понедельник); также удаление папки oldfull

  • Копирование папки с бэкапом на резервный сервер

Скрипты restore.vbs и restore_incr.vbs выполняют соответственно рестор полного и инкрементального бэкапа.

Задания по расписанию (backup и switch_a) выглядят следующим образом:

На боевом сервере

на резервном сервере (ArchCleaner, roll_forward)

Изменения, которые необходимо внести в скрипты для работы в Вашей среде:

Данная схема работоспособна только для баз, в структуре которых есть два экстента a1 и a2 (может нужно больше, но 2-х вполне достаточно).

Чтобы не столкнуться с проблемой доступа при настройке ai-журналирования советую настраивать запуск скриптов от одной доменной учетной записи (служебного аккаунта), который является на обоих серверах локальным администратором.

В скриптах производится вызов Progress-утилит. Путь к папке Progress стандартный C:\Program Files\Progress\OpenEdge. Если у кого-то другой – придется поменять этот фрагмент на свой (или вынести путь в отдельную переменную)

Switch_a.vbs:

strpathDB

Путь к директории с базой данных

pathflag

Путь к директории для создания файлов flag1 и flag2. Директория должна быть расшарена с правами Change для резервного сервера, чтобы он мог смотреть в эту папку и удалять файлы flag1 и flag2

str

Путь к директории для ведения log-файла

temppath

Путь к папке для создания временных файлов

bases

Массив с именами баз

Roll_forward.vbs:

strpathDB

Путь к директории с базой данных

strai

Путь к директории, куда с боевого сервера будут копироваться экстенты (у меня это рабочая директория ProgressD:\OpenEdge\WRK)

fstrai

Путь к директории боевого сервера, в которой располагаются ai-экстенты.

pathflag

Путь к директории боевого сервера c файлами flag1 и flag2. Директория должна быть доступна с резервного сервера. Можно замапить на отдельный диск, можно использовать полный путь (по желанию)

str

Путь к директории для ведения log-файла

patharchive

Путь к директории на резервном сервере, куда будут складываться все отработанные ai-экстенты (происходит перемещение файлов из директории strai в patharchive)

temppath

Путь к папке для создания временных файлов

bases

Массив с именами баз

Server, Host

Название боевого сервера и машины администратора СУБД для оповещения в случае сбоя репликации (служба Messenger должны быть на обоих машинах запущена)

ArchCleaner.vbs:

strpath

Инициализируется в функции Machine_Name. Путь к директории, в которой хранятся по директориям «отработанные» экстенты

interval

Интервал для вычисления разности дат (месяц, день, неделя и т.д.)

edge

Пороговое значение. Если разность дат с учетом интервала больше порогового значения папка с экстентами удаляется

Backup.vbs:

strPath

Путь к директории, куда складывается текущий бэкап

strPathBackup

Путь к директории с бэкапами на боевом сервере

strPathDB

Путь к директории с базой данных на боевом сервере

resPathDB

Путь к директории с базой данных на резервном сервере. Необходимо замапить путь на какой-нибудь диск

resPath

Путь к директории с бэкапами на резервном сервере

bases

Массив с именами баз

Restore.vbs:

strPathDB

Путь к директории, в которую будет ресторится полный бэкап

strfullbkp

Путь к директории с полным бэкапом

str

Путь к директории, в которой будет вестись log-файл

bases

Массив с именами баз

Restore_incr.vbs:

strPathDB

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

str

Путь к директории, в которой будет вестись log-файл

bases

Массив с именами баз



Автор: Шитый Андрей 




Главная |  Статьи |  Книги |  Гостевая |  Ссылки |  От автора |  Download ProKb


������ ᠩ� pr Online ProKB Blogger Welcome to Russian Progress Users Group at Facebook Welcome to Russian Progress Users Group at LinkedIn
© 2009 - 2011 Все права на материалы, находящиеся на сайте www.openedge.ru, охраняются в соответствии с законодательством РФ, в том числе, об авторском праве и смежных правах.
При любом использовании материалов сайта ссылка на источник обязательна.