Prochaine révision | Révision précédente Prochaine révisionLes deux révisions suivantes |
informatique:reseau:ldap:migration_bdb_hdb_mdb [2019/08/06 10:27] – créée bn8 | informatique:reseau:ldap:migration_bdb_hdb_mdb [2022/01/14 09:49] – bn8 |
---|
| |
**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//. |
| |
| **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. |
| |
Il faut d'abord charger le module //back_mdb// : | Il faut d'abord charger le module //back_mdb// : |
* Créer le fichier ///tmp/load-module.ldif// : <code ldif>dn: cn=module{0},cn=config | * Créer le fichier ///tmp/load-module.ldif// : <code>cat << EOF > /tmp/load-module.ldif |
| dn: cn=module{0},cn=config |
changetype: modify | changetype: modify |
add: olcModuleLoad | add: olcModuleLoad |
olcModuleLoad: back_mdb</code> | olcModuleLoad: back_mdb |
| EOF</code> |
* Jouer ce LDIF via //ldapmodify// : <code bash>ldapmodify -x -D cn=admin,cn=config -W -f /tmp/load-module.ldif | * Jouer ce LDIF via //ldapmodify// : <code bash>ldapmodify -x -D cn=admin,cn=config -W -f /tmp/load-module.ldif |
# Ou : | # Ou : |
ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/load-module.ldif</code> | 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 -f |
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>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 |
| * Corriger les //CRC// dans la configuration OpenLDAP |
| * 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/ && \ |
| check_slapdd_crc32 -f && \ |
| 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/ /tmp/load-module.ldif</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> |