Différences entre les versions de « Ldap dump »

De BlaxWiki
Aller à la navigationAller à la recherche
(Page créée avec « Ce 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 à... »)
 
m (Admin a déplacé la page Openldap dump vers Ldap dump)
 
(2 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 5 : Ligne 5 :
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  
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
ce format (ce qui est notre cas ici). Sinon il faut convertir la base en bdb pour backuper à chaud


<pre>
<pre>
#!/bin/sh
# Declaration des variables :
 
DATE=`date +%Y-%m-%d`
DATE=`date +%Y-%m-%d`
DUMP_LOG="/var/log/ldapdump.log"
DESTDIR="/opt/data/ldap_backup/CURRENT"
OLDESTDIR="/opt/data/ldap_backup/OLD"
LOGDIR="/var/log/"
SERVICE="backup"
VISION="/opt/agarik/Vision/bin/bb_send_raw"
VISION="/opt/agarik/Vision/bin/bb_send_raw"
DISPLAY="supervision.agarik.com"
DISPLAY="supervision.agarik.com" # verifier si present dans /etc/host
TARGET="$(hostname | sed -e 's/\./,/g')"
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"
LIFE_MESSAGE="1560"
RETENTION_TIME="192" # en heures
RETENTION_TIME="192" # en heures


# Supervision
# Supervision
Send()
Send(){
{
        "${VISION}" "${DISPLAY}" "status+${LIFE_MESSAGE} ${TARGET}.${SERVICE} ${1} $(date) ${SERVICE} ${2}"
"${VISION}" "${DISPLAY}" "status+${LIFE_MESSAGE} ${TARGET}.${SERVICE} ${1} $(date) ${SERVICE} ${2}"
}
}
if [ ! -d $DESTDIR ]; then mkdir -p $DESTDIR;fi
if [ ! -d $OLDESTDIR ]; then mkdir -p $OLDESTDIR;fi
#  Purge des anciens dumps :
/usr/sbin/tmpwatch 192 $OLDESTDIR
# Deplacement du dump de la veille dans OLD :
mv $DESTDIR/* $OLDESTDIR/


# Execution du dump :
# Execution du dump :
exec 1> $LOGDIR/ldapdump.ok
exec 1> $LOGDIR/slapdump.ok
exec 2> $LOGDIR/ldapdump.error
exec 2> $LOGDIR/slapdump.error


# OpenLDAP stop
for binary in $BIN_LDAPSEARCH $BIN_TMPWATCH $BIN_MKDIR $BIN_MV; do
/etc/init.d/slapd stop
        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


CHECK=`/sbin/pidof slapd|wc -l`
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 [ $CHECK -gt 0 ]
if [ ! -d $OLDESTDIR ]; then $BIN_MKDIR -p $OLDESTDIR;
then
        if [ $? != 0 ]; then
        for i in `ps aux | grep -v grep | grep slapd | awk '{print $2}'`
                echo "Attention probleme lors du dump de cette nuit ! Répertoire de destination $OLDESTDIR des dumps impossible à créer" > $LOGDIR/slapdump.error
        do
                color="red"
                 kill $i
                 Send "${color}" "$(cat $LOGDIR/slapdump.error)"
         done
                exit 1
         fi
fi
fi


# Do the export
# Purge des anciens dumps :
/opt/applis/openldap/sbin/slapcat -l $DESTDIR/backup-$DATE.ldif -f /opt/applis/openldap/etc/openldap/slapd.conf
$BIN_TMPWATCH --mtime $RETENTION_TIME $OLDESTDIR


# OpenLDAP start
# Deplacement du dump de la veille dans OLD :
/etc/init.d/slapd start
$BIN_MV $DESTDIR/* $OLDESTDIR/
 
if [ $? -ne 0 -o -s $LOGDIR/ldapdump.error ]; then
                        echo "Attention probleme lors des dumps ldap de cette nuit!"
                        color="red"
                        Send "${color}" "$(cat $LOGDIR/ldapdump.error)"
                        exit 1
                fi


# 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 "dumps des bases ldap OK"
echo "$(ls -lh "$DESTDIR")"
echo "`ls -lh $DESTDIR`"
color="green"
color="green"
Send "${color}" "$(cat $LOGDIR/ldapdump.ok)"
Send "${color}" "$(cat "$LOGDIR/slapdump.ok")"
exit 0
exit 0
</pre>
</pre>
[[Catégorie:Script]]
[[Catégorie:Script]]

Version actuelle datée du 17 septembre 2018 à 09:38

Ce 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