
Мы пытаемся перенести 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