Ошибка миграции сервера LDAP с Debian на Ubuntu

Ошибка миграции сервера LDAP с Debian на Ubuntu

Мы пытаемся перенести ldap с устаревшего сервера Debian на сервер Ubuntu. Все попытки использовать slapcat, вручную изменить конфигурацию и другие трюки провалились. Я считаю, что старая база данных использует структуру bdb, которая, как я выяснил из исследований, больше не поддерживается.

В ходе миграции мы предприняли следующие шаги:

Сделал резервную копию и скопировал старую базу данных ldap с помощью slapcat.

sudo slapcat -n 0 -l config.conf
sudo slapcat -n 1 -l database.ldif

Затем мы установили и перенастроили slapd с помощью dpkg на новом сервере в соответствии со спецификациями установки старого.

После этого мы воспользуемся slapadd для восстановления старой базы данных.

sudo slapadd -F /etc/ldap/slapd.d -n 0 -l config.conf

Что привело к следующей ошибке

slapadd: could not add entry dn="cn=config" (line=1):
Closing DB...

Следующей командой мы пытаемся восстановить базу данных.

sudo slapadd -F /etc/ldap/slapd.d -n 1 -l database.ldif

Но снова получил несколько ошибок:

mdb_id2entry_put: mdb_put failed: MDB_KEYEXIST: Key/data pair already exists (-30799) "dc=cs"
=> mdb_tool_entry_put: id2entry_add failed: err=-30799
=> mdb_tool_entry_put: txn_aborted! MDB_KEYEXIST: Key/data pair already exists (-30799)
slapadd: could not add entry dn="dc=cs" (line=1): txn_aborted! MDB_KEYEXIST: Key/data pair already exists (-30799)
Closing DB...

На этом этапе у нас возникли ошибки при загрузке файла конфигурации. Мы попытались преобразовать его из архитектуры bdb в mdb, но все равно получили ошибки при загрузке файла database.ldif.

Есть ли у кого-нибудь надежный метод переноса базы данных ldap на новый сервер? Так как большинство руководств сильно устарели.

решение1

Ошибка вызвана устаревшим бэкэндом базы данных на большинстве старых систем slapd (<2.4.x). Ручное преобразование в hdb/bdb => mdb устраняет эти проблемы на новых версиях slapd.

sudo slapcat -n 0 -l config.conf
sudo slapcat -n 1 -l database.ldif

Обязательно отключите службу slapd.

service slapd stop

Замените все ссылки hdb/bdb на mdb в файлах config.conf и database.ldif.

Перед использованием slapadd для загрузки конфигурации очистите каталог slapd.d.

rm -rf /etc/ldap/slapd.d/*

Затем загрузите обновленную конфигурацию mdb.

slapadd -F /etc/ldap/slapd.d -n 0 -l config.conf

Затем обязательно очистите каталог ldap.

rm -rf /var/lib/ldap/*

Теперь загрузите преобразованную базу данных mdb.

slapadd -F /etc/ldap/slapd.d -n 1 -l database.ldif

Предоставьте разрешение openldap на доступ к каталогу slapd.d.

chown -R openldap:openldap /etc/ldap/slapd.d

Запустите службу slapd, теперь у вас должна быть перенесенная база данных ldap.

service slapd start

Подтвердите с помощью slapcat

slapcat -n 0
slapcat -n 1

Связанный контент