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

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

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

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

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

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



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

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

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



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


В первой части статьи (см. «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-базы ни на минуту. Задача выполнена!





Главная |  Статьи |  Книги |  Гостевая |  Ссылки |  От автора |  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, охраняются в соответствии с законодательством РФ, в том числе, об авторском праве и смежных правах.
При любом использовании материалов сайта ссылка на источник обязательна.