MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Eine Einführung in Percona Server für MongoDB 4.2

Bei der Auswahl einer NoSQL-Datenbanktechnologie sollten wichtige Überlegungen wie Leistung, Belastbarkeit, Zuverlässigkeit und Sicherheit berücksichtigt werden. Diese Schlüsselfaktoren sollten auch, zumindest was die Datenbasis betrifft, an der Erreichung der Geschäftsziele ausgerichtet sein.

Viele Technologien sind ins Spiel gekommen, um diese Aspekte zu verbessern, und es ist für eine Organisation ratsam, die herausragenden Optionen zu verbessern und zu versuchen, sie in die Datenbanksysteme zu integrieren.

Neue Technologien sollten maximale Leistung gewährleisten, um das Erreichen von Geschäftszielen zu erschwinglichen Betriebskosten zu verbessern, aber mit manipulativeren Funktionen wie Fehlererkennung und Warnsystemen.

In diesem Blog besprechen wir die Percona-Version von MongoDB und wie sie die Leistungsfähigkeit von MongoDB auf vielfältige Weise erweitert.

Was ist Percona Server für MongoDB?

Damit eine Datenbank gut funktioniert, muss es einen optimal eingerichteten zugrunde liegenden Server geben, um Lese- und Schreibtransaktionen zu verbessern. Percona Server for MongoDB ist ein kostenloser Open-Source-Drop-In-Ersatz für die MongoDB Community Edition, jedoch mit zusätzlicher Funktionalität auf Unternehmensebene. Es wurde mit einigen wesentlichen Verbesserungen des standardmäßigen MongoDB-Server-Setups entwickelt.

Es bietet hohe Leistung, verbesserte Sicherheit und Zuverlässigkeit für optimale Leistung bei reduzierten Ausgaben für Beziehungen zu proprietären Softwareanbietern.

Percona-Server für MongoDB Herausragende Funktionen

Die MongoDB Community Edition ist der Kern des Percona-Servers, wenn man bedenkt, dass sie bereits wichtige Funktionen wie das flexible Schema, verteilte Transaktionen, Vertrautheit mit den JSON-Dokumenten und native Hochverfügbarkeit darstellt. Darüber hinaus integriert Percona Server für MongoDB die folgenden herausragenden Funktionen, die es ihm ermöglichen, die oben genannten Aspekte zu erfüllen:

  • Hot-Backups
  • Verschlüsselung von ruhenden Daten
  • Auditprotokollierung
  • Percona-Speicher-Engine
  • Externe LDAP-Authentifizierung mit SASL
  • HashiCorp Vault-Integration
  • Erweitertes Abfrageprofil

Hot-Backups 

Der Percona-Server für MongoDB erstellt eine physische Datensicherung auf einem laufenden Server im Hintergrund ohne merkliche Beeinträchtigung des Betriebs. Dies erreichen Sie, indem Sie den Befehl createBackup als Administrator in der Admin-Datenbank ausführen und das Sicherungsverzeichnis angeben.

> use admin

switched to db admin

> db.runCommand({createBackup: 1, backupDir: "/my/backup/data/path"})

{ "ok" : 1 }

Wenn Sie { "ok" :1 } erhalten, war die Sicherung erfolgreich. Andernfalls, wenn Sie beispielsweise einen leeren Backup-Verzeichnispfad angeben, erhalten Sie möglicherweise eine Fehlermeldung, z. B.:

{ "ok" : 0, "errmsg" : "Destination path must be absolute" }

Um die Sicherung wiederherzustellen, muss man zuerst die Mongod-Instanz stoppen, das Datenverzeichnis bereinigen, die Dateien aus dem Verzeichnis kopieren und dann den Mongod-Dienst neu starten. Führen Sie dazu den folgenden Befehl aus

$ service mongod stop && rm -rf /var/lib/mongodb/* && cp --recursive /my/backup/data/path /var/lib/mongodb/ && service mongod start

Sie können die Sicherung auch im Archivformat speichern, wenn Sie den Percona-Server für MongoDB 4.2.1-1 verwenden 

> use admin

> db.runCommand({createBackup: 1, archive: "path/to/archive.tar" })

Sie können mit den Standardeinstellungen oder mit weiteren Konfigurationen auch direkt in AWS S3 sichern. Für eine standardmäßige S3-Bucket-Sicherung:

> db.runCommand({createBackup:1,  s3:{bucket:"backup", path:"newBackup"}})

Data-at-Rest-Verschlüsselung

MongoDB Version 3.2 hat die Data-at-Rest-Verschlüsselung für die WiredTiger-Speicher-Engine eingeführt, um sicherzustellen, dass Datendateien nur von Parteien mit Entschlüsselungsschlüssel entschlüsselt und gelesen werden können. Die Datenverschlüsselung im Ruhezustand in Percona Server für MongoDB wurde in Version 3.6 eingeführt, um mit der Datenverschlüsselung im Ruhezustand in MongoDB Hand in Hand zu gehen. Die neueste Version enthält jedoch keine Unterstützung für Amazon AWS- und KIMP-Schlüsselverwaltungsdienste.

Die Verschlüsselung kann auch auf Rollback-Dateien angewendet werden, wenn ruhende Daten aktiviert sind. Percona Server für MongoDB verwendet die Option encodingCipherMode mit 2 selektiven Verschlüsselungsmodi:

  1. AES256-CBC (Standardverschlüsselungsmodus)
  2. AES256-GCM

Sie können Daten mit dem folgenden Befehl verschlüsseln

$ mongod ... --encryptionCipherMode or 

$ mongod ... --encryptionCipherMode AES256-GCM

Wir verwenden die Option --ecryptionKeyFile, um den Pfad zu einer Datei anzugeben, die den Verschlüsselungsschlüssel enthält.

$ mongod ... --enableEncryption --encryptionKeyFile <fileName>

Auditprotokollierung

Für jedes Datenbanksystem haben Administratoren den Auftrag, die stattfindenden Aktivitäten zu verfolgen. In Percona Server for MongoDB generiert der Server bei aktivierter Überwachung eine Überwachungsprotokolldatei, die Informationen zu verschiedenen Benutzerereignissen wie Autorisierung und Authentifizierung enthält. Wenn Sie den Server jedoch mit aktiviertem Auditing starten, werden die Protokolle während der Laufzeit nicht dynamisch angezeigt.

Die Audit-Protokollierung in der MongoDB Community Edition kann zwei Datenformate annehmen, nämlich JSON und BSON. Für Percona Server for MongoDB ist die Audit-Protokollierung jedoch nur auf die JSON-Datei beschränkt. Der Server protokolliert im Gegensatz zu MongoDB, das alles protokolliert, auch nur wichtige Befehle. Da das Filterverfahren in Percona hinsichtlich der Filtersyntax so unübersichtlich ist, würde das Aktivieren des Audit-Logs ohne Filter mehr Einträge bieten, die man auf eigene Spezifikationen eingrenzen kann.

Percona-Speicher-Engine

Dies ist eine spezielle Konfiguration der WiredTiger-Speicher-Engine, die keine Benutzerdaten auf der Festplatte speichert. Die Daten befinden sich vollständig im Hauptspeicher und sind ohne Weiteres verfügbar, mit Ausnahme von Diagnosedaten, die auf die Platte geschrieben werden. Dadurch wird die Datenverarbeitung viel schneller, wobei jedoch zu berücksichtigen ist, dass genügend Arbeitsspeicher für den Datensatz vorhanden ist und der Server nicht heruntergefahren werden sollte. Mit dem Befehl  --storageEngine kann eine zu verwendende Speicher-Engine ausgewählt werden. Für eine Speicher-Engine erstellte Daten können nicht mit anderen Speicher-Engines kompatibel sein, da jede Speicher-Engine ihr eigenes Datenmodell hat. Zum Beispiel, um die In-Memory-Speicher-Engine auszuwählen. Sie stoppen zuerst jede laufende Mongod-Instanz und geben dann die Befehle aus:

$ service mongod stop

$ mongod --storageEngine inMemory --dbpath <newDataDir>

Wenn Sie bereits einige Daten mit Ihrer standardmäßigen MongoDB Community Edition haben und auf die Percona Memory Engine migrieren möchten, verwenden Sie einfach die Dienstprogramme mongodumb und mongorestore, indem Sie den folgenden Befehl eingeben:

$ mongodump --out <dumpDir>

$ service mongod stop

$ rm -rf /var/lib/mongodb/*

$ sed -i '/engine: .*inMemory/s/#//g' /etc/mongod.conf

$ service mongod start

$ mongorestore <dumpDir>

Externe LDAP-Authentifizierung mit SASL

Wann immer Clients entweder eine Lese- oder Schreibanfrage an die MongoDB-Mongod-Instanz stellen, müssen sie sich zuerst bei der Benutzerdatenbank des MongoDB-Servers authentifizieren. Die externe Authentifizierung ermöglicht es dem MongoDB-Server, die Client-Anmeldeinformationen (Benutzername und Passwort) mit einem separaten Dienst zu überprüfen. Die externe Authentifizierungsarchitektur umfasst:

  1. LDAP-Server, der alle Benutzeranmeldeinformationen entfernt speichert
  2. SASL-Daemon, der als serverlokaler MongoDB-Proxy für den Remote-LDAP-Dienst verwendet wird.
  3. SASL-Bibliothek:erstellt notwendige Authentifizierungsdaten für MongoDB-Client und -Server.

Authentifizierungssitzungssequenz

  • Der Client wird mit einer laufenden Mongod-Instanz verbunden und erstellt eine PLAIN-Authentifizierungsanforderung unter Verwendung der SASL-Bibliothek.
  • Die Authentifizierungsanforderung wird dann als spezieller Mongo-Befehl an den Server gesendet, der dann vom Mongod-Server mit seiner Anforderungsnutzlast empfangen wird.
  • Der Server erstellt einige SASL-Sitzungen, die von Client-Anmeldeinformationen abgeleitet werden, indem er seine eigene Referenz auf die SASL-Bibliothek verwendet.
  • Der Mongod-Server übergibt die Authentifizierungs-Payload an die SASL-Bibliothek, die sie an den saslauthd-Daemon weitergibt. Der Daemon leitet es an das LDAP weiter und wartet auf eine JA- oder NEIN-Antwort auf die Authentifizierungsanforderung, indem er prüft, ob der Benutzer existiert und das übermittelte Passwort korrekt ist.
  • Der saslauthd leitet diese Antwort über die SASL-Bibliothek an den mongod-Server weiter, der die Anfrage dann entsprechend authentifiziert oder ablehnt.

 Hier ist eine Illustration für diesen Vorgang:

So fügen Sie einem Mongod-Server einen externen Benutzer hinzu:

> db.getSiblingDB("$external").createUser( {user : username, roles: [ {role: "read", db: "test"} ]} );

Externen Benutzern können jedoch keine Rollen in der Administratordatenbank zugewiesen werden.

HashiCorp Vault-Integration

HashCorp Vault ist ein Produkt, das entwickelt wurde, um Geheimnisse zu verwalten und sensible Daten zu schützen, indem der Zugriff auf vertrauliche Informationen sicher gespeichert und streng kontrolliert wird. Bei der vorherigen Percona-Version wurde der Data-at-Rest-Verschlüsselungsschlüssel lokal auf dem Server innerhalb der Schlüsseldatei gespeichert. Die Integration mit HashCorp Vault sichert den Verschlüsselungsschlüssel viel besser.

Erweitertes Abfrageprofil

Profiling wirkt sich negativ auf die Datenbankleistung aus, insbesondere wenn so viele Abfragen ausgegeben werden. Der Percona-Server für MongoDB kommt ins Spiel, indem er die Anzahl der vom Datenbank-Profiler gesammelten Abfragen begrenzt und somit seine Auswirkungen auf die Leistung verringert.

Fazit

Percona Server für MongoDB ist eine erweiterte Open-Source- und hochgradig skalierbare Datenbank, die als kompatibler Drop-in-Ersatz für die MongoDB Community Edition fungieren kann, jedoch mit ähnlicher Syntax und Konfiguration. Es erhöht die umfassende Datensicherheit, insbesondere die Sicherheit ruhender Daten, und verbessert die Datenbankleistung durch die Bereitstellung der Percona-Server-Engine, die unter anderem die Profiling-Rate begrenzt.

Percona Server für MongoDB wird von ClusterControl als Bereitstellungsoption vollständig unterstützt.