Подтвердить что ты не робот

Как клонировать базу данных OpenLDAP

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

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

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

4b9b3361

Ответ 1

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

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.

Плюс, используя инструмент, который использует файлы backend для сброса базы данных, а затем с помощью инструмента, который загружает 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 admin_master, однако, поскольку мы перенаправляем вывод в файл, вы не увидите приглашение - просто пустую строку. Идите и введите пароль ldap admin_master, и он будет работать. Первую строку вашего выходного файла нужно удалить (введите LDAP Password:) перед запуском ldapadd.

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

Ответ 2

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

Экспортируйте свою БД с помощью slapcat:

slapcat > ldif

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

slapadd -l ldif

Ответ 3

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

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

    включить/etc/ldap/schema/core.schema

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

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

  • Используйте ldapadd, чтобы импортировать файлы ldif в новую установку LDAP.

  • Удачи: -)

Ответ 4

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

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

-dump базу данных с помощью ldapsearch:
ldapsearch -LLL -Wx -D "cn = admin, dc = domain" -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 *, которые вы используете с файлами backend

Ответ 5

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

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

Ответ 6

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

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, чтобы продолжить, даже если целевой домен уже существует (мой случай).