• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Репликация

  • Автор темы fvoice
  • Дата начала
F

fvoice

назовем сервера work и backup

Дано:
два сервера в кластере
документы connection настроены на репликацию каждые два часа
тип репликации Pull Push
оба сервера входят в группу LocalDomainServers, которая в свою очередь есть во всех БД с максимальными правами
сервера имею доступ друг к другу
реплики БД уже существуют
в базах данных смотрел, вроде дополнительных настроек репликации нет

Проблемы:
Удаляю док на backup на work удаляется, а удаляю на work на backup не удаляется
Создаю док на backup на work не создается, создаю док на work на backup создается

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

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

куда смотреть?
если что то недонаписал, с удовольствием допишу :rolleyes:
 
F

fvoice

тема закрыта.

проблема была в ACL, на одном из серверов почти во всех БД было добавлено имя сервера, а роли к нему отмечены не были, а имя, пускай даже с меньшими правами перевешивает группу..
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
180
Не хочу плодить темы, поэтому сюда.
Тоже криво реплицируются документы, но по полям.
На сервере А поле Field1 ="123":"456", поле Field2 = "***"
На сервере Б поле Field1 ="123456":"456789", поле Field2 = "***"
Документ один и тот же, поле Field1 не синхронизируется никак.
При этом если поменять Field2, то изменения уедут с сервера А на Б и наоборот, а вот Field1 не едет.
Что может быть? С чем связано?
Репликацию настраивал не я, админы открещиваются "все работает".
Могу спросить настройки.
 
H

hosm

>Документ один и тот же, поле Field1 не синхронизируется никак.
Посмотри на обеих серверах и сравни Seq Num у этого поля - видно в св-вах документа. Еще может быть важна дата модификации поля (notesItem.LastModified). Обычно помогает очистка истории репликации (или изменение поля и пересохранение документа-дает увеличение Seq Num)
Очистка истории репликации вызовет большой траффик репликации.
Указанное выше производить, если убедитесь, что репликация настроена корректно.
>Могу спросить настройки.
По логике описания - вполне возможно, что именно с настройками репликации всё ок.
 
B

Baneslaer

Не хочу плодить темы, поэтому сюда.
Тоже криво реплицируются документы, но по полям.
На сервере А поле Field1 ="123":"456", поле Field2 = "***"
На сервере Б поле Field1 ="123456":"456789", поле Field2 = "***"
Документ один и тот же, поле Field1 не синхронизируется никак.
При этом если поменять Field2, то изменения уедут с сервера А на Б и наоборот, а вот Field1 не едет.
Что может быть? С чем связано?
Репликацию настраивал не я, админы открещиваются "все работает".
Могу спросить настройки.

Нужно убедиться, что оба сервера видят это поле, а не каждый - видит свое. Возможно, для видимости поля нужна роль, или добавление сервера в ридерс поля(редко, но такое бывает при кривом коде).
Попробуй написать код, который запускатеся от имени сервера и пробует получить значение этого поля с одного сервера, а потом с другого сервера.
Если не сможет получить значение, то сервер его не видит. Такое же можно попробовать с записью, чтобы исключить моменты о невидимости документа или записи в него.
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
180
Baneslaer
Readers полей нет, у сервера FullAccess + manger + все роли.
Более того, как такое может быть, что документ виден, а поле нет?
hide paragraph для поля это только для UI.
Секций тоже нет.

OKEN
notesItem.LastModified может отсутствовать, как долго оно сохраняется не понятно.
Очистка истории помогает, но не всегда.
Про "Seq Num у этого поля" да, как то не обратил внимания, но посмотрю.
или изменение поля и пересохранение документа-дает увеличение Seq Num
Вот это не помогает, никак, даже если это поле изменить (перезаписать).

И еще, ладно бы одно поле... Группа полей.
Причем проблема именно между двумя серверами и не первый раз.
Поэтому думаю на настройки репликации.
У нас на одном сервере работают все агенты в базе - основная реплика, а на другом нет.
И вот в основной реплике значения неверные, а на побочных - верные.
 
H

hosm

> Нужно убедиться, что оба сервера видят это поле, а не каждый - видит свое.
? А как это может быть при одинаковом дизайне и отсутствии конфликтов репликации? Сталкивалась только с вариантом, когда поля нет или не видно (шифрование, отсутствие доступа в секции с контролируемым доступом, репликация только части документа из-за ограничения в настройках).
>notesItem.LastModified может отсутствовать, как долго оно сохраняется не понятно.
Тут не подскажу.
>Вот это не помогает, никак, даже если это поле изменить (перезаписать).
с нашего же форума, трабла там другая (восстановление удаленного поля или репликация старого дока):
nvy сказал(а):
вылечилось только после многократной модификации полей в поздней версии документа, чтобы Seq Num тоже стало больше.
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
180
OKEN
Ситуация повторилась.
Сервер А. Поле имеет SeqNum: 8, документ SeqNum: 21 (пересохранил 7 раз), LastModify: 04/07/2014 08:54:12
Сервер Б. Поле имеет SeqNum: 6, документ SeqNum: 15, 04/07/2014 08:47:01
$ConflictAction = 1
Добавленное поле в документ приехало без проблем.
Исправленное поле (другое) доехало без проблем.
Сейчас у документов SeqNum одинаковый: 24
У меня таких 10 полей в документе.
 
B

Baneslaer

давай-те рассмотрим такой вариант - как рассинхронизация времени на серверах.

Допустим, на сервере А - 10:10, а на сервере B - 10:00
Если документ правят на сервере А, то изменения удачно приезжают на сервер B.
Если документ правят на сервере B, то изменения могут не приехать на сервер А, т.к. в репликейшен хистори записано, что сервер А реплицировался в более позднее время.

Т.е., если у вас все серваки реплицируются нормально, а траблы только с одним из серверов, то скорее всегона нем неправильное время.
Если же время везде правильное, то советую убить неправильную реплику и создать правильную с другого сервера (фиксап+компакт иногда не помогает).
 
H

hosm

>Сервер А. Поле имеет SeqNum: 8, документ SeqNum: 21 (пересохранил 7 раз), LastModify: 04/07/2014 08:54:12
>Сервер Б. Поле имеет SeqNum: 6, документ SeqNum: 15, 04/07/2014 08:47:01
>$ConflictAction = 1
Без поля $ConflictAction у меня в документе после модификации поля и сохранения документа лс-агентом SeqNum документа увеличивается, SeqNum поля становится равным SeqNum документа. Из предположений - у вас между серверами конфликт на этом документе и сервер его как-то криво обрабатывает (Conflict handling = "Merge conflicts"). Вышеуказанное LastModified - это у поля или у документа? (или посмотрите актуальные на текущий момент значения)
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
180
OKEN
Действительно стоит Merge, убрал. Будем смотреть.
Baneslaer
Разница во времени 1 секунда, и то я думаю из-за метода проверки:
set doc = db.createDocument
Msgbox doc.created

db - переполучаю, затем
 
B

Baneslaer

>>savl

1 секунда не влияет, можете, даже, не копать в ту сторону.
Насчет Merge, думал, что сделано специально.
Раз не специально, то обратите еще внимание на это -
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!