Автор Тема: OpenLDAP backup: slapcat vs ldapsearch  (Прочитано 19866 раз)

мережевий хробачок™

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
    • RTFM — администрирование, настройка серверов FreeBSD, Linux
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).

Спасибо :)

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: OpenLDAP backup: slapcat vs ldapsearch
« Ответ #1 : 24 Февраль 2014, 07:40:27 »
Здравствуйте! Коренное отличие slapcat/slapadd от ldap-утилит (ldapsearch и другие) -- то, что slap-утилиты работают напрямую с движком базы данных, например с движком BerkeleyDB для bdb и hdb и, соответственно, используют API этого движка, а ldap-утилиты работают с LDAP-сервером и используют операции протокола LDAP (search, add и т.п., см. RFC 4511). Именно поэтому slapcat может работать как при запущенном, так и при остановленном slapd, а ldapsearch -- только при запущенном. Запрос пароля происходит по той же причине.

Формат вывода slapcat и ldapsearch -- LDIF, но они различаются:
  • в выводе slapcat присутствуют все атрибуты (пользовательские и операционные), в выводе ldapsearch по умолчанию -- только пользовательские;
  • записи в выводе ldapsearch "упорядочены" по структуре дерева, в выводе slapcat -- в произвольном порядке (точнее, в порядке выборки из БД), поэтому вывод slapcat загрузить с помощью ldapadd не получится.
Вывод 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
                                                                                 /\/\/\/\/\/\/\/\
Это будет считаться фильтром и в вывод попадёт только корневая запись.

Егор

мережевий хробачок™

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
    • RTFM — администрирование, настройка серверов FreeBSD, Linux
Re: OpenLDAP backup: slapcat vs ldapsearch
« Ответ #2 : 24 Февраль 2014, 09:16:59 »
Егор, спасибо. Вы, как обычно, всё разжевали :-)
Цитировать
> Кстати, у Вас ошибка в запросе:

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

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

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

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

И последнее - я так понимаю, что придётся пользоваться именно slapcat/add, но для add - сервер обязательно надо будет гасить? Пока - bdb будет база.
« Последнее редактирование: 24 Февраль 2014, 14:01:26 от мережевий хробачок™ »

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: OpenLDAP backup: slapcat vs ldapsearch
« Ответ #3 : 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), пример можно посмотреть здесь.

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

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

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

Егор
« Последнее редактирование: 25 Февраль 2014, 03:05:55 от egor »

мережевий хробачок™

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
    • RTFM — администрирование, настройка серверов FreeBSD, Linux
Re: OpenLDAP backup: slapcat vs ldapsearch
« Ответ #4 : 25 Февраль 2014, 09:18:05 »
Спасибо, Егор :)
« Последнее редактирование: 25 Февраль 2014, 12:43:36 от мережевий хробачок™ »