
OpenEdge Replication: инструкция по настройке
Настоящее руководство содержит пошаговые примеры настройки OpenEdge Replication для создания резервной копии в режиме реального времени базы данных Progress OpenEdge. В качестве примера используется копия базы данных sports2000. Если планируется использование копии собственной базы данных, раздел «Подготовка базы данных sports2000» можно пропустить, поскольку описанные действия, вероятно, уже были выполнены для вашей базы данных.
Подготовка базы данных sports2000
В Windows откройте командную строку PROENV из меню Start -> Progress -> OpenEdge 11.7 (64-bit) -> Proenv
Либо выполните команду proenv в терминальной сессии.
В рабочем каталоге WRK создайте два подкаталога source и target. В каталоге source будет создана копия базы данных sports2000, которая будет источником (SOURCE). Каталог target будет условно использоваться как каталог на резервном сервере.
mkdir source mkdir target
Перейдите в каталог source и создайте в нём копию базы данных sports2000:
procopy %DLC%\sports2000 sports2000
Создайте файл addai.st с описанием семи областей хранения After-Image переменного размера (по одному на каждый день недели) и поместите его в каталог source. В примере эти области будут размещены в том же каталоге где расположена база данных. В реальных системах рекомендуется размещать области After-Image на отдельном физическом диске для обеспечения лучшей производительности и надежности:
a . a . a . a . a . a . a .
Добавьте области After-Imaging в базу данных:
prostrct add sports2000 addai.st -validate prostrct add sports2000 addai.st prostrct list sports2000
Для лучшей производительности увеличьте размер блока и кластера Before-Image (операция выполняется только в офлайн).
proutil sports2000 -C truncate bi -bi 65536 -biblocksize 16
Для лучшей производительности увеличьте размер блока After-Imaging (операция выполняется только в офлайн).
rfutil sports2000 -C aimage truncate -aiblocksize 16
Сформируйте полную резервную копию базы данных в офлайн:
probkup sports2000 sports200_full_offline_<ddmmyyyy>.bkp -com
Активируйте After-Imaging:
rfutil sports2000 -C aimage begin
Активируйте AI File Management
rfutil sports2000 -C aiarchiver enable
Настройка и включение OpenEdge Replication
Создайте файл параметров normal.pf, который будет использоваться для старта базы данных без OE Replication. Для демонстрации нам достаточно следующих параметров:
-S 60000 -aiarcdir .\aiarchive\ #каталог для хранения архивов After-Image -aiarcinterval 300 -aiarcdircreate
Создайте файл параметров target.pf, который будет использоваться для старта базы данных в роли Target. Для демонстрации нам достаточно следующих параметров:
-S 60001 -DBService replagent -aiarcdir .\aiarchive\ -aiarcinterval 300 -aiarcdircreate
Создайте файл параметров source.pf, который будет использоваться для старта базы данных в роли Source. Для демонстрации нам достаточно следующих параметров:
-S 60000 -DBService replserv -pica 100000 -aiarcdir .\aiarchive\ -aiarcinterval 300 -aiarcdircreate
Сохраните файлы параметров в каталоге source.
Выполните старт базы данных sports2000 используя файл параметров normal.pf:
proserve sports2000 -pf normal.pf
Скопируйте в каталог source файл настройки репликации для исходной базы данных с переименованием как показано:
copy %DLC%\properties\source.repl.properties sports2000.repl.properties
Отредактируйте файл sports2000.repl.properties, прописав следующие параметры:
[server] control-agents=agent1 database=sports2000 transition=manual transition-timeout=600 defer-agent-startup=10008 agent-shutdown-action=recovery [control-agent.agent1] name=agent1 database=sports2000 host=localhost port=60001 connect-timeout=600 replication-method=async critical=0 [transition] database-role=reverse transition-to-agents=agent1 ai-structure-file=addai.st auto-add-ai-areas=1 auto-begin-ai=1 restart-after-transition=1 normal-startup-arguments=-pf normal.pf source-startup-arguments=-pf source.pf target-startup-arguments=-pf target.pf [agent] name=agent0 database=sports2000 listener-minport=44000 listener-maxport=44100 transition=auto transition-timeout=90
Назначение и описание всех параметров можно найти в исходных файлах настроек репликации %DLC%\properties\source.repl.properties и %DLC%\properties\target.repl.properties.
Активируйте OpenEdge Replication следующей командой:
proutil sports2000 -C enablesitereplication source
Создание целевой базы данных
Сформируйте резервную копию базы данных sports2000 в онлайн. Эта резервная копия будет использоваться для создания резервной базы данных (TARGET).
probkup online sports2000 sports2000_full_online_<ddmmyyyy>.bkp -REPLTargetCreation -com
Перейдите в каталог target.
Восстановите резервную базу данных из последней резервной копии базы данных sports2000.
prorest sports2000 ..\source\sports2000_full_online_<ddmmyyyy>.bkp -REPLTransition
Параметр -REPLTransition активирует эту базу как Target, проверьте командой:
proutil sports2000 -C describe
Database Features ID Feature Active Details ---- --------------------------------- ------ ------- 1 OpenEdge Replication Yes Target database 5 Large Files Yes 9 64 Bit DBKEYS Yes 10 Large Keys Yes 11 64 Bit Sequences Yes
Скопируйте в каталог target файл настройки репликации для резервной базы данных из каталога source как показано:
copy ..\source\sports2000.repl.properties
Скопируйте файлы параметров source.pf, target.pf и norma.pf из каталога source.
copy ..\source\source.pf copy ..\source\target.pf copy ..\source\normal.pf
Скопируйте файл addai.st из каталога source.
copy ..\source\addai.st
Выполните старт резервной базы данных.
proserve sports2000 -pf target.pf
Проверьте работу агента репликации (на базе target):
dsrutil sports2000 -C monitor
OpenEdge Replication Monitor Page 1 Database: /home/dba/target/sports2000 S. Replication server status R. Replication server remote agents A. Replication agent status M. Modify display defaults Q. Quit Enter your selection:
Выберите пункт «A. Replication agent status», для этого в поле Enter your selection введите английскую A и нажмите Enter.
Ваш экран должен выглядеть так:
Database is enabled as OpenEdge Replication: Target Agent: Name: agent1 ID: 0 Host name: State: Listening Ready: No
Агент находится в статусе ожидания сервера репликации State: Listening. Так как активацию репликации на исходной базе данных выполняли в онлайн, то необходимо отдельно выполнить старт сервера репликации.
Выйдите из меню DSRUTIL MONITOR с помощью клавиши Q.
Выполните старт сервера репликации на исходной базе данных (в каталоге source):
cd ..\source dsrutil sports2000 -C restart server
Проверьте работу сервера репликации (на базе source):
dsrutil sports2000 -C monitor
Выберите пункт «S. Replication server status», для этого в поле Enter your selection введите английскую S и нажмите Enter.
Ваш экран должен выглядеть так:
Database is enabled as OpenEdge Replication: Source Server is: In Normal Processing Number of configured agents: 1 Delay Interval (current / min / max): 231 / 20 / 500
О том, что сервер стартован и синхронизирован, говорит значение Server is: In Normal Processing.
Выйдите из меню DSRUTIL MONITOR с помощью клавиши Q.
Проверьте работу агента репликации (в каталоге target):
dsrutil ..\target\sports2000 -C monitor
Выберите пункт «A. Replication agent status», для этого в поле Enter your selection введите английскую A и нажмите Enter.
Экран должен выглядеть так:
Database is enabled as OpenEdge Replication: Target Agent: Name: agent1 ID: 1 Host name: 127.0.0.1 State: Normal Processing Ready: Yes
О том, что агент работает и синхронизирован с сервером репликации, говорит значение State: Normal Processing.
Базы данных синхронизированы и процесс репликации работает.
Изменение ролей баз данных, запланированный простой
Поменять роли баз данных, то есть, когда Target становится Source, а Source становится Target, обычно необходимо для проведения технологических работ на производственном сервере. Это называется «обработка запланированных простоев».
Для этого обе базы данных должны быть стартованы и синхронизированы. С помощью утилиты DSRUTIL MONITOR проверьте что сервер репликации имеет статус In Normal Processing.
Примечание: перед началом процесса смены ролей доступ пользователей к серверу базы данных должен быть ограничен.
Для изменения ролей баз данных на исходной базе данных в каталоге source выполните следующую команду:
dsrutil sports2000 -C transition failover
После успешного завершения процесса смены ролей вы должны получить следующие сообщения на экране:
Database successfully transitioned from a Source database to a Target database. (18555) The transition of this database has completed normally. (13551)
Проверьте роли обеих баз данных командой PROUTIL DESCRIBE.
Бывшая source:
proutil sports2000 -C describe
Database Features ID Feature Active Details ---- --------------------------------- ------ ------- 1 OpenEdge Replication Yes Target database 5 Large Files Yes 9 64 Bit DBKEYS Yes 10 Large Keys Yes 11 64 Bit Sequences Yes
Бывшая Target:
Database Features ID Feature Active Details ---- --------------------------------- ------ ------- 1 OpenEdge Replication Yes Source database 5 Large Files Yes 9 64 Bit DBKEYS Yes 10 Large Keys Yes 11 64 Bit Sequences Yes
После изменения ролей баз данных необходимо перенаправить пользователей на резервный сервер.
Теперь для выполнения технологических работ на производственном сервере можно остановить исходную базу данных.
Хотя After-Imaging активируется автоматически, процесс AI File Management для архивации AI-экстентов автоматически не включается. Для включения AI File Management на новой Source в онлайн необходимо сформировать резервную копию в онлайн следующей командой:
probkup online <dbname> <backupname> enableaiarchiver -aiarcdir <dir1>,<dir2> -aiarcinterval <interval> -aiarcdircreate -com
Для активации AI File Management в офлайн на остановленной базе данных применяется следующая команда:
rfutil <dbname> -C aiarchiver enable
В OpenEdge 12.8 LTS включение AI File Management возможно онлайн без необходимости формирования резервной копии, см. Включение архиватора After-Image экстентов в онлайн
Примечание: в то время как старая Source база данных будет остановлена на производственном сервере, в новой Source будут накапливаться AI-заметки в AI-экстентах. Такие AI-экстенты могут быть заархивированы, но не могут быть освобождены. После переключения на следующий AI-экстент, предыдущий AI-экстенты получит статус LOCKED. Этот статус будет сохраняться до тех пор, пока старая Source не будет стартована и сервер репликации не синхронизируется с агентом репликации. Поэтому очень важно в это время следить за AI-экстентами. Если вы видите, что у вас мало или практически не осталось пустых AI-экстентов, то следует перевести AI File Management в режим «on demand» для остановки процесса архивации и переключения AI-экстентов:
rfutil <dbname> -C aiarchiver setinterval 0
Для обратной смены ролей баз данных выполните команду DSRUTIL TRANSITION FAILOVER на новой SOURCE в каталоге target:
cd target dsrutil sports2000 -C transition failover
Переключение c Source на Target, авария
В случае аварии на производственном сервере, которая не позволяет продолжить работу пользователей на этом сервере, вы можете изменить роль резервной базы данных на SOURCE и перенаправить пользователей на резервный сервер.
Для перевода Target базы данных в состояние исходной базы она должна быть либо остановлена, либо её агент должен находиться в состоянии Pre Transition.
Для того чтобы перевести агента репликации в состояние Pre Transition, для данного примера, остановите работу исходной базы данных:
cd source proshut sports2000 -by
Проверьте статус агента репликации на Target базе:
cd target dsrutil sports2000 -C monitor
Выберите пункт A. Replication agent status, для этого в поле Enter your selection введите английскую A и нажмите Enter.
Ваш экран должен выглядеть так:
Database is enabled as OpenEdge Replication: Target Agent: Name: agent1 ID: 1 Host name: 127.0.0.1 State: Pre Transition Ready: Yes
Агент перешёл в состояние Pre Transition, то есть, агент ожидает либо появления подключения от сервера репликации, либо выполнения процесса смены роли (TRANSITION).
Выполните процесс перехода Target базы данных в состояние Source:
dsrutil sports2000 -C transition
Для восстановления репликации, например, когда доступ к производственному серверу будет восстановлен, или если в вашем распоряжении есть другой сервер, необходимо повторить действия из раздела «Создание Target-базы данных».
Отключение OpenEdge Replication
Как и в случае смены ролей баз данных при запланированном простое TRANSITION FAILOVER, после выполнения операции TRANSITION заметки After-Imaging будут накапливаться в AI-экстентах пока не будет создана новая база данных Target. Чем быстрее вы сможете восстановить репликацию, тем будет лучше. Если же у вас понимание, что восстановить аварийный сервер не получится быстро, то механизм OE Replication следует отключить.
dsrutil sports2000 -C terminate server dsrutil sports2000 -C RELWAITS #не требуется в версиях OpenEdge 12+ dsrutil sports2000 -C disablesitereplication source
После отключения репликации удалите из файлов параметров параметр старта базы данных -DBService replserv.
Удалите файл *.repl.recovery и заархивируйте или переименуйте файл настроек репликации *.repl.properties.
Дополнительные материалы
OpenEdge Replication: демонстрация настройки механизма
OpenEdge Replication: создание второй Target-базы с помощью PROBKUP в online
Создание TARGET-базы средствами операционной системы
Создание двух TARGET баз средствами ОС
Обработка плановых простоев в репликации OpenEdge (RUTUBE, англ.)
Есть вопрос? Спросите...
Для отправки комментария вам необходимо авторизоваться.
4 Комментария
dsrutil sports2000 -C transition failover
команда точно такая?
Для одновременной смены ролей source в target, а target в source, да.
Для двух реплик должно срабатывать?
Если имеется ввиду две target, то для одной из них необходимо выставить свойство critical=1 в секции [control-agent.agentname].
Пример.
На Source
[control-agent.agent1]
name=agent1
database=target1
host=localhost
port=51719
connect-timeout=600
replication-method=async
critical=1
[control-agent.agent2]
name=agent2
database=target2
host=localhost
port=51720
connect-timeout=600
replication-method=async
critical=0
Так же как и на Target базах установить critical=1 для агента той базы у которой будет меняться роль.