Форум проекта Pro-LDAP.ru

Общие вопросы по LDAP => Общий раздел => Тема начата: мережевий хробачок™ от 23 Февраль 2014, 21:30:37

Название: OpenLDAP backup: slapcat vs ldapsearch
Отправлено: мережевий хробачок™ от 23 Февраль 2014, 21:30:37
Приветствую.

Есть задачи:

1) запилить скрипт полного бекапа LDAP-базы;
2) запилить скрипт roll-back базы (т.е. - удалить существующую - накатить новую).

Насколько получилось нагуглить - у OpenLDAP есть два основных инструмента для этих целей - slapcat/add и ldapsearch/add.

Хотелось бы прояснить пару моментов.

Используется: openldap-servers-2.4.23-34.el6_5.1.x86_64

1) slapcat - создаёт файл ldif в формате Berkeley DB (в случае использования hdb/bdb базы, само собой);
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

И про ldapsearch/add:

1) ldapsearch - создаёт файл почти в том же формате, что и slapcat, который может использоваться ldapadd;
2) ldapadd - не требует остановки демона 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) можно ли использовать slapadd для файлов, полученных с помощью slapcat?

2) что ещё важного я упустил в описании этих инструментов?

3) и отдельно - в чём ещё разница между ними, в плане создания бекапов?

4) есть ли ещё какие-то инструменты для бекапов? (не backula и fsbackup - а более "родные" для LDAP).

Спасибо :)
Название: Re: OpenLDAP backup: slapcat vs ldapsearch
Отправлено: egor от 24 Февраль 2014, 07:40:27
Здравствуйте! Коренное отличие slapcat/slapadd от ldap-утилит (ldapsearch и другие) -- то, что slap-утилиты работают напрямую с движком базы данных, например с движком BerkeleyDB для bdb и hdb и, соответственно, используют API этого движка, а ldap-утилиты работают с LDAP-сервером и используют операции протокола LDAP (search, add и т.п., см. RFC 4511 (http://pro-ldap.ru/tr/rfc/rfc4511.html)). Именно поэтому slapcat может работать как при запущенном, так и при остановленном slapd, а ldapsearch -- только при запущенном. Запрос пароля происходит по той же причине.

Формат вывода slapcat и ldapsearch -- LDIF, но они различаются:
Вывод slapcat не привязан к типу базы данных: можно выгрузить информацию из BDB и залить в MDB. Это просто тектовый формат LDIF.

Наконец, на LDAP-оперцию search накладываются ограничения (limits), в частности ограничение по размеру sizeLimit, обычно 500 записей, так что без специальных ухищрений каталог с большим количеством записей получить за один запрос ldapsearch не получится. slapcat не работает с протоколом LDAP, на него ограничения не распространяются.

slapcat/slapadd -- стандартные инструменты резервного копирования OpenLDAP. Срабатывают в 100% случаев, ни разу не было нареканий, в том числе при переносе базы с OpenLDAP версии 2.3 на версию 2.4. Другими не пользовался.

ldap-утилиты нужны для обращения к каталогу (чаще всего по сети), у них иная специфика. Кстати, у Вас ошибка в запросе:


$ ldapsearch -D "cn=root,dc=db_1" -W -b "dc=db_1" "dc=db_1" -LLL > db_1_backup2.ldif
                                                                                 /\/\/\/\/\/\/\/\
Это будет считаться фильтром и в вывод попадёт только корневая запись.

Егор
Название: Re: OpenLDAP backup: slapcat vs ldapsearch
Отправлено: мережевий хробачок™ от 24 Февраль 2014, 09:16:59
Егор, спасибо. Вы, как обычно, всё разжевали :-)
Цитировать
> Кстати, у Вас ошибка в запросе:

Просто саму базу ещё не переносил, с тестовой балуюсь. Ну, раз коснулись - а как можно задать фильтр "от определённого RDN - и всё после него"?

Цитировать
> Наконец, на LDAP-оперцию search накладываются ограничения (limits), в частности ограничение по размеру sizeLimit, обычно 500 записей

Печально... База у нас довольно громоздкая будет.

А про какие "ухищрения" вы говорили - можно ссылочку, почитать. И - эти же ограничения применяются и к ldapadd, как я понимаю?

И последнее - я так понимаю, что придётся пользоваться именно slapcat/add, но для add - сервер обязательно надо будет гасить? Пока - bdb будет база.
Название: Re: OpenLDAP backup: slapcat vs ldapsearch
Отправлено: egor от 25 Февраль 2014, 03:04:10
Здравствуйте!

как можно задать фильтр "от определённого RDN - и всё после него"?
Если у Вас, к примеру, поддерево dc=dep1,dc=mycompany,dc=ru, то можно сделать такой запрос:
# ldapsearch -x -LLL -b 'dc=mycompany,dc=ru' 'dc:dn:=dep1' dn

А про какие "ухищрения" вы говорили - можно ссылочку, почитать. И - эти же ограничения применяются и к ldapadd, как я понимаю?

На rootDN ограничения не распространяются. Для остальных можно просто отменить ограничения директивой sizelimit (olcSizeLimit), тогда они будут отменены для всех, либо для конкретного DN директивой limits (olcLimits), пример можно посмотреть здесь (http://pro-ldap.ru/tr/admin24/replication.html#N-Way Multi-Master).

На ldapadd ограничения не распространяются.

И последнее - я так понимаю, что придётся пользоваться именно slapcat/add, но для add - сервер обязательно надо будет гасить? Пока - bdb будет база.

Да, останавливать нужно, поскольку БД создаётся заново с нуля, в это время slapd не сможет с ней работать.

Егор
Название: Re: OpenLDAP backup: slapcat vs ldapsearch
Отправлено: мережевий хробачок™ от 25 Февраль 2014, 09:18:05
Спасибо, Егор :)