====== Sauvegardes & restaurations ======
===== Sauvegardes =====
slapcat -b o=example > /tmp/dump.ldif
===== Restauration =====
service slapd stop
rm -fr /var/lib/ldap/*.mdb
slapadd -b o=example -l /tmp/dump.ldif -q
chown openldap: -R /var/lib/ldap
service slapd start
===== Dump/restore avec minimisation du temps d'interruption =====
Dans certaine situation, par exemple après la suppression d'un attribut, il peut être nécessaire de dump/restore la base de données. Dans cette situation et en l'absence d'écriture dans la base, la procédure suivante permet de réduire le temps d’interruption à un redémarrage du service :
**Le temps de la manipulation, les données vont être dupliquées sur le disque.** Assurez-vous d'avoir l'espace disque nécessaire pour cela.
Afin de minimiser le temps de coupure, la nouvelle base est stockée dans le même système de fichiers que la base en production.
Si vous n'avez pas l'espace disque nécessaire pour cela dans ce système de fichiers, vous pouvez stocker la nouvelle base dans un autre endroit (par exemple ''/var/tmp/ldap''). Lors de la bascule, utiliser alors la commande ''rsync'' avec le paramètre ''--sparse'' :
rsync -av --sparse /var/tmp/ldap/ /var/lib/ldap
* Commencer par cloner la configuration du service en y modifiant le dossier de stockage de la base :
rsync -av /etc/ldap/slapd.d/ /var/tmp/slapd.d/
sed -i 's|/var/lib/ldap$|/var/lib/ldap/new|' '/var/tmp/slapd.d/cn=config/olcDatabase={1}mdb.ldif'
grep olcDbDirectory '/var/tmp/slapd.d/cn=config/olcDatabase={1}mdb.ldif'
* Corriger les CRC32 dans cette nouvelle configuration :
[ ! -d /usr/local/src/check_slapdd_crc32 ] && git clone https://gogs.zionetrix.net/bn8/check_slapdd_crc32.git /usr/local/src/check_slapdd_crc32
[ ! -e /usr/local/sbin/check_slapdd_crc32 ] && ln -s /usr/local/src/check_slapdd_crc32/check_slapdd_crc32 /usr/local/sbin/check_slapdd_crc32
check_slapdd_crc32 -p /var/tmp/slapd.d/ -f
* **Stopper les écritures sur la base à partir de maintenant !** En cas d'infrastructure multi-master, l'autre serveur pourra assurer réplication des modifications après reprise.
* Dump/restore de la base dans le nouvel emplacement :
mkdir /var/lib/ldap/new
slapcat |slapadd -F /var/tmp/slapd.d/ -q
* Stopper le service le temps de basculer sur la nouvelle base :
service slapd stop
mkdir /var/lib/ldap/old
mv /var/lib/ldap/*.mdb /var/lib/ldap/old/
mv /var/lib/ldap/new/*.mdb /var/lib/ldap/
chown openldap: -R /var/lib/ldap
service slapd start
* Si tout va bien, un peu de nettoyage : rm -fr /var/lib/ldap/old/ /var/tmp/slapd.d/ /var/lib/ldap/new/