Назад | Перейти на главную страницу

LDAP: резервное копирование с помощью slapcat против ldapsearch

Используемый: openldap-servers-2.4.23-34.el6_5.1.x86_64

Задача: создать скрипт для crontab для создания полной резервной копии базы данных по расписанию.

1) slapcat - создать файл в формате по умолчанию Berkeley DB.

2) slapcat можно сделать пока slapd работает (если bdb/hdb база данных).

3) Восстановить файл после slapcat - необходимо использовать slapadd (не ldapadd).

4) slapcat/add не требует пароля.

5) slapadd может быть сделано только когда slapd остановился.

Пример:

 $ slapcat -f /etc/openldap/slapd.conf -b "dc=db_1" -l db_1_backup.ldif
 $ slapadd -l db_1_backup.ldif

Вместо того slapcat/add - давайте посмотрим на ldapsearch/add:

1) ldapsearch - создает файл с почти такой же информацией, что и slapcat;

2) ldapadd - можно использовать файл из ldapsearch, не требует slapd быть остановленным;

3) ldapadd/search - требуется пароль.

Пример:

 $ ldapsearch -D "cn=root,dc=db_1" -W -b "dc=db_1" "dc=db_1" -LLL > db_1_backup2.ldif
 $ ldapadd -x -D "cn=root,dc=db_1" -W -f db_1_backup2.ldif

Итак - вопрос:

1) Я что-то упустил в этом описании инструментов?

2) Чем еще отличается ldapadd/slapadd и ladpsearch/slapcat?

Хорошее резюме, некоторые дополнительные моменты:

  • slapcat дамп из любого (локального) сервера прямого хранилища, это не обязательно Беркли (hdb или bdb), он также работает с OLC (cn=config). Он сбрасывается в Формат LDIF. (Под прямым я подразумеваю, что напрямую управляется OpenLDAP, а не, например, серверной частью SQL, даже если он хранится локально.)
  • ldapadd требует этого slapd является Бег, slapadd требует, чтобы это не является Бег
  • ldapsearch требует, чтобы slapd является Бег, slapcat все равно, работает ли он с серверной частью BDB, как вы заметили

Коротко:

  • slapcat - это способ получить хорошую резервную копию, которую можно быстро восстановить, хотя и с простоями на главном сервере (вы можете обойти это, настроив различные типы репликации). Это то, что вы должны использовать для общего резервного копирования и резервных копий перед обновлением.
  • ldapsearch (без +) принесет вам портативный резервную копию, которую, вероятно, можно без труда загрузить на любой другой сервер каталогов, но это будет жизнеспособным восстановлением только при простой настройке OpenLDAP (без репликации, без специальных наложений, без перезаписи), и если вы не заботитесь о сохранении UUID / создать / изменить метаданные. Вам также понадобятся любые дополнительные файлы схемы, которые идут вместе с вашими данными.
  • ldapadd (используя другую личность ldapmodify) можно использовать для простого применения модификаций LDAP (изменение объекта, удаление и переименование), которые невозможны или невозможны с slapadd/slapcat в одиночестве

Для большинства администраторов основные соображения возникают из-за немного различающегося содержимого LDIF в каждом случае и требований к slapd быть запущенным (или нет). Наиболее важные отличия:

  1. slapcat быстрее, потому что он просто выгружает базу данных, пропуская накладные расходы протокола LDAP, аутентификацию, контроль доступа, объектные и временные ограничения, наложения; и он не выполняет поиск в соответствии с иерархией LDAP.
  2. slapadd работает быстрее (опять же, без накладных расходов протокола LDAP), и в случае, если вы восстанавливаете заведомо исправную резервную копию, вы можете запустить быстрый режим (-q), чтобы ускорить крупный импорт. Вы также можете отключить проверку схемы (-s), хотя обратите внимание, что небольшие изменения в схеме или проверке данных между версиями OpenLDAP не являются чем-то необычным.
  3. slapcat ограничен локальными базами данных, он не будет переходить в другие каталоги (например, с back-ldap, back-meta) способ ldapsearch воля. То же самое касается slapadd/ldapadd.
  4. ldapsearch вернет динамические атрибуты, которые не хранятся в бэкэнде, например hasSubordinates или те, которые поддерживаются наложениями (например, slapo-memberof). У вас будут проблемы с их загрузкой ldapadd (например, операционные атрибуты без модификации пользователем). Переписывание (slapo-rwm) также может искажать ldapsearchпросмотр содержимого каталога.
  5. slapcat включает внутренние (операционные) атрибуты, если вы используете репликацию, эти атрибуты критичны. При репликации вы несколько меньше зависите от резервных копий, но если вы используете ldapadd чтобы перезагрузить своего мастера, каждый объект будет воссозданный репликацией (изменено entryUUID entryCSN) Хотя вы можете включить операционные атрибуты, используя специальный атрибут "+" с ldapsearch (или allop оверлей), это не то же самое, что slapcat, см. предыдущий пункт, чтобы узнать, почему это так. Эти атрибуты также включают создание / изменение DN и отметки времени, которые могут быть важны для некоторых приложений.
  6. так как slapcat не соблюдает иерархию LDAP (подразумеваемый порядок), нет гарантии, что его порядок данных будет жизнеспособным с ldapadd - т.е. даже если вы удалите операционные атрибуты, ldapadd может жаловаться, потому что подчиненные могут предстать перед своим начальством (родителями). Спецификации LDAP требуют наличия родительского элемента, но также оставляют неопределенный порядок результатов поиска в этом отношении. См. Комментарий Ховарда ниже, OpenLDAP's slapadd молча поддерживает неупорядоченные данные для некоторых бэкэндов. В крайнем случае вы сможете многократно использовать slapadd с опцией продолжить при ошибке (-c) до тех пор, пока не будут созданы все "вышедшие из строя" родители, остановка, когда вы больше не получите код ошибки 32 (нет такого объекта, что означает отсутствие родителя) и получите только код 68 (уже существует) для каждого объекта.
  7. ldapadd подчиняется правилам и наложениям LDAP, например ссылочная целостность, ppolicy (политика паролей)
  8. slapcat предпочитает использовать значения атрибутов в кодировке base-64 как минимум для userPassword (обозначенного :: после имени атрибута)
  9. ldapsearch имеет больше возможностей для форматирования LDIF и записи больших атрибутов в отдельные файлы. Он также может обрабатывать рефералы и псевдонимы.

slapcat не работает, если у вас есть оверлеи, например memberOf. Итак, если вы сделаете slapcat / slapadd оверлеи членства в цикле больше не будут работать.