informatique:reseau:ldap:migration_bdb_hdb_mdb

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
informatique:reseau:ldap:migration_bdb_hdb_mdb [2019/08/06 10:27] – créée bn8informatique:reseau:ldap:migration_bdb_hdb_mdb [2022/11/16 11:57] (Version actuelle) bn8
Ligne 3: Ligne 3:
 **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//. **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// : +**Pré-requis :** Installer le script [[https://gogs.zionetrix.net/bn8/check_slapdd_crc32|check_slapdd_crc32]] pour corriger le //CRC32// des fichiers de configuration d'OpenLDAP. 
-  * Créer le fichier ///tmp/load-module.ldif// <code ldif>dn: cn=module{0},cn=config+ 
 +Il faut d'abord charger le module //back_mdb//<code bash>ldapmodify -Y EXTERNAL -H ldapi:/// << EOF 
 +dn: cn=module{0},cn=config
 changetype: modify changetype: modify
 add: olcModuleLoad add: olcModuleLoad
-olcModuleLoad: back_mdb</code> +olcModuleLoad: back_mdb 
-  * Jouer ce LDIF via //ldapmodify// : <code bash>ldapmodify -x -D cn=admin,cn=config -W -f /tmp/load-module.ldif +EOF</code>
-# Ou : +
-ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/load-module.ldif</code>+
  
-Stopper //OpenLDAP// : <code bash>service slapd stop</code> +On sauvegarde et prépare une copie de la configuration d'OpenLDAP : <code bash>rsync -av /etc/ldap/slapd.d/ /etc/ldap/slapd.d.bkp/ 
- +check_slapdd_crc32 -
-On fait quelques sauvegarde : <code bash>rsync -av /etc/ldap/slapd.d/ /etc/ldap/slapd.d.bkp/ +rsync -av /etc/ldap/slapd.d/ /etc/ldap/slapd.d.new/</code>
-slapcat -n 1 > /tmp/ldif</code>+
  
 On migre la configuration : On migre la configuration :
-  * On renomme le fichier //olcDatabase={1}hdb// ou //olcDatabase={1}bdb// en tant que //olcDatabase={1}mdb// : <code bash>cd '/etc/ldap/slapd.d/cn=config'+  * On renomme le fichier //olcDatabase={1}hdb// ou //olcDatabase={1}bdb// en tant que //olcDatabase={1}mdb// : <code bash>cd '/etc/ldap/slapd.d.new/cn=config'
 # Pour HDB : # Pour HDB :
-mv 'olcDatabase={1}hdb.ldif' 'olcDatabase={1}mdb.ldif'+[ -e 'olcDatabase={1}hdb.ldif' ] && mv 'olcDatabase={1}hdb.ldif' 'olcDatabase={1}mdb.ldif'
 [ -d 'olcDatabase={1}hdb' ] && mv 'olcDatabase={1}hdb' 'olcDatabase={1}mdb' [ -d 'olcDatabase={1}hdb' ] && mv 'olcDatabase={1}hdb' 'olcDatabase={1}mdb'
 # Ou pour BDB : # Ou pour BDB :
-mv 'olcDatabase={1}bdb.ldif' 'olcDatabase={1}mdb.ldif'+[ -e 'olcDatabase={1}bdb.ldif' ] && mv 'olcDatabase={1}bdb.ldif' 'olcDatabase={1}mdb.ldif'
 [ -d 'olcDatabase={1}bdb' ] && mv 'olcDatabase={1}bdb' 'olcDatabase={1}mdb'</code> [ -d 'olcDatabase={1}bdb' ] && mv 'olcDatabase={1}bdb' 'olcDatabase={1}mdb'</code>
-  * Éditer le fichier //olcDatabase={1}mdb.ldif// : +  * On adapte le fichier //olcDatabase={1}mdb.ldif//
-    * supprimer les deux premières ligne liées au //CRC//. Exemple : <code># AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify. +    * **dn et olcDatabase :** changer //hdb// (ou //bdb//) en //mdb// : <code bash>sed -i 's/{1}[hb]db/{1}mdb/' 'olcDatabase={1}mdb.ldif'</code> 
-# CRC32 ddd6c93e</code> +    * **objectClass et structuralObjectClass :** changer //olcHdbConfig// (ou //olcBdbConfig//) en //olcMdbConfig// : <code bash>sed -i 's/olc[HB]dbConfig/olcMdbConfig/g' 'olcDatabase={1}mdb.ldif'</code>
-    * **dn :** changer //hdb// (ou //bdb//) en //mdb// +
-    * **objectClass et structuralObjectClass :** changer //olcHdbConfig// (ou //olcBdbConfig//) en //olcMdbConfig//+
     * **olcDbCheckpoint :** conserver en l'état     * **olcDbCheckpoint :** conserver en l'état
-    * **olcDatabase :** changer //hdb// (ou //bdb//) en //mdb// +    * supprimer les lignes des attributs suivants: 
-    supprimer les lignes //olcDbConfig// +      ''olcDbCacheFree'' 
-    ajouter //olcDbMaxSize: 1073741824//+      ''olcDbCacheSize'' 
 +      ''olcDbChecksum'' 
 +      ''olcDbConfig'' 
 +      * ''olcDbCryptFile'' 
 +      * ''olcDbCryptKey'' 
 +      * ''olcDbDNcacheSize'' 
 +      * ''olcDbDirtyRead'' 
 +      * ''olcDbIDLcacheSize'' 
 +      * ''olcDbLinearIndex'' 
 +      * ''olcDbLockDetect'' 
 +      * ''olcDbPageSize'' 
 +      * ''olcDbShmKey'' 
 +    * ajouter la ligne ''olcDbMaxSize: 1073741824'' 
 +  * On vérifie la nouvelle configuration : <code bash> 
 +check_slapdd_crc32 -p /etc/ldap/slapd.d.new-f 
 +slaptest -F /etc/ldap/slapd.d.new/ 
 +slapschema -F /etc/ldap/slapd.d.new-b cn=config</code> 
 + 
 +Maintenant que la configuration est préparer, on va : 
 +  Stopper OpenLDAP 
 +  * Exporter au format LDIF les données de l'annuaire 
 +  Mettre en place la nouvelle configuration 
 +  * Supprimer et réimporter les données de l'annuaire 
 +  * Relancer OpenLDAP
  
-On supprime et réimporte les données à partir du dump //LDIF// : <code bash>rm -fr /var/lib/ldap/* +Cela devrait être assez rapide, tout dépends de la taille de l'annuaire LDAP : 
-slapadd -n 1 -q -l /tmp/ldif +<code bash> 
-chown openldap: -R /var/lib/ldap</code>+DB_DIRECTORY=$( grep -iE '^olcDbDirectory: ' '/etc/ldap/slapd.d.new/cn=config/olcDatabase={1}mdb.ldif'|sed 's/^olcDbDirectory//' ) 
 +echo "DB directory: $DB_DIRECTORY" 
 +[ -n "$DB_DIRECTORY" -a -d "$DB_DIRECTORY/" ] && \ 
 +service slapd stop && \ 
 +slapcat -n1 /tmp/ldif && \ 
 +rsync -av --delete /etc/ldap/slapd.d.new/ /etc/ldap/slapd.d/ && \ 
 +rm -f $DB_DIRECTORY/*.bdb $DB_DIRECTORY/DB_CONFIG $DB_DIRECTORY/__db.* $DB_DIRECTORY/log.* $DB_DIRECTORY/alock && \ 
 +slapadd -n 1 -q -l /tmp/ldif && \ 
 +chown openldap: -R $DB_DIRECTORY && \ 
 +service slapd start</code>
  
-On relance //OpenLDAP// : <code bash>service slapd start</code>+Si tout est ok, vous pouvez supprimer les sauvegardes : <code bash>rm -fr /tmp/ldif /etc/ldap/slapd.d.bkp/ /etc/ldap/slapd.d.new/</code>
  
-Si tout est ok, vous pouvez supprimer les sauvegardes : <code bash>rm -fr /tmp/ldif /etc/ldap/slapd.d.bkp/</code>+<note tip>Si vous aviez un cron de purge des logs binaires //BDB//, pensez à le supprimer.</note>
  • informatique/reseau/ldap/migration_bdb_hdb_mdb.1565087265.txt.gz
  • Dernière modification : 2019/08/06 10:27
  • de bn8