Действительно ли возможно иметь недублируемые данные по потребителю LDAP?

Вы могли сделать локальный дамп своих баз данных к tarball и rsync их к другому серверу, как:

#!/bin/sh
SNAPSHOT_DATE=`date '+%d%m%y_%Hh%M'`  
LOCAL_TARBALLS=/tmp
# COMPRESSION MODE  
GZIP="$(which gzip)"  
[[ -z $GZIP ]] && aptitude -y install gzip  # for Debian's like
GZ_COMPRESSION_LEVEL="-9" # 1=low compression but fast, -9=high compression but slow  

# ##############  
# MYSQL dump  
# ##############  
TARBALL="mysql"  

# guess binary names  
MYSQL="$(which mysql)"  
MYSQLDUMP="$(which mysqldump)"  

# do it Safe  
[[ -z $MYSQL ]] || [[ -z $MYSQLDUMP ]] && echo "mysql commands not found" && exit 1  

# mysql version  
$MYSQL -V > $LOCAL_TARBALLS/$TARBALL/myql_version  
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"  
# dump dbs and generate one tarball by database  
for db in $DBS  
do  
 FILE="$LOCAL_TARBALLS/$TARBALL/mysqldump_$db-$SNAPSHOT_DATE.sql"  
 $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db > $FILE && $GZIP $GZ_COMPRESSION_LEVEL $FILE  
done  
# Or generate ONE dump for all databases  
# FILE=$LOCAL_TARBALLS/$TARBALL/"mysql_dump".$SNAPSHOT_DATE".sql"  
# $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS --all-databases > $FILE && $GZIP -9 $FILE  
else  
echo "Mysql: No backup of databases have been performed (because no or wrong credentials have been entered)"  
fi  

Необходимо будет адаптировать некоторые данные в оболочке, данной как подсказка.

То же относится к Вашим данным (/домой и так далее), я означаю использовать rsync Ваше резервное копирование tarballs (rsync, использует ssh). Даже этими rsync можно управлять в cronjob sothat, резервное копирование регулярно делаются.

Надежда это помогает.

2
задан 8 March 2017 в 20:01
4 ответа

Да, можно. Просто найдите фильтр и атрибуты, которые вы хотите реплицировать в конфигурации syncrepl

syncrepl rid=1
  provider=ldap://provider.myorg.com:389
  type=refreshOnly
  interval=01:00:00:00
  searchbase="ou=sales,o=employees,o=myorg,cn=com"
  filter="(objectClass=posixAccount)"
  scope=base
  attrs="cn,sn,userPassword"
  schemachecking=off
  bindmethod=simple
  binddn="cn=syncuser,o=myorg,cn=com"
  credentials=secret

, теперь это выглядит следующим образом:

  • реплицировать только ou = sales, o = myorg, cn = com
  • реплицировать только схему posixAccount
  • cn, sn и userPassword. Таким образом, сохраняя gid и uid потребителя нетронутыми.
  • и не входите в детей. Просто укажите baseDN. У области есть несколько вариантов.
    • sub, означает все с поддеревьями
    • один, означает только базу поиска, а тот, который находится под ней
    • , означает только базу поиска

Однако есть одна загвоздка. Атрибуты, которых у вашей мастер-самбы нет, необходимо обновить вручную. Например, у вас есть пароль samba на вашем потребительском LDAP, а ваш главный LDAP его не имеет, вам необходимо обновить 2 LDAP для синхронизации sambaNTPassword и sambaLMPassword на потребительском LDAP с userPassword на главном LDAP, когда пользователь меняет свой пароль. Конечно, это применимо только в том случае, если вы хотите, чтобы пароли синхронизировались.

2
ответ дан 3 December 2019 в 10:04

If you are referring to is it possible to have different data schema for an consumer , then I think that you could just replicate things separately for one forest (or create another one ) then connect the consumer to that forest or AD site . Unfortunately I used openldap only briefly. I hope this helps .

1
ответ дан 3 December 2019 в 10:04

2 backends approach

As far as your different branches are in different backends, you can have a backend configured to be a consumer of a remote master, and another backend configured to be a standard backend when read and write are performed directly.

You define ou=sales,o=employees,o=myorg,cn=com as the DN of one backend with the settings for the replication. And you define ou=accounting,o=employees,o=myorg,cn=com as the DN of another backend, without replication settings.

1 backend approach

If everything as to be kept into the same backend, I imagine the following :

  1. Configure the backend replication in a multi-master maneer. This way, both servers are writable
  2. Where you locally writable tree has to be located, implement ACI to keep the replicated data read-only for the local users if necessary
  3. If the locally writable tree has to be kept locally and not replicated, you can configure directive to do a selective replication (ignoring attributes, object, DN, ...)
1
ответ дан 3 December 2019 в 10:04

У меня была аналогичная проблема, и я нашел параметр, который разрешает запись на основе потребителя:

olcMirrorMode: TRUE

Его необходимо добавить после всех параметров syncrepl. Думаю, это решит и вашу проблему.

0
ответ дан 3 December 2019 в 10:04

Теги

Похожие вопросы