LDAP: backup com slapcat vs ldapsearch

9

Usado: openldap-servers-2.4.23-34.el6_5.1.x86_64

Tarefa: criar script para crontab para criar backup completo do banco de dados agendado.

1) slapcat - cria o arquivo no formato padrão, Berkeley DB.

2) slapcat pode ser feito enquanto slapd em execução (se bdb/hdb banco de dados for usado).

3) Para restaurar o arquivo após slapcat - deve ser usado slapdd (não ldapadd ).

4) slapcat/add não requer senha.

5) slapadd pode ser feito somente quando slapd parou.

Exemplo:

 $ slapcat -f /etc/openldap/slapd.conf -b "dc=db_1" -l db_1_backup.ldif
 $ slapadd -l db_1_backup.ldif

Em vez de slapcat/add - vamos dar uma olhada em ldapsearch/add :

1) ldapsearch - cria um arquivo com quase as mesmas informações que slapcat ;

2) ldapadd - pode usar o arquivo de ldapsearch , não é necessário que slapd seja parado;

3) ldapadd/search - requer senha.

Exemplo:

 $ ldapsearch -D "cn=root,dc=db_1" -W -b "dc=db_1" "dc=db_1" -LLL > db_1_backup2.ldif
 $ ldapadd -x -D "cn=root,dc=db_1" -W -f db_1_backup2.ldif

Então - pergunta é:

1) eu perdi alguma coisa nesta descrição de ferramentas?

2) o que mais é diferença bitween ldapadd/slapadd e ladpsearch/slapcat ?

    
por setevoy 21.02.2014 / 15:07

2 respostas

10

Bom resumo, alguns pontos adicionais:

  • slapcat despeja de qualquer que seja o backend de armazenamento direto (local), ele não precisa ser Berkeley (hdb ou bdb), ele também funciona com OLC ( cn=config ). Despeja para o formato LDIF . (Por direta eu quero dizer diretamente gerenciado pelo OpenLDAP, não por exemplo, um backend SQL, mesmo que seja armazenado localmente.)
  • ldapadd requer que o slapd esteja em execução, slapadd requer que não esteja em execução
  • ldapsearch requer que slapd esteja em execução, slapcat não se importa se está sendo executado com um back-end do BDB, como você observou

Resumindo:

  • slapcat é o caminho para obter um bom backup que você pode restaurar rapidamente, embora com tempo de inatividade no mestre (você pode contornar isso com vários tipos de configuração de replicação). Isso é o que você deve usar para um backup geral e backups pré-upgrade.
  • ldapsearch (sem + ) vai te dar um backup portável que você provavelmente pode carregar com pouca dificuldade em qualquer outro servidor de diretório, mas será apenas uma restauração viável em uma configuração simples do OpenLDAP ( sem replicação, sem sobreposições especiais, sem reescrever), e se você não se importa em preservar metadados UUID / create / modify. Você precisará de arquivos de esquema extras que acompanhem seus dados também.
  • ldapadd (usando sua outra identidade ldapmodify ) pode ser usado para aplicar facilmente modificações LDAP (modificar, excluir e renomear objetos) que não são viáveis ou possíveis com slapadd / slapcat sozinho

Para a maioria dos administradores, as principais considerações surgem do conteúdo ligeiramente diferente do LDIF em cada caso e do requisito de que slapd esteja em execução (ou não). As diferenças mais importantes são:

  1. slapcat é mais rápido porque simplesmente despeja o banco de dados, ignorando os overheads do protocolo LDAP, autenticação, controle de acesso, limites de tempo e objeto, sobreposições; e não pesquisa de acordo com a hierarquia LDAP.
  2. slapadd é mais rápido (novamente, sem overheads do protocolo LDAP) e, no caso de você estar restaurando um backup em bom estado, pode executar em modo rápido ( -q ) para acelerar grandes importações . Você também pode desativar a verificação de esquema ( -s ), embora note que pequenas alterações no esquema ou validação de dados entre as versões do OpenLDAP não são desconhecidas.
  3. slapcat está limitado a bancos de dados locais, ele não será cruzado para outros diretórios (por exemplo, com back-ldap , back-meta ) como ldapsearch . O mesmo se aplica a slapadd / ldapadd .
  4. ldapsearch retornará atributos dinâmicos que não são armazenados em um back-end, por exemplo, hasSubordinates ou aqueles mantidos por sobreposições (por exemplo, slapo-memberof ). Você terá problemas para carregá-los com ldapadd (por exemplo, atributos operacionais sem modificação do usuário). Reescrevendo (slapo-rwm) também pode distorcer a visão de ldapsearch do conteúdo do diretório.
  5. slapcat inclui atributos internos (operacionais), se você estiver usando a replicação, esses atributos serão críticos. Com a replicação, você é um pouco menos dependente de backups, mas se usar ldapadd para recarregar seu mestre, todos os objetos serão recriados por replicação (alterado entryUUID entryCSN ) Embora você possa incluir atributos operacionais usando o atributo "+" especial com ldapsearch (ou allop overlay), isso não é a mesma coisa que slapcat , consulte o ponto anterior para saber por que isto é tão. Esses atributos também incluem criar / modificar DN e timestamps, que podem ser importantes para alguns aplicativos.
  6. porque slapcat não observa a hierarquia LDAP (ordenação implícita), não há garantia de que sua ordenação de dados será viável com ldapadd - ou seja, mesmo se você remover os atributos operacionais, ldapadd poderá reclamar porque sub-ordenadas podem aparecer diante de seus superiores (pais). As especificações do LDAP exigem que um pai exista, mas também deixam o resultado da pesquisa ordenado indefinido a esse respeito. Veja o comentário de Howard abaixo, o slapadd do OpenLDAP suporta silenciosamente dados não ordenados para alguns backends. Em uma pitada, você pode usar repetidamente slapadd com a opção continuar no erro ( -c ) até que todos os pais "fora de ordem" sejam criados, parando quando você não receber mais nenhum código de erro 32 (nenhum desses objetos , significando pai ausente) e receber apenas o código 68 (já existente) para cada objeto.
  7. ldapadd está sujeito às regras e superposições do LDAP, por exemplo integridade referencial, ppolicy (política de senha)
  8. slapcat prefere usar valores de atributo codificados na base 64 para pelo menos userPassword (indicado com :: após o nome do atributo)
  9. ldapsearch tem mais opções para formatação LDIF e grava atributos grandes em arquivos separados. Ele também pode lidar com referências e aliases .
por 26.03.2014 / 12:39
1

slapcat não funciona se você tiver sobreposições, por exemplo %código%. Portanto, se você fizer uma sobreposição de associações memberOf / slapcat cycle não funcionará mais.

    
por 27.10.2015 / 22:32