Репликация ИБИС — различия между версиями

Материал из ИбисоПедии
Перейти к: навигация, поиск
(Настройка и прицип работы)
(Настройка и прицип работы)
Строка 34: Строка 34:
 
[[ВАЖНО знать]], что при присвоении полю "enable_b" значения True, для указанной таблицы автоматически создаются два тригера: "replication_triger_row" и "replication_triger_stmnt". Таким образом на таблице (включенной в репликацию) тригер "replication_triger_row" добавляет все изменяемые данные таблицы в буфер репликации, в таблицу "replication.ibis_to_send", а тригер "replication_triger_stmnt" (по окнчании изменения данных) запускает процедуру "replication.ibis_start_send()". Данная процедура, в свою очередь, запускает функцию "replication.send_data()", которая читает данные из буфера и отправляет их на удалённые БД.
 
[[ВАЖНО знать]], что при присвоении полю "enable_b" значения True, для указанной таблицы автоматически создаются два тригера: "replication_triger_row" и "replication_triger_stmnt". Таким образом на таблице (включенной в репликацию) тригер "replication_triger_row" добавляет все изменяемые данные таблицы в буфер репликации, в таблицу "replication.ibis_to_send", а тригер "replication_triger_stmnt" (по окнчании изменения данных) запускает процедуру "replication.ibis_start_send()". Данная процедура, в свою очередь, запускает функцию "replication.send_data()", которая читает данные из буфера и отправляет их на удалённые БД.
  
В функции "replication.send_data()" встроен механизм исключающий слишком частый её запуск. Т.е. если эта функция будет запущена менее чем через 10 сек после предыдущего запуска, то она сразу завершит свою работу. Это исключает запуск этой функции при каждом изменении данных в реплицируемой таблице.
+
В функции "replication.send_data()" встроен механизм исключающий слишком частый её запуск. Т.е. если эта функция будет запущена менее чем через 10 сек после предыдущего запуска, то она сразу завершит свою работу. Это исключает запуск этой функции при каждом изменении данных в реплицируемой таблице. Данный механизм был реализован с целью исключения реализации мехнизма запуска передачи данных из шедулера.
 +
 
 +
* 4. Настроить список БД с которыми происходит репликация.

Версия 11:43, 10 ноября 2015

Общие сведения

Репликация ИБИС представляет из себя механизм передачи изменяемой в БД информации с одной базы в другую, с использованием DBLink. Вся изменяемая в БД информация накапливается в буфере, а затем из буфера передеётся на удалённые БД. В буфер информация попадает при срабатывании тригера "Репликации".

Для удобного мониторинга репликации создан модуль: aReplicationMon.exe

На первой закладке он отображает состояние подключений к удалённым БД и список ошибок, возникших при репликации. Список ошибок отображается отдельно для каждой БД вернего списка. На второй закладке он отображает полный список ошибок (ошибок всех БД). Из этого списка можно удалять ошибки вместе с данными (находящимися в буфере для отправки) на которых данная ошибка произошла. Таким образом можно очистить буфер передачи подготовленных данных. Так же в данном модуле начата разработка пошагового механизма первоначальной настройки репликации. Он доступен в меню "Настройки".

Настройка и прицип работы

Для использования механизма репликации необходимо:

  • 1. Создать схему "replication" в месте со всеми объектами (таблицами и функциями).

Последняя версия всех объектов находится в MIS3

  • 2. Создать пользователя БД "IBIS_REPLICATION" и "LINK2SELF".

Пользователи создаются таким скриптом:

DROP USER IF EXISTS "LINK2SELF"; CREATE USER "LINK2SELF" INHERIT LOGIN; ALTER USER "LINK2SELF" PASSWORD 'IbisPticaZloy'; GRANT "MIS_USER" to "LINK2SELF"; ALTER ROLE "MIS_USER" CREATEROLE;

DROP USER IF EXISTS "IBIS_REPLICATION"; CREATE USER "IBIS_REPLICATION" INHERIT LOGIN; ALTER USER "IBIS_REPLICATION" PASSWORD 'IbisPticaZloy'; GRANT "MIS_USER" to "IBIS_REPLICATION"; ALTER ROLE "MIS_USER" CREATEROLE;

  • 3. Настроить список реплицируемых таблиц. Все таблицы подлежащие репликации хрянться в "replication.table_name_list".

В данной таблице, поле "tbl_name" должно быть указано имя таблицы вместе с именем схемы, например: "mm.emp". В поле "enable_b" должно быть установлено значение True. Если занчение False, то указанная таблица исключается из репликации.

ВАЖНО знать, что при присвоении полю "enable_b" значения True, для указанной таблицы автоматически создаются два тригера: "replication_triger_row" и "replication_triger_stmnt". Таким образом на таблице (включенной в репликацию) тригер "replication_triger_row" добавляет все изменяемые данные таблицы в буфер репликации, в таблицу "replication.ibis_to_send", а тригер "replication_triger_stmnt" (по окнчании изменения данных) запускает процедуру "replication.ibis_start_send()". Данная процедура, в свою очередь, запускает функцию "replication.send_data()", которая читает данные из буфера и отправляет их на удалённые БД.

В функции "replication.send_data()" встроен механизм исключающий слишком частый её запуск. Т.е. если эта функция будет запущена менее чем через 10 сек после предыдущего запуска, то она сразу завершит свою работу. Это исключает запуск этой функции при каждом изменении данных в реплицируемой таблице. Данный механизм был реализован с целью исключения реализации мехнизма запуска передачи данных из шедулера.

  • 4. Настроить список БД с которыми происходит репликация.