Restauração de backup do Openldap

6

Estou tentando configurar o backup e a restauração e garantir que funcione.

Observe que o tamanho do banco de dados em ldap.old é muito maior que o ldap . O /var/lib/ldap.old é meu banco de dados existente. Eu renomei /var/lib/ldap para testes de backup / restauração.

Estou recebendo o seguinte erro ao restaurar. Por causa disso, não tenho certeza se recuperei tudo com sucesso.

...
added: "uid=user11123,ou=Abcd,ou=Industry Professional,dc=testdomain,dc=org" (0001cc9f)
added: "uid=user13123,ou=Abcd,ou=Industry Professional,dc=testdomain,dc=org" (0001cca0)
Error, entries missing!
  entry 79870: ou=industryprofessional,dc=testdomain,dc=org
  entry 79871: ou=abcd professional,ou=industryprofessional,dc=testdomain,dc=org

Uso do disco:

[root@openldap]# du -khs ldap ldap.old/
3.3G    ldap
4.0G    ldap.old/

Aqui está o meu processo de backup / restauração:

Backup:

slapcat -v -l backup_openldap.ldif

Restaurar:

/etc/init.d/ldap stop
mv /var/lib/ldap /var/lib/ldap.old
mkdir /var/lib/ldap
chmod go-rwx /var/lib/ldap
cp –rfp /var/lib/ldap.old/DB_CONFIG /var/lib/ldap

slapadd –v –l backup_openldap.ldif

chown ldap:ldap /var/lib/ldap
/etc/init.d/ldap start

Como eu confirmo que restaurei todos os registros com sucesso?

    
por Raza 10.05.2013 / 00:55

1 resposta

4

Antes de mais nada, você deve estar ciente das limitações do :

do slapcat
For some backend types, your slapd(8) should not be running 
(at least, not in read-write mode) when you do this to ensure 
consistency of the database. It is always safe to run slapcat 
with the slapd-bdb(5), slapd-hdb(5), and slapd-null(5) backends. 

Portanto, é melhor empacotar esse backup em /etc/init.d/ldap stop e /etc/init.d/ldap start também.

Antes de reiniciar ldap no procedimento de restauração, você pode despejar os dados recém-carregados em um arquivo temporário e compará-los ao arquivo LDIF que você acabou de usar como entrada. Tenho certeza que a saída LDIF para slapcat é classificada por Nomes Distintos, portanto, um diff deve sair com o código de saída 0.

...
chown ldap:ldap *

slapcat -l /var/tmp/test.ldif
diff /var/tmp/test.ldif /backup/openldap/backup_ldap2.diff
if [ $? != 0 ] ; then
     echo 'differences found'
fi

/etc/init.d/ldap start

Isso pressupõe que slapcat esteja funcionando corretamente. Se você não confia que deve extrair todos os dados relevantes para você , do banco de dados em execução com ldap_search_ext() , gere alguma saída (dump ou soma de verificação), e compare isso com a execução do mesmo código no banco de dados restaurado (depois de iniciar ldap , claro). Dessa forma, você notaria se alguns dados relevantes para o seu uso são deixados de fora do dump por slapcat (improvável, mas possível se tiver um bug)

    
por 10.05.2013 / 11:23