Recuperando um ldap com problemas ( base corrompida )

Servidores e redes elétricas são sempre um problema. Um cliente que tenho sempre tem este tipo de problema e vira e mexe alguma coisa em um servidor corrompe por causa disto. 
Bom, um dos servidores dele reiniciou várias vezes no final de semana, por panes elétricas e hoje, recebi uma ligação que ninguém conseguia conectar ao email .

Ao chegar ao servidor e olhar os logs, notei que havia sempre problemas na consulta da base ldap. 
Procurei o processo do servidor ldap e ele não estava lá ... pronto, achei o famigerado problema.

De cara, a primeira coisa a ser feita, é parar o processo do ldap. Como era um CentOS: 

# service ldap stop 

Pronto, agora é começar a trabalhar, e tentar recuperar a base ldap. No CentOS por ser baseado em um Red Hat, o comando para recuperar a base é : 

# /usr/sbin/slapd_db_recover -h /var/lib/ldap

Neste ponto, se você for sortudo, como eu, a coisa já está resolvida. É só reincializar o processo do ldap e todos os processos que utilizam dele, e aproveitar o seu servidor de volta. 

Mas, e se o servidor não voltar ? O que faço. 

Primeira coisa, prepare-se, porque daqui em diante a coisa fica hardcore, principalmente se você não mantém uma política de backup efetiva do seu ldap. 

Pare novamente o ldap server e faça uma cópia do estado atual do mesmo : 

# tar -cvzf ldap.tar.gz /var/lib/ldap 

Pronto, feito isto guarde isto aí em lugar bem seguro, porque caso haja algum problema, você pode recuperar o estado anterior. 

Agora, é rodar novamente os comandos para tentar recuperar a base : 

# /usr/sbin/slapd_db_recover -h /var/lib/ldap

Pronto, agora é tentar rodar o comando para mandar sua base ldap para um arquivo : 

# slapcat -l ldap.ldif

Agora é olhar se o seu arquivo ldif contém todas as entradas do seu antigo ldap. 
Caso não encontre, é chegar ao modo desespero, pois você vai ter que rodar a recuperação da base do ldap em modo catastrófico :

# /usr/sbin/slapd_db_recover -h /var/lib/ldap -v -c 

Rode novamente o slapcat e tenha certeza que não houve nenhum erro. 

A partir daí, é recuperar a  base de dados. Limpe o diretório do ldap e execute o comando : 

# slapadd -l lap.ldif 

Pronto, depois é recuperar as permissões do diretório : 

# chown -R ldap:ldap /var/lib/ldap

E reiniciar o ldap. A partir daí todos os processo que o usam estaram novamente em funcionamento. 

Caso todos os passos acima falhem .... é melhor mesmo que tenha um backup da base ...