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