
Estamos tentando migrar o ldap de um servidor Debian desatualizado para um servidor Ubuntu. Todas as tentativas de usar o slapcat, modificar a configuração manualmente e outros truques falharam. Acredito que o banco de dados antigo utiliza a estrutura bdb, que ao pesquisar descobri que não é mais suportada.
As etapas que executamos durante a migração são as seguintes:
Fiz backup e copiei o banco de dados ldap antigo usando slapcat.
sudo slapcat -n 0 -l config.conf
sudo slapcat -n 1 -l database.ldif
Em seguida, instalamos e reconfiguramos o slapd pelo dpkg no novo servidor, para corresponder às especificações de instalação do antigo.
Depois disso, usaríamos o slapadd para recuperar o banco de dados antigo.
sudo slapadd -F /etc/ldap/slapd.d -n 0 -l config.conf
O que produziu o seguinte erro
slapadd: could not add entry dn="cn=config" (line=1):
Closing DB...
O próximo comando tentamos restaurar o banco de dados.
sudo slapadd -F /etc/ldap/slapd.d -n 1 -l database.ldif
Mas novamente recebi vários erros:
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...
Neste ponto, tivemos erros ao carregar o arquivo de configuração. Tentamos convertê-lo da arquitetura bdb para mdb, mas ainda assim teríamos erros ao carregar o arquivo database.ldif.
Alguém teria um método confiável para migrar o banco de dados ldap para um novo servidor? Como a maioria dos guias está muito desatualizada.
Responder1
O erro ocorre devido ao backend de banco de dados desatualizado na maioria dos sistemas slapd antigos (<2.4.x). A conversão manual para hdb/bdb => mdb corrige esses problemas nas novas versões do slapd.
sudo slapcat -n 0 -l config.conf
sudo slapcat -n 1 -l database.ldif
Certifique-se de desligar o serviço slapd.
service slapd stop
Substitua todas as referências hdb/bdb por mdb nos arquivos config.conf e database.ldif.
Antes de usar o slapadd para carregar a configuração, esvazie o diretório slapd.d.
rm -rf /etc/ldap/slapd.d/*
Em seguida, carregue sua configuração mdb atualizada.
slapadd -F /etc/ldap/slapd.d -n 0 -l config.conf
Em seguida, certifique-se de esvaziar também o diretório ldap.
rm -rf /var/lib/ldap/*
Agora carregue o banco de dados mdb convertido.
slapadd -F /etc/ldap/slapd.d -n 1 -l database.ldif
Dê permissão openldap ao diretório slapd.d.
chown -R openldap:openldap /etc/ldap/slapd.d
Inicie o serviço slapd, agora você deve ter um banco de dados ldap migrado.
service slapd start
Confirme com tapa
slapcat -n 0
slapcat -n 1