Uma dica interessante: para quem usa o BDB como backend do OpenLDAP deve usar o arquivo DB_CONFIG que normalmente fica na pasta /var/lib/ldap com parâmetros como tamanho do cache por exemplo.
Se, por qualquer motivo, você tiver que limpar os arquivos desta pasta para restaurar um backup, por exemplo, pode ser que você apague o arquivo sem querer e quando reiniciar o slapd, o serviço vai reclamar que você poderá ter uma performance baixa devido à falta desta configuração. Veja um exemplo:
# /etc/init.d/slapd stop
Stopping OpenLDAP: slapd.
# rm -f /var/lib/ldap/DB_CONFIG
# /etc/init.d/slapd start
Starting OpenLDAP: slapd.
# tail -4 /var/log/syslog
Feb 3 11:55:15 ldapmaster slapd[2733]: slapd stopped.
Feb 3 11:56:03 ldapmaster slapd[2768]: @(#) $OpenLDAP: slapd 2.4.11 (Nov 26 2009
10:49:27) $#012#011@brahms:/build/buildd-openldap_2.4.11-1+lenny1-amd64-TN9Lvw/
openldap-2.4.11/debian/build/servers/slapd
Feb 3 11:56:03 ldapmaster slapd[2769]: hdb_db_open: warning - no DB_CONFIG file
found in directory /var/lib/ldap: (2).#012Expect poor performance for suffix
"dc=empresa,dc=com,dc=br".
Feb 3 11:56:03 ldapmaster slapd[2769]: slapd starting
Com a série 2.3 do servidor OpenLDAP você pode colocar estas configurações no arquivo slapd.conf e se, na hora de iniciar o serviço, o arquivo DB_CONFIG não existir ele será criado com os parâmetros que você colocou no slapd.conf.
Veja um exemplo. Coloquei as configurações a seguir no arquivo slapd.conf do meu servidor:
...
# Onde os arquivos de database estão armazenados no servidor
directory "/var/lib/ldap"
# área de dados em memória (2Mb)
dbconfig set_cachesize 0 2097152 0
# Cache para nomes de arquivos
dbconfig set_lg_regionmax 1048576
# Define o tamanho máximo do log de transações (o padrão é 1Mb)
dbconfig set_lg_max 10485760
# Cache do log de transações em memória
dbconfig set_lg_bsize 2097152
# Em servidores muito requisitados podem aparecer mensagens de erro indicando
# a exaustão de locks, lockers ou lock objects. Os parâmetros a seguir já oferecem
# uma boa margem de folga nestes casos mas pode ser necessário ajustá-los se você
# identificar este problema em seus logs.
# Número de objetos que podem ser travados simultaneamente
dbconfig set_lk_max_objects 1500
# Número de travamentos (locks) solicitados e permitidos
dbconfig set_lk_max_locks 1500
# Número de lockers
dbconfig set_lk_max_lockers 1500
...
Salve o arquivo e feche-o. Pronto, agora vamos ao teste. Vou remover todos os arquivos do /var/lib/ldap e fazer o procedimento de restaurar um backup full do meu Diretório de testes.
# /etc/init.d/slapd stop
# rm -f /var/lib/ldap/*
# ls -la /var/lib/ldap
total 8
drwxr-xr-x 2 openldap openldap 4096 Fev 3 11:35 .
drwxr-xr-x 25 root root 4096 Fev 1 14:28 ..
# /etc/init.d/slapd start
alock __db.002 __db.004 DB_CONFIG id2entry.bdb
__db.001 __db.003 __db.005 dn2id.bdb log.0000000001
# cat /var/lib/ldap/DB_CONFIG
set_cachesize 0 2097152 0
set_lg_regionmax 1048576
set_lg_max 10485760
set_lg_bsize 2097152
set_lk_max_objects 1500
set_lk_max_locks 1500
set_lk_max_lockers 1500
# ldapadd -x -D cn=admin,dc=empresa,dc=com,dc=br -W -f ~/backup.ldif
Enter LDAP Password: **********
adding new entry "dc=empresa,dc=com,dc=br"
adding new entry "cn=admin,dc=empresa,dc=com,dc=br"
adding new entry "ou=groups,dc=empresa,dc=com,dc=br"
adding new entry "ou=users,dc=empresa,dc=com,dc=br"
adding new entry "ou=computers,dc=empresa,dc=com,dc=br"
adding new entry "cn=marcos,ou=groups,dc=empresa,dc=com,dc=br"
adding new entry "uid=marcos,ou=users,dc=empresa,dc=com,dc=br"
É isso aí, chega de se preocupar em manter uma cópia do DB_CONFIG pra lá e pra cá.
Um detalhe importante, o arquivo só é criado se ele não existir pasta especificada na linha directory da configuração do serviço. Se você precisar alterar algum parâmetro, altere o slapd.conf, remova o arquivo DB_CONFIG da pasta /var/lib/ldap e reinicie o serviço slapd.
Referências:
OpenLDAP.org - How do I configure BDB Backend
Oracle Berkeley DB documentation


