LDAP: Backup mit slapcat vs ldapsearch

11

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

Aufgabe: Erstellen Sie ein Skript crontabzum Erstellen einer vollständigen vollständigen Datenbanksicherung.

1) slapcat- Erstellen Sie eine Datei im Standardformat Berkeley DB.

2) slapcatkann während der slapdAusführung durchgeführt werden (wenn die bdb/hdbDatenbank verwendet wird).

3) Zum Wiederherstellen der Datei nach slapcat- muss verwendet werden slapadd(nicht ldapadd).

4) slapcat/adderfordert kein Passwort.

5) slapaddkann nur im slapdgestoppten Zustand durchgeführt werden.

Beispiel:

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

Anstelle von slapcat/add- werfen wir einen Blick auf ldapsearch/add:

1) ldapsearch- erstellt eine Datei mit fast den gleichen Informationen wie slapcat;

2) ldapadd- kann Datei von verwenden ldapsearch, muss nicht slapdgestoppt werden;

3) ldapadd/search- erfordert Passwort.

Beispiel:

 $ 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

Die Frage lautet also:

1) Vermisse ich etwas in dieser Werkzeugbeschreibung?

2) Was ist der Unterschied zwischen ldapadd/slapaddund ladpsearch/slapcat?

Setevoy
quelle

Antworten:

12

Gute Zusammenfassung, einige zusätzliche Punkte:

  • slapcatDumps von jedem (lokalen) Direktspeicher-Backend, es muss nicht Berkeley (hdb oder bdb) sein, es funktioniert auch mit OLC ( cn=config). Es wird im LDIF-Format ausgegeben . (Mit direkt meine ich direkt von OpenLDAP verwaltet, nicht zum Beispiel ein SQL-Backend, auch wenn es lokal gespeichert ist.)
  • ldapadderfordert, dass slapd ausgeführt wird , slapadderfordert, dass es nicht ausgeführt wird
  • ldapsearcherfordert, dass ausgeführt slapd wird , slapcatist es egal, ob es mit einem BDB-Backend ausgeführt wird, wie Sie bemerkt haben

Zusamenfassend:

  • slapcatAuf diese Weise erhalten Sie ein gutes Backup, das Sie schnell wiederherstellen können, wenn auch mit Ausfallzeiten auf dem Master (Sie können dies mit verschiedenen Arten der eingerichteten Replikation umgehen). Dies sollten Sie für eine allgemeine Sicherung und für Sicherungen vor dem Upgrade verwenden.
  • ldapsearch(ohne +) erhalten Sie ein portables Backup, das Sie wahrscheinlich ohne große Schwierigkeiten auf einen anderen Verzeichnisserver laden können, aber es ist nur eine praktikable Wiederherstellung in einer einfachen OpenLDAP-Einrichtung (keine Replikation, keine speziellen Overlays, kein Umschreiben) und wenn Es ist Ihnen egal, ob Sie UUID beibehalten / Metadaten erstellen / ändern. Sie benötigen zusätzliche Schemadateien, die auch zu Ihren Daten passen.
  • ldapadd(unter Verwendung seiner anderen Identität ldapmodify) kann verwendet werden, um LDAP-Änderungen (Ändern, Löschen und Umbenennen von Objekten), die mit slapadd/ slapcatallein nicht möglich oder möglich sind, einfach anzuwenden

Für die meisten Administratoren ergeben sich die Hauptüberlegungen aus den jeweils geringfügig unterschiedlichen Inhalten des LDIF und der Anforderung, ausgeführt slapdzu werden (oder nicht). Die wichtigeren Unterschiede sind:

  1. slapcatist schneller, weil es einfach die Datenbank speichert und die LDAP-Protokoll-Overheads, Authentifizierung, Zugriffskontrolle, Objekt- und Zeitlimits sowie Überlagerungen überspringt; und es wird nicht gemäß der LDAP-Hierarchie gesucht.
  2. slapaddist schneller (wieder kein LDAP-Protokoll-Overhead), und falls Sie ein bekanntermaßen funktionsfähiges Backup wiederherstellen, können Sie es im Schnellmodus ( -q) ausführen , um große Importe zu beschleunigen. Sie können auch die Schemaüberprüfung ( -s) deaktivieren. Beachten Sie jedoch, dass kleine Änderungen des Schemas oder der Datenüberprüfung zwischen OpenLDAP-Versionen keine Seltenheit sind.
  3. slapcatist auf lokale Datenbanken beschränkt und wird nicht wie gewünscht in andere Verzeichnisse (z. B. mit back-ldap, back-meta) ldapsearchübergehen. Gleiches gilt für slapadd/ ldapadd.
  4. ldapsearchgibt dynamische Attribute zurück, die nicht in einem Backend gespeichert sind, z. B. hasSubordinatesoder solche, die von Overlays (z slapo-memberof. B. ) verwaltet werden. Sie haben Probleme beim Laden dieser ldapadd(z. B. Betriebsattribute ohne Benutzermodifikation). Das Umschreiben (slapo-rwm) kann auch die ldapsearchAnsicht des Verzeichnisinhalts verzerren .
  5. slapcatEnthält interne (Betriebs-) Attribute. Wenn Sie die Replikation verwenden, sind diese Attribute von entscheidender Bedeutung. Bei der Replikation sind Sie etwas weniger auf Sicherungen angewiesen. Wenn Sie ldapaddjedoch Ihren Master neu laden, wird jedes Objekt durch Replikation neu erstellt (geändert entryUUID entryCSN). Sie können jedoch Betriebsattribute einschließen, indem Sie das spezielle Attribut "+" mit ldapsearch(oder allopOverlay) verwenden. Dies ist nicht dasselbe wieslapcat im vorherigen Punkt, warum dies so ist. Zu diesen Attributen gehören auch das Erstellen / Ändern von DN und Zeitstempeln, was für einige Anwendungen wichtig sein kann.
  6. Da slapcatdie LDAP-Hierarchie nicht beachtet wird (implizite Reihenfolge), gibt es keine Garantie dafür, dass die Datenreihenfolge mit der Reihenfolge realisierbar ist ldapadd- dh selbst wenn Sie die Betriebsattribute entfernen, ldapaddkönnen Sie sich beschweren, weil Untergebene möglicherweise vor ihren Vorgesetzten (Eltern) erscheinen. . Für die LDAP-Spezifikationen muss ein übergeordnetes Element vorhanden sein, die Reihenfolge der Suchergebnisse bleibt jedoch in dieser Hinsicht undefiniert. Siehe Howards Kommentar unten, OpenLDAP unterstützt slapaddstillschweigend ungeordnete Daten für einige Backends. Zur Not können Sie slapadddie Option -c" Weiter bei Fehler" ( ) möglicherweise wiederholt verwenden, bis alle "außer Betrieb" -Eltern erstellt sind. Sie hören auf, wenn Sie keinen Fehlercode 32 mehr erhalten (kein solches Objekt,
  7. ldapadd unterliegt den LDAP-Regeln und Überlagerungen, z. B. referenzielle Integrität, Richtlinien (Kennwortrichtlinie)
  8. slapcatbevorzugt die Verwendung von Base-64-codierten Attributwerten für mindestens userPassword (angegeben ::nach dem Attributnamen)
  9. ldapsearchbietet mehr Optionen für die LDIF-Formatierung und das Schreiben großer Attribute in separate Dateien. Es kann auch Verweise und Aliase verarbeiten .
mr.spuratic
quelle
Die LDAP-Ergebnisreihenfolge ist undefiniert. Sowohl slapcat als auch ldapsearch können Einträge in beliebiger Reihenfolge zurückgeben. Es wird garantiert, dass keine Ausgabe in der für ldapadd geeigneten Reihenfolge vorliegt. Die bdb / hdb / mdb-Treiber von slapadd haben spezielle Problemumgehungen, um Eingaben in beliebiger Reihenfolge zu verarbeiten, ldapadd jedoch nicht.
Hyc
slapcatGibt Einträge in der Reihenfolge der Datenbank (Backend) zurück, die möglicherweise genau definiert sind oder nicht. ldapsearchStandardmäßig wird in der Reihenfolge zurückgegeben, in der der Server antwortet. Bei OpenLDAP besteht die Wahl zwischen clientseitiger Sortierung (z. B. -S "") oder serverseitiger Sortiersteuerung (z. B. -E sssfalls unterstützt, und unterliegt einigen geringfügigen Bärenfallen im Zusammenhang mit Konfiguration und Schema). Die Spezifikation besagt, dass die Suchergebnisse in beliebiger Reihenfolge sein können. Eine Implementierung könnte eine Standardreihenfolge definieren. Die meisten Leute gehen davon aus, dass die Standardeinstellung "Eltern vor Kind" ist. Nur OpenDS dokumentiert dies, AFAIK.
mr.spuratic
2
Die Reihenfolge der Suchergebnisse in OpenLDAP ist absichtlich nicht dokumentiert. Da die Spezifikation bereits besagt, dass die Ergebnisse in beliebiger Reihenfolge vorliegen können, darf sich die Client-Software nicht auf eine bestimmte Reihenfolge verlassen. Das Sortieren der Ergebnisse kann natürlich durchgeführt werden, aber das erfordert viel mehr Ressourcen und ist normalerweise nicht interessant, wenn eine vollständige Sicherung durchgeführt wird. Die Datenbankreihenfolge ist relativ bedeutungslos, da Teilbäume das Verschieben von Zweigen an neue DIT-Speicherorte umbenennen können.
Hyc
1

slapcatfunktioniert nicht, wenn Sie Überlagerungen haben, z memberOf. Wenn Sie also eine slapcat/ slapaddCycle-Mitgliedschaft erstellen, funktionieren Overlays nicht mehr.

Robert Munteanu
quelle