Ceci est une ancienne révision du document !
Migration BDB/HDB vers MDB
Postulat de départ : vous avez un database configurée en tant que olcDatabase={1}hdb,cn=config et utilisant le backend HDB (ou un database configurée en tant que olcDatabase={1}bdb,cn=config et utilisant le backend BDB) et vous voulez passez sur une base utilisant le backend MDB.
Il faut d'abord charger le module back_mdb :
- Créer le fichier /tmp/load-module.ldif :
dn: cn=module{0},cn=config changetype: modify add: olcModuleLoad olcModuleLoad: back_mdb
- Jouer ce LDIF via ldapmodify :
ldapmodify -x -D cn=admin,cn=config -W -f /tmp/load-module.ldif # Ou : ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/load-module.ldif
Stopper OpenLDAP :
service slapd stop
On fait quelques sauvegarde :
rsync -av /etc/ldap/slapd.d/ /etc/ldap/slapd.d.bkp/ slapcat -n 1 > /tmp/ldif
On migre la configuration :
- On renomme le fichier olcDatabase={1}hdb ou olcDatabase={1}bdb en tant que olcDatabase={1}mdb :
cd '/etc/ldap/slapd.d/cn=config' # Pour HDB : mv 'olcDatabase={1}hdb.ldif' 'olcDatabase={1}mdb.ldif' [ -d 'olcDatabase={1}hdb' ] && mv 'olcDatabase={1}hdb' 'olcDatabase={1}mdb' # Ou pour BDB : mv 'olcDatabase={1}bdb.ldif' 'olcDatabase={1}mdb.ldif' [ -d 'olcDatabase={1}bdb' ] && mv 'olcDatabase={1}bdb' 'olcDatabase={1}mdb'
- Éditer le fichier olcDatabase={1}mdb.ldif :
- supprimer les deux premières ligne liées au CRC. Exemple :
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify. # CRC32 ddd6c93e
- dn : changer hdb (ou bdb) en mdb
- objectClass et structuralObjectClass : changer olcHdbConfig (ou olcBdbConfig) en olcMdbConfig
- olcDbCheckpoint : conserver en l'état
- olcDatabase : changer hdb (ou bdb) en mdb
- supprimer les lignes olcDbConfig
- ajouter olcDbMaxSize: 1073741824
Vous pouvez utiliser le script check_slapdd_crc32 pour corriger le CRC32 du fichier olcDatabase={1}mdb.ldif.
On supprime et réimporte les données à partir du dump LDIF :
rm -fr /var/lib/ldap/* slapadd -n 1 -q -l /tmp/ldif chown openldap: -R /var/lib/ldap
On relance OpenLDAP :
service slapd start
Si tout est ok, vous pouvez supprimer les sauvegardes :
rm -fr /tmp/ldif /etc/ldap/slapd.d.bkp/