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 ...