Вход в личный кабинет:

Забыли пароль? | Регистрация

Адреса компании:

Санкт-Петербург

196158, Санкт-Петербург,
Пулковское шоссе, д. 30,
корп. 4, Лит. А, офис 203

Тел: +7 812 414 95 41

Москва

129085, г. Москва, проезд Ольминского, д. 3а, стр. 3, офис 706

Тел: +7 495 616 00 53

Блог

26.08.2015

Progress OpenEdge: промышленные средства репликации данных в Oracle и MS-SQL

Progress OpenEdge Pro2 Replication

Читать далее →




Десять причин перехода на новые версии OpenEdge (Progress)


OpenEdge Replication: создание TARGET-базы средствами операционной системы (Часть 2)

Вернуться к списку постов

28.02.2012

В первой части статьи (см. «OpenEdge Replication: создание TARGET-базы средствами операционной системы» от 23.11.2011 г.) мы изучили способ создания одной TARGET-базы средствами ОС. Но как быть, если нам сразу нужно создать две TARGET-базы? Или как создать вторую TARGET-базу позже, например, когда через несколько месяцев после успешного включения репликации мы получили второй резервный сервер? Нет ничего проще…

P.S. Стоит отметить, в этой статье все примеры приведены исключительно с образовательной целью. Способов создания TARGET-баз может быть несколько, в том числе и с помощью утилиты PROBKUP. И какой бы способ вы не выбрали, любой из них может накладывать или не накладывать определенные ограничения, которые могут влиять на работу вашей системы. Именно поэтому я всем всегда рекомендую, прежде чем что-то делать в промышленной среде тщательно изучите выбранный метод и отладьте свои действия в тестовом окружении. Такой подход позволит понять, какие проблемы могут возникнуть, и оптимален ли выбранный метод именно для вашей системы.

Одновременное создание двух TARGET-баз средствами ОС

Для чистоты «эксперимента» сделаем всё с самого начала, но без детального описания. Предполагается, что механизм After-Imaging в базе sports уже включен, а OpenEdge Replication нет.

$ mkdir target/        <-- каталог для первой TARGET-базы
$ mkdir target2/       <-- каталог для второй TARGET-базы
$ cd source/
$ cp $DLC/properties/source.repl.properties ./sports.repl.properties
$ vi ./sports.repl.properties


В настройках сервера репликации необходимо сразу описать двух агентов репликации, как показано:

[server]
   control-agents=agent1,agent2
   database=sports
   transition=manual
   transition-timeout=1200
   defer-agent-startup=1400
   agent-shutdown-action=recovery
[control-agent.agent1]
   name=agent1
   database=sports
   host=localhost       <-- Здесь необходимо указать IP или HOSTNAME 1-го резервного сервера
   port=4501
   connect-timeout=120
   replication-method=async
   critical=0
[control-agent.agent2]
   name=agent2
   database=sports
   host=localhost       <-- Здесь необходимо указать IP или HOSTNAME 2-го резервного сервера
   port=4502
   connect-timeout=120
   replication-method=async
   critical=0
[transition]
   database-role=normal


Описание второго агента отличается в нашем случае от первого только именем агента и портом, на котором работает этот агент (выделено жирным).

Далее активируем репликацию:

$ proutil sports -C enablesitereplication source


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

$ vi sports.pf


Его содержимое:

-S 4500
-B 10000
-L 20000
-spin 8000
-pica 8192
-bibufs 30
-aibufs 45
-aistall
-aiarcdir ./ai
-aiarcdircreate
-aiarcinterval 300
-bithold 75000
-bistall
-DBService replserv


Стартуем SOURCE-базу:

$ proserve sports -pf sports.pf


Теперь приступим к созданию TARGET-баз.

На стартованной исходной базе останавливаем транзакционную активность:

$ proquiet sports enable –REPLTargetCreation


Копируем средствами ОС исходную базу в каталог для первой TARGET-базы:

$ cp ./sports* ../target/


Для того чтобы как можно быстрее вернуть исходную базу пользователям восстанавливаем транзакционную активность в ней:

$ proquiet sports disable


Переходим в каталог target:

$ cd ../target/


Изменяем файл настроек репликации target/sports.repl.properties. Удаляем в нём все настройки и вносим новые:

[agent]
   database=sports
   listener-minport=4387
   listener-maxport=4500
[transition]
   database-role=normal


Удалим lock-файл, который остался от SOURCE-базы.

$ rm -f ./sports.lk


Внимание! Будьте осторожны! Никогда не удаляйте lk-файл промышленной базы, находящейся в стартованном состоянии.

Копируем средствами ОС первую TARGET-базу в каталог для второй TARGET-базы:

$ cp ./sports* ../target2/


Изменим пути к файлам базы в структурном файле sports.st на новое расположение этих файлов, заменив каталог source на каталог target в первой TARGET-базе, и на target2 для второй TARGET-базы. После чего корректируем пути непосредственно в базах:

$ prostrct repair sports sports.st (повторить на обеих TARGET-базах)


Изменяем роли обеих TARGET-баз с SOURCE на TARGET:

$ proutil sports -C enablesitereplication target (повторить на обеих TARGET-базах)


Отключаем на них After-Imaging:

$ rfutil sports -C aimage end


Изменяем файлы параметров sports.pf.

Для первой TARGET-базы:

-S 4501
-B 10000
-L 20000
-spin 1
-bibufs 50
-pica 8192
-DBService replagent


Для второй TARGET-базы:

-S 4502
-B 10000
-L 20000
-spin 1
-bibufs 50
-pica 8192
-DBService replagent


Обратите внимание, отличие этих файлов параметров только в номерах портов, на которых стартует брокер. Эти номера должны соответствовать номерам, которые были указаны в файле настроек сервера репликации.

Стартуем обе TARGET-базы:

$ proserve sports -pf sports.pf


Проверяем работу репликации через DSRUTIL MONITOR:

$ dsrutil source/sports -C monitor
OpenEdge Replication Monitor                  Page 1
Database:  /home/valeriy/replic/source/sports
Database is enabled as OpenEdge Replication:  Source
Server is:                                  In Normal Processing
Number of configured agents:                2


$ dsrutil target/sports -C monitor
OpenEdge Replication Monitor                  Page 1
Database:  /home/valeriy/replic/target/sports
Database is enabled as OpenEdge Replication:  Target
Agent:
Name:                                   agent1
ID:                                     1
Host name:                              127.0.0.1
State:                                  Normal Processing
Ready:                                  Yes


$ dsrutil  target2/sports -C monitor
OpenEdge Replication Monitor                  Page 1
Database:  /home/valeriy/replic/target2/sports
Database is enabled as OpenEdge Replication:  Target
Agent:
Name:                                   agent2
ID:                                     2
Host name:                              127.0.0.1
State:                                  Normal Processing
Ready:                                  Yes


Всё! Репликация работает на две TARGET-базы данных.

Добавление второй TARGET-базы средствами ОС

Предполагается, что в нашей тестовой базе sports уже включен механизм OpenEdge Replication так, как это было описано в первой части, т.е. у нас уже есть одна TARGET-база. Теперь нам надо добавить вторую TARGET-базу, скажем, для репликации на второй резервный сервер. Сделать нам это нужно с минимальным (или даже без) временем простоя SOURCE-базы без её останова. Для этого можно воспользоваться технологией снапшотов (SnapShot), но для нашего эксперимента мы будем использовать обычную команду cp.

Остановим работу сервера репликации на SOURCE-базе:

$ cd ../source
$ dsrutil sports -C terminate server


В этом случае просто будет приостановлена работа OpenEdge Replication, сама SOURCE-база будет продолжать работать и останется доступной для пользователей.

Перейдем в каталог первой TARGET-базы и остановим её:

$ cd ../target
$ proshut sports -by


Скопируем средствами ОС содержимое каталога target в каталог target2:

$ cp ./sports* ../target2/


Перейдем в каталог второй TARGET-базы:

$ cd ../target2


Изменим пути к файлам базы в структурном файле sports.st на новое расположение этих файлов, заменив каталог target на каталог target2 во второй TARGET-базе. После чего корректируем пути непосредственно в базе:

$ prostrct repair sports sports.st


Изменим файл параметров sports.pf для второй TARGET-базы, указав другой порт.

-S 4502
-B 10000
-L 20000
-spin 1
-bibufs 50
-pica 8192
-DBService replagent


Возвращаемся в каталог SOURCE-базы:

$ cd ../source


В настройках сервера репликации описываем второго агента репликации, как показано:

[server]
   control-agents=agent1,agent2
   database=sports
   transition=manual
   transition-timeout=1200
   defer-agent-startup=1400
   agent-shutdown-action=recovery
[control-agent.agent1]
database=sports host=localhost port=4501 connect-timeout=120 replication-method=async critical=0 [control-agent.agent2] name=agent2 database=sports host=localhost port=4502 connect-timeout=120 replication-method=async critical=0 [transition] database-role=normal


Перестартовываем сервер репликации и проверяем его работу:

$ dsrutil sports -C restart server
$ dsrutil sports -C monitor
OpenEdge Replication Monitor                  Page 1
Database:  /disk2/replic/source/sports
Database is enabled as OpenEdge Replication:  Source
 Server is:                                  Connecting to Agent(s)
 Number of configured agents:                2


Переходим в каталог первой TARGET-базы и стартуем её:

$ cd ../target
$ proserve sports -pf sports.pf


Переходим в каталог второй TARGET-базы и стартуем её:

$ cd ../target2
$ proserve sports -pf sports.pf


Через некоторое время проверяем статус репликации с помощью утилиты DSRUTIL MONITOR.

Репликация вновь работает, но уже на две TARGET-базы, при этом нам не пришлось останавливать транзакционную активность SOURCE-базы ни на минуту. Задача выполнена!


Добавить свой комментарий

Ваше имя*:
Ваш E-mail*:
Ваш комментарий*:

Компьютерные системы для бизнеса
© 2010 - 2017 Все права на материалы, находящиеся на этом сайте, охраняются в соответствии с законодательством РФ, в том числе, об авторском праве и смежных правах. При любом использовании материалов сайта ссылка на источник обязательна.