Селективная репликация баз

deeeman

Well-known member
04.12.2007
383
0
#1
Добрый день!

Есть 2 сервера в домене. Есть база на главном и реплика базы на втором сервере.
Требуется настроить реплицирование так что в главную базу попадали только определенные документы из второй базы, а во вторую вообще ничего не должно попадать из первой.

вколбашиваю формулу отбора в настройках репликации у базы (правой кнопкой по базе, Replication- sittings - Advanced - ставлю галочку Documents by Selection formula и вставляю формулу)

Запускаю вручную репликацию главной бд (правой кнопкой по базе, Replication-Replicate, выбираю вторую бд, ок )

те документы которые были указаны в формуле скопировались в главную, а вот все остальные документы были УДАЛЕНЫ ((((

почему так происходит?
что то с правами доступа?
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#2
предположительно (нужно тестить):
1) нужная формула репликации с второго на главный;
2) второй сервер инициирует репликацию (причем только этой базы! настраивается в сервер-сервер документе соединения, в серверной адреске) в режиме толкать;
3) второй сервер не имеет права удалять документы в реплике на главном сервере;
4) первый сервер не должен инициировать репликацию этой БД со вторым;
5) никогда не реплицируй документы между серверными репликами ВРУЧНУЮ! только через консоль.

читай "Inside Notes", это книга такая :gifts:
 
K

Klido

#3
5) никогда не реплицируй документы между серверными репликами ВРУЧНУЮ! только через консоль.
естественно, вручную под учеткой пользователя(в данном случае админа?) возможно получить совершенно иной, отличный от сервера эффект...
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#4
Klido
было бы не плохо, если бы остальные пункты ты тоже прокомментировал или дал свой вариант настройки репликации :gifts:
 
K

Klido

#5
Akupaka
в остальных пунктах всё нормально :gifts:
п.5 - в данном случае ключевой, если даже все предыдущие пункты настроены верно...
 

deeeman

Well-known member
04.12.2007
383
0
#6
про 5 пункт: вписываешь свою учетку в адресной книге как full access и реплицируешь сколько хочешь без проблем помоему....


а если сделать так:

т к первый сервер у нас рулит с мегаправами, то

1. настроить репликацию с первого на второй в режиме втягивать (Pull Only)
2. Формулу отбора сделать на первой бд

будет ли это правильно?
 

deeeman

Well-known member
04.12.2007
383
0
#8
ясно...

дак все таки будет ли правильно сделать?

1. настроить репликацию с первого на второй в режиме втягивать (Pull Only)
2. Формулу отбора сделать на первой бд

?
 
K

Klido

#9
1.
т к первый сервер у нас рулит с мегаправами
у него и так, наверное, задач много? теоретически грамотнее распределить нагрузку по созданию и запуску события репликации на второстепенные сервера...
2. Тут всё зависит от п.1 :gifts:
 

deeeman

Well-known member
04.12.2007
383
0
#10
да на загрузку сервера вообще начихать, главное чтобы лишнего не поудаляло...
 
K

Klido

#11
3) второй сервер не имеет права удалять документы в реплике на главном сервере;
вообще вот этот пункт..

ну а глубже - например, когда в центре надо хранить полную версию базы, а в филиалах только своё - использовать доступ на уровне авторских полей (и соотвтетствующей настройке ACL для конкретного сервера), прописывая в каждый конкретный документ конкретный же сервер, на которм он создан... тогда он к чужим докам вообще не будет иметь возможности доступа на изменение/удаление
 
30.05.2006
1 345
11
#12
..
те документы которые были указаны в формуле скопировались в главную, а вот все остальные документы были УДАЛЕНЫ ((((

почему так происходит?
что то с правами доступа?
Всё правильно, так и должнО быть:
Если на сервере-источнике есть БОЛЕЕ НОВЫЙ док-т, которого на сервере-приёмнике быть не должно (в соотв. с формулой ИЛИ Readers-полем) - он будет удалён (причём без "окурка")
 

San40S

Well-known member
15.04.2009
69
0
#13
Всем привет!
Дабы не писать новый топик, опишу свой вопрос здесь...

Есть у меня оригинальная БД (назовем ее образно БД1) на первом сервере (СЕРВ1), она в кластере (БД2) с сервером 2 (СЕРВ2).
Далее, мне нужно создать еще одну реплику БД3 на СЕРВ1, но чтобы в БД3 попадали все документы, но не полностью весь документ, а только некоторые его поля. А, еще.., должны реплицироваться только документы(!!!) ACL, дизайн и прочее - реплицироваться не должно!
Тобишь, БД1 и БД2, спокойненько должны себе реплицроваться в кластере (документы, дизайн, агенты, ACL и прочее), а вот в БД3 должны попадать только измененные документы(!!!) с ограниченным набором полей. Обратно, БД3 ничего не должна отдавать - ни документы, ни дизайн, ни ACL - ничего(!!!)

Что я пытался сделать...
Из БД2 на СЕРВ2 создаю реплику для БД3 на СЕРВ1. (Replica ID у всех трех БД одинаковая, но если надо, то в третьей можно поменять)
В свойствах репликации БД3 отключаю обновления дизайна, агентов, АЦЛ... оставляю только обновления полей и в списке выбираю нужные мне поля.
В Connections, настраиваю:
Source server - СЕРВ1;
Destination server - СЕРВ2;
Files/Directory path to replicate - указываю путь и название БД3;
Replication Type - Pull Only.

Что у меня в итоге получается:
Проходит репликация, и в БД2 обновляется дизайн из БД3... в БД1 дизайн же остается прежним.
Набор полей реплицируется вроде правильно.
Если отключить в БД2 обновление дизайна в свойствах репликации, то он тогда не будет обновляться с БД1.

Что я делаю не так, что мне надо сделать по-другому?
В админке, я ни "бум-бум" :'(