мета-данные страницы
  •  

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
автотестирование_остановки_репликации [26.02.2020 10:35]
автотестирование_остановки_репликации [26.02.2020 10:35]
Анисютин
Строка 1: Строка 1:
 +====== Автотестирование остановки репликации ======
 +
 +Для синхронизации данных между базами данных используется процесс [[:​Репликация|репликации]]\\
 +В базе данных менеджера проектов фиксируются события связанные с выполнением репликаций,​ в частности,​ время начала выполнения репликации.\\
 +Репликация выполняется часто, поэтому большой перерыв в выполнении репликации означает возникновение проблем с выполнением репликации.\\  ​
 +Своевременное восстановление репликации предотвращает возникновение коллизий данных.
 +
 +===== Реализация тестирования =====
 +
 +Пусть задан максимальный интервал паузы между репликациями (по умолчанию 3 часа).\\ ​
 +Если за это время репликация не выполнилась,​ то создается задача первой очереди с целью восстановления процесса репликации.\\
 +Затем задачи будут создаваться раз в сутки до тех пор пока репликация не восстановится.\\ ​
 +
 +===== Настройки =====
 +
 +1. В файле настроек AgentSettings.ini для агента обслуживающего "​Менеджер проектов" ​ в секции [AutoTest] настройка MaxPeriodReplMin,​ которая содержит максимальнодопустимый интервал паузы между репликациями в минутах (по умолчанию 180 мин);​\\ ​
 +2. В "​Менеджере проектов"​ на форме **"​Сервисы"​** \ **"​Репликация"​** \\
 +Открывается форма **"​Отчет по репликации"​** и на вкладке **"​Отчет"​** нужно включить настройку **"​Проверять работу репликации (при обнаружении ошибки будет создаваться задача в Б24)"​** \\ 
 +{{:​pasted:​20200226-100317.png}}\\ ​
 +Поле **№ задачи** заполняется автоматически при тестировании.\\ ​
 +Если репликация работает,​ поле **№ задачи** пустое.\\ ​
 +При возникновении ошибки создается задача и ставится цифра 1. Если в течение суток проблема не решена,​ то создается повторная задача и номер увеличивается на единицу.\\ ​
 +
 +===== Макет задачи =====
 +
 +Заголовок: ​
 +  Ошибка запуска репликации:​ Наименование клиента / Наименование подразделения (ПОВТОРНО)  ​
 +Текст задачи:​
 +  ReplIn не запускался уже более 3 час. !
 +  ReplOut не запускался уже более 3 час. !
 +  ​
 +  Наименование клиента ​
 +  Наименование подразделения (Центр)
 +  Дата и время проверки = 25.07.2016 20:​05:​27 ​
 +  Дата и время последнего выполнения ReplIn ​ = 25.07.2016 20:​05:​27 ​
 +  Дата и время последнего выполнения ReplOut = 25.07.2016 20:​05:​27 ​
 +  ID в client_repl_reps = 1294
 +  № копии задачи = 1
 +  ​
 +==== Пример задачи ====
 +
 +Заголовок: ​
 +  1. Ошибка запуска репликации:​ РИКВЕСТ (Проф-Чистка №1) (Серпухов) / Центр
 +Текст задачи:​
 +  ReplIn не запускался уже более 2442 час. !
 +  ​
 +  РИКВЕСТ (Проф-Чистка №1) (Серпухов)
 +  Новый сервер (Центр)
 +  Дата и время проверки = 03.12.2019 15:30:04
 +  Дата и время последнего выполнения ReplIn = 23.08.2019 21:03:53
 +  Дата и время последнего выполнения ReplOut = 03.12.2019 15:25:09
 +  ID в client_repl_reps = 1242
 +  № копии задачи = 1
 +
 +
 +
 +<ifauth @programmers> ​
 +
 +===== Схема выполнения процесса =====
 +
 +1. При выполнении репликации в базе данных менеджера проектов PC.fdb в таблице client_repl_reps заполняются поля:
 +  rep_dttm_in,​ rep_dttm_out - дата и время последнего выполнения ReplIn, ReplOut соответственно,​ которые отображаются в графах "​Время отчета о загрузке"​ и "​Время отчета об отправке"​
 +
 +2. Агент обслуживающий "​Менеджер проектов" ​
 +  2.1. при запуске считывает настройку из AgentSettings.ini из секции [AutoTest] MaxPeriodReplMin,​ которая содержит максимальнодопустимый интервал паузы между репликациями в минутах (по умолчанию 180 мин);
 +  2.2. один раз в час запускается автотест остановки репликации.
 +    2.2.1. в таблице client_repl_reps выбираются все записи с task_on=1;
 +    2.3.2. проверяется превышение интервала между выполнением репликации и текущим временем превышает максимальный интервал паузы между репликациями {(now-rep_dttm_in)>​MaxPeriodRepl или (now-rep_dttm_out)>​MaxPeriodRepl,​ где MaxPeriodRepl равняется MaxPeriodReplMin конвертированному в формат времени},​ то создается задача первой очереди и ставится цифра 1 в поле task_num.
 +           ​Если интервал превыше и в текущие сутки задача не создавалась,​ то \\ 
 +      создается задача на исправление репликации;​\\ ​
 +      в карточке репликации увеличивается на единицу "​Номер задачи";​\\
 +      в лог в таблице AT_Repl_Log добавляется запись,​ в которой содержится URL задачи в битрексе;​\\
 +  2.3. Если для активной задачи репликация восстановилась,​ то "​Номер задачи"​ обнуляется,​ в логе делается запись о завершении задачи. ​
 +
 +===== Таблицы данных =====
 +
 +[[:​sp_db_rep]]\\ ​
 +[[:​client_repl_reps]]\\ ​
 +[[:​at_repl_log]]\\ ​
 +
 +</​ifauth>​