LDAP: backup con slapcat vs ldapsearch


11

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

Attività: creare uno script per crontabcreare il backup completo del database pianificato.

1) slapcat- crea il file nel formato predefinito, Berkeley DB.

2) slapcatpuò essere eseguito durante l' slapdesecuzione (se si bdb/hdbutilizza il database).

3) Per ripristinare il file dopo slapcat- deve essere utilizzato slapadd(non ldapadd).

4) slapcat/addnon richiede password.

5) slapaddpuò essere fatto solo quando è slapdfermo.

Esempio:

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

Invece di slapcat/add- diamo un'occhiata a ldapsearch/add:

1) ldapsearch- crea un file con quasi le stesse informazioni di slapcat;

2) ldapadd: è possibile utilizzare il file da ldapsearch, non è necessario slapdarrestarlo;

3) ldapadd/search- richiede una password.

Esempio:

 $ 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

Quindi - la domanda è:

1) Mi manca qualcosa nella descrizione di questi strumenti?

2) Cos'altro c'è differenza tra ldapadd/slapadde ladpsearch/slapcat?

Risposte:


12

Buon riassunto, alcuni punti aggiuntivi:

  • slapcatdump da qualunque sia il backend di archiviazione diretta (locale), non deve necessariamente essere Berkeley (hdb o bdb), funziona anche con OLC ( cn=config). E discariche al formato LDIF . (Per diretto intendo gestito direttamente da OpenLDAP, non ad esempio un backend SQL, anche se memorizzato localmente.)
  • ldapaddrichiede che slapd sia in esecuzione, slapaddrichiede che non sia in esecuzione
  • ldapsearchrichiede che slapd sia in esecuzione, slapcatnon importa se è in esecuzione con un backend BDB, come hai notato

In breve:

  • slapcatè il modo per ottenere un buon backup che è possibile ripristinare rapidamente, anche se con tempi di inattività del master (è possibile aggirare il problema con vari tipi di configurazione della replica). Questo è ciò che è necessario utilizzare per un backup generale e per i backup pre-aggiornamento.
  • ldapsearch(senza +) ti fornirà un backup portatile che puoi probabilmente caricare con poca difficoltà in qualsiasi altro server di directory, ma sarà solo un ripristino praticabile in una semplice configurazione OpenLDAP (nessuna replica, nessun overlay speciale, nessuna riscrittura), e se non ti interessa preservare l'UUID / creare / modificare i metadati. Avrai bisogno di qualsiasi file di schema aggiuntivo che accompagni anche i tuoi dati.
  • ldapadd(usando la sua altra identità ldapmodify) può essere utilizzato per applicare facilmente modifiche LDAP (modifica oggetto, eliminazione e rinomina) che non sono fattibili o possibili con slapadd/ slapcatda solo

Per la maggior parte degli amministratori le considerazioni principali derivano dai contenuti leggermente diversi del LDIF in ciascun caso e dal requisito slapddi essere in esecuzione (o meno). Le differenze più importanti sono:

  1. slapcatè più veloce perché scarica semplicemente il database, saltando le spese generali del protocollo LDAP, l'autenticazione, il controllo degli accessi, i limiti di oggetto e di tempo, le sovrapposizioni; e non cerca secondo la gerarchia LDAP.
  2. slapaddè più veloce (di nuovo, nessun sovraccarico del protocollo LDAP) e nel caso in cui si stia ripristinando un backup noto, è possibile eseguire in modalità rapida ( -q) per accelerare le grandi importazioni. Puoi anche disabilitare il controllo dello schema ( -s), anche se non sono inauditi piccoli cambiamenti nello schema o nella convalida dei dati tra le versioni di OpenLDAP.
  3. slapcatè limitato ai database locali, non passerà ad altre directory (ad es. con back-ldap, back-meta) ldapsearch. Lo stesso vale per slapadd/ ldapadd.
  4. ldapsearchrestituirà attributi dinamici che non sono memorizzati in un back-end, ad esempio hasSubordinateso quelli gestiti da overlay (ad esempio slapo-memberof). Avrai problemi a caricarli con ldapadd(es. Attributi operativi con nessuna modifica dell'utente). La riscrittura (slapo-rwm) può anche distorcere ldapsearchla visione del contenuto della directory.
  5. slapcatinclude attributi interni (operativi), se si utilizza la replica questi attributi sono fondamentali. Con la replica allora sei un po 'meno dipendente dai backup, ma se usi ldapaddper ricaricare il tuo master, ogni oggetto verrà ricreato dalla replica (modificato entryUUID entryCSN) Sebbene tu possa includere attributi operativi usando l'attributo speciale "+" con ldapsearch(o allopoverlay), non è la stessa cosaslapcat , vedi il punto precedente per capire perché è così. Questi attributi includono anche creare / modificare DN e timestamp, che possono essere importanti per alcune applicazioni.
  6. poiché slapcatnon osserva la gerarchia LDAP (ordinamento implicito), non vi è alcuna garanzia che il suo ordinamento dei dati sarà fattibile ldapadd- cioè anche se si eliminano gli attributi operativi, si ldapaddpuò lamentare perché le sotto-ordinate possono comparire davanti ai loro superiori (genitori) . Le specifiche LDAP richiedono l'esistenza di un genitore, ma anche l'ordinamento dei risultati della ricerca non è definito in questo senso. Vedi il commento di Howard di seguito, OpenLDAP slapaddsupporta silenziosamente i dati non ordinati per alcuni backend. In un pizzico potresti essere in grado di utilizzare ripetutamente slapaddcon l'opzione continue on error ( -c) fino a quando non vengono creati tutti i genitori "fuori servizio", interrompendo quando non ricevi più alcun codice di errore 32 (nessun oggetto del genere,
  7. ldapadd è soggetto alle regole e agli overlay LDAP, ad es. integrità referenziale, ppolicy (politica password)
  8. slapcatpreferisce utilizzare i valori degli attributi codificati in base 64 per almeno userPassword (indicato con ::dopo il nome dell'attributo)
  9. ldapsearchha più opzioni per la formattazione LDIF e la scrittura di attributi di grandi dimensioni in file separati. Può anche gestire riferimenti e alias .

L'ordine dei risultati LDAP non è definito. Sia slapcat che ldapsearch possono restituire voci in ordine arbitrario, né è garantito che l'output sia nell'ordine adatto per l'uso con ldapadd. I driver bdb / hdb / mdb di slapadd hanno soluzioni alternative speciali per elaborare l'input in ordine arbitrario, ldapadd no.
hyc,

slapcatrestituisce le voci nell'ordine del database (backend), che può essere o non essere ben definito. ldapsearchper impostazione predefinita ritorna nell'ordine in cui il server risponde, con OpenLDAP esiste la scelta dell'ordinamento lato client (ad esempio -S "") o del controllo dell'ordinamento lato server (ad esempio -E sss, se supportato, e soggetto ad alcune trappole d'orso minori relative alla configurazione e allo schema). Le specifiche indicano che i risultati della ricerca potrebbero essere in qualsiasi ordine. Un'implementazione potrebbe definire un ordine predefinito, la maggior parte delle persone assume che l'impostazione predefinita sia "padre prima del figlio", solo OpenDS lo documenta, AFAIK.
mr.spuratic

2
L'ordine dei risultati della ricerca in OpenLDAP è intenzionalmente non documentato. Poiché la specifica dice già che i risultati potrebbero essere in qualsiasi ordine, il software client non deve fare affidamento su alcun ordine particolare. L'ordinamento dei risultati può ovviamente essere fatto ma ciò richiede molte più risorse e in genere non è interessante quando si esegue un backup completo. L'ordine del database è relativamente insignificante, data la possibilità che i sottotree rinominino lo spostamento dei rami in nuove posizioni DIT.
hyc,

1

slapcatnon funziona se si hanno sovrapposizioni, ad es memberOf. Quindi, se esegui un overlay di appartenenza slapcat/ slapaddciclo non funzionerà più.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.