Ldap dump
De BlaxWiki
Aller à la navigationAller à la rechercheCe script de dump est avancé, avec une rétention et purge des dumps. La fonction "send" est propre à la supervision sur cette plateforme et doit être supprimée (ou à adapter pour remonter une info).
- Infos supplémentaires :
Le backup d'un openldap utilisant ldbm ne peut se faire qu'a froid. Le support ldbm a d'ailleurs été supprime d'openldap 2.4 en partie en raison des problemes lies a l'utilisation de ce format (ce qui est notre cas ici). Sinon il faut convertir la base en bdb pour backuper à chaud
# Declaration des variables :
DATE=`date +%Y-%m-%d`
VISION="/opt/agarik/Vision/bin/bb_send_raw"
DISPLAY="supervision.agarik.com" # verifier si present dans /etc/host
TARGET="$(hostname | sed -e 's/\./,/g')"
SERVICE="backup"
BASEDN="dc=cned,dc=fr" # ligne "suffix" dans slapd.conf
ROOTDN="uid=root,dc=cned,dc=fr" # ligne "rootdn" dans slapd.conf
ROOTPW="uIpmul3r" # ligne "rootpw" dans slapd.conf
DESTDIR="/var/ldap_backup/CURRENT"
OLDESTDIR="/var/ldap_backup/OLD"
LOGDIR="/var/log/"
BIN_LDAPSEARCH="/opt/applis/openldap/bin/ldapsearch"
BIN_TMPWATCH="/usr/sbin/tmpwatch"
BIN_MKDIR="/bin/mkdir"
BIN_MV="/bin/mv"
LIFE_MESSAGE="1560"
RETENTION_TIME="192" # en heures
# Supervision
Send(){
"${VISION}" "${DISPLAY}" "status+${LIFE_MESSAGE} ${TARGET}.${SERVICE} ${1} $(date) ${SERVICE} ${2}"
}
# Execution du dump :
exec 1> $LOGDIR/slapdump.ok
exec 2> $LOGDIR/slapdump.error
for binary in $BIN_LDAPSEARCH $BIN_TMPWATCH $BIN_MKDIR $BIN_MV; do
if [ ! -f $binary -a ! -x $binary ]; then
echo "Attention probleme lors du dump de cette nuit ! $binary n'existe pas" > $LOGDIR/slapdump.error
color="red"
Send "${color}" "$(cat $LOGDIR/slapdump.error)"
exit 1
fi
done
if [ ! -d $DESTDIR ]; then $BIN_MKDIR -p $DESTDIR;
if [ $? != 0 ]; then
echo "Attention probleme lors du dump de cette nuit ! Répertoire de destination $DESTDIR du dump impossible à créer" > $LOGDIR/slapdump.error
color="red"
Send "${color}" "$(cat $LOGDIR/slapdump.error)"
exit 1
fi
fi
if [ ! -d $OLDESTDIR ]; then $BIN_MKDIR -p $OLDESTDIR;
if [ $? != 0 ]; then
echo "Attention probleme lors du dump de cette nuit ! Répertoire de destination $OLDESTDIR des dumps impossible à créer" > $LOGDIR/slapdump.error
color="red"
Send "${color}" "$(cat $LOGDIR/slapdump.error)"
exit 1
fi
fi
# Purge des anciens dumps :
$BIN_TMPWATCH --mtime $RETENTION_TIME $OLDESTDIR
# Deplacement du dump de la veille dans OLD :
$BIN_MV $DESTDIR/* $OLDESTDIR/
# Backup
$BIN_LDAPSEARCH -x -D "$ROOTDN" -w "$ROOTPW" -b "$BASEDN" -LLL | gzip -9 > "${DESTDIR}/$( echo "$BASEDN" | sed -e 's/dc=//g' -e 's/,/./g').${DATE}.ldif"
if [ $? -ne 0 -o -s "$LOGDIR/slapdump.error" ]; then
echo "Attention probleme lors du dump de cette nuit!"
color="red"
Send "${color}" "$(cat "$LOGDIR/slapdump.error")"
exit 1
fi
# Vérification
if [ `find $DESTDIR -type f | wc -l` -gt 0 -a "`du -ks $DESTDIR | awk {'print $1'}`" -gt 4 ] ; then
echo "dump du schema OK"
else
echo "Attention probleme lors des dumps de cette nuit. Il n'y aucun schema backupé ou leur taille est de zero" >> $LOGDIR/slapdump.error
color="red"
Send "${color}" "$(cat "$LOGDIR/slapdump.error")"
exit 1
fi
echo "$(ls -lh "$DESTDIR")"
color="green"
Send "${color}" "$(cat "$LOGDIR/slapdump.ok")"
exit 0