Changer de backend
Afin d’optimiser les performances du serveur OpenLDAP, il peut être utile de changer de backend afin d’en utiliser un plus récent. En effet, OpenLDAP propose les trois types de backend suivants par ordre d’apparition : bdb, hdb et mdb. Bien que OpenLDAP préconise l’utilisation du backend "mdb", les distributions de type Red Hat intègrent seulement les backend de type "bdb" et "hdb". L’utilisation de ce dernier est par ailleurs conseillée pour les améliorations apportées par rapport à bdb, notammment la correction de bugs et la possiblité de renommer des sous-entrées de l’annuaire (voir figure 17-1).
Voici par exemple le résultat d’une tentative de renommage avec un backend "bdb" :
modifying rdn of entry "ou=users,dc=example,dc=com" 
   new RDN: "ou=users-RENAMED" (do not keep existing values) 
ldap_rename: Operation not allowed on non-leaf (66) 
   additional info: subtree rename not supported
Figure 17-1 : Message d’erreur sur backend "bdb"
La procédure (la plus simple) à appliquer sera donc la suivante :
	•	Export des données au format LDIF (commande slapcat) :
[root@ldap01 tmp]# slapcat -b "dc=exemple,dc=com" -l 
/tmp/ldap-bkp.ldif 
5980e272 bdb_db_open: warning - no DB_CONFIG file found in  
directory /var/lib/ldap: (2). 
Expect poor performance for suffix "dc=exemple,dc=com". 
[root@ldap01 tmp]#
	•	Arrêt du service LDAP (processus "slapd") :
service slapd stop
	•	Sauvegarde de l’ancien fichier de configuration de la branche de type "bdb" (pour le retour arrière) :
 [root@ldap01 cn=config]# mv olcDatabase={1}bdb.ldif  
/tmp/olcDatabase={1}bdb.ldif
	•	Création du fichier de configuration de la branche de type "hdb" (copie du fichier précédemment créé) :
root@ldap01 cn=config]# cp /tmp/olcDatabase={1}bdb.ldif olcDatabase={1}hdb.ldif 
 [root@ldap01 cn=config]# chown ldap:ldap olcDatabase={1}hdb.ldif
	•	Modification du nouveau fichier de configuration obtenu.
	▪	En gris clair : modification du terme "bdb" en ’hdb’.
	▪	En gris foncé : suppression des lignes.
 [root@ldap01 cn=config]# cat olcDatabase={1}hdb.ldif 
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify. 
# CRC32 ee2bed90 
dn: olcDatabase={1}hdb 
objectClass: olcDatabaseConfig 
objectClass: olcHdbConfig 
olcDatabase: {1}hdb 
olcDbDirectory: /var/lib/ldap-hdb 
olcSuffix: dc=exemple,dc=com 
olcLastMod: TRUE 
. . . 
olcDbDNcacheSize: 0 
structuralObjectClass: olcBdbConfig 
entryUUID: f6af724e-0b29-1037-8d09-09a2d745f57a 
creatorsName: cn=config 
createTimestamp: 20170801172405Z 
olcRootDN: cn=root,dc=exemple,dc=com 
olcRootPW:: dG90bzA2 
entryCSN: 20170801173552.693242Z#000000#002#000000 
modifiersName: cn=config 
modifyTimestamp: 20170801173552Z

	•	Création du nouveau répertoire de données :
mkdir -p /var/lib/ldap-hdb 
chown -R ldap:ldap /var/lib/ldap-hdb

	•	Chargement des données (commande slapadd) :
 [root@ldap01 tmp]# slapadd -c -b dc=exemple,dc=com -l ldap-bkp.ldif 
5981650d ldif_read_file: checksum error on  
"/etc/openldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif" 
5981650d hdb_db_open: warning - no DB_CONFIG file found in  
directory /var/lib/ldap-hdb: (2). 
Expect poor performance for suffix "dc=exemple,dc=com". 
.#################### 100.00% eta   none elapsed            none fast! 
Closing DB...

	•	Redémarrage du service LDAP :
[root@ldap01 cn=config]# service slapd start 
Checking configuration files for slapd:   
[WARNING] 
59816fa2 ldif_read_file: checksum error on  
"/etc/openldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif" 
config file testing succeeded 
Starting slapd:                                         [  OK  ] 
[root@ldap01 cn=config]#

	•	Vérification du contenu de l’annuaire avec un navigateur LDAP.