Как мне клонировать базу данных OpenLDAP - PullRequest
35 голосов
/ 27 апреля 2009

Я знаю, что это больше похоже на вопрос об ошибке сервера, чем вопрос о переполнении стека, но, поскольку ошибка сервера еще не наступила, я перехожу:

Я должен перенести приложение с одного redhat-сервера на другой, и без очень хороших знаний внутренней работы приложения, как бы я перенес базу данных OpenLDAP с одного компьютера на другой, со схемами и всеми .

Какие файлы мне нужно скопировать? Я считаю, что установка довольно стандартная.

Ответы [ 6 ]

41 голосов
/ 25 мая 2010

Проблема с SourceRebels ответом является то, что slapcat(8) не гарантирует, что данные заказаны для ldapadd(1) / ldapmodify(1). Со страницы руководства:

The  LDIF  generated  by this tool is suitable for use with slapadd(8).
As the entries are in database order, not superior  first  order,  they
cannot be loaded with ldapadd(1) without first being reordered.

Плюс использование инструмента, который использует файлы бэкэнда для выгрузки базы данных, а затем использование инструмента, который загружает ldif по протоколу ldap, не очень согласовано.

Я бы предложил использовать комбинацию slapcat(8) / slapadd(8) ИЛИ ldapsearch(1) / ldapmodify(1). Я предпочел бы последнее, поскольку ему не нужен доступ оболочки к серверу ldap или перемещение файлов.

Например, выгрузите базу данных с главного сервера в dc = master, dc = com и загрузите ее на резервный сервер

$ ldapsearch -Wx -D "cn=admin_master,dc=master,dc=com" -b "dc=master,dc=com" -H ldap://my.master.host -LLL > ldap_dump-20100525-1.ldif
$ ldapadd -Wx -D "cn=admin_backup,dc=backup,dc=com" -H ldap://my.backup.host -f ldap_dump-20100525-1.ldif

Приведенный выше флаг -W запрашивает пароль администратора ldap, однако, поскольку мы перенаправляем вывод в файл, вы не увидите приглашение - просто пустая строка. Идите дальше и введите свой пароль администратора ldap, и он будет работать. Первую строку вашего выходного файла необходимо удалить (введите LDAP Password :) перед запуском ldapadd.

Последний совет, ldapadd(1) - это жесткая ссылка на ldapmodify(1) с включенным флагом -a (добавить).

15 голосов
/ 23 июля 2010

ldapsearch и ldapadd не обязательно являются лучшими инструментами для клонирования вашей БД LDAP. slapcat и slapadd - намного лучшие варианты.

Экспорт вашей БД с slapcat:

slapcat > ldif

Импорт БД с помощью slapadd (убедитесь, что сервер LDAP остановлен):

slapadd -l ldif
8 голосов
/ 27 апреля 2009

Некоторые встречи:

  • Сохраните ваши персонализированные схемы и определения классов объектов на вашем новом сервере. Вы можете найти включенные файлы в slapd.conf, чтобы получить его, например (это часть моего slapd.conf):

    включает /etc/ldap/schema/core.schema

  • Включите ваши персонализированные схемы и объектные классы в новую установку openLDAP.

  • Используйте команду slapcat для экспорта полного дерева LDAP в один / различные ldif файлы.

  • Используйте ldapadd для импорта файлов ldif в вашу новую установку LDAP.

6 голосов
/ 19 мая 2009

Я предпочитаю копировать базу данных через протокол:

Прежде всего убедитесь, что у вас одинаковые схемы на обоих серверах.

- сбросить базу данных с помощью ldapsearch:
ldapsearch -LLL -Wx -D "cn = admin, dc = домен" -b "dc = domain"> domain.ldif

- и импортировать его на новый сервер:
ldapmodify -Wx -D "cn = admin, dc = domain" -a -f domain.ldif

в oneline:
ldapsearch -LLL -Wx -D "cn = admin, dc = domain" -b "dc = domain" | ldapmodify -w pass -x -D "cn = admin, dc = domain" -a

Используя команды bin / ldap *, вы общаетесь непосредственно с сервером, а команды bin / slap * обращаетесь к внутренним файлам

2 голосов
/ 30 апреля 2014

(недостаточно репутации, чтобы написать комментарий ...)

Ldapsearch открывает соединение с сервером LDAP. Вместо этого Slapcat обращается к базе данных напрямую, а это означает, что списки ACL, ограничения по времени и размеру и другие побочные продукты соединения LDAP не оцениваются и, следовательно, не изменяют данные. (Мэтт Батчер, «Освоение OpenLDAP»)

2 голосов
/ 09 июня 2013

Спасибо, Виш. Работал как шарм! Я отредактировал команду:

ldapsearch -z max -LLL -Wx -D "cn=Manager,dc=domain,dc=fr" -b "dc=domain,dc=fr" >/tmp/save.ldif

ldapmodify -c -Wx -D "cn=Manager,dc=domain,dc=fr" -a -f /tmp/save.ldif

Просто добавили -z max, чтобы избежать ограничения по размеру, и -c, чтобы продолжить, даже если целевой домен уже существует (мой случай).

...