Häufig gestellte Fragen
Wie sichert man eine aktive MongoDB-Datenbank ohne Ausfallzeiten?
Bei Einzelservern und Replikatsätzen führt das Bacula Enterprise MongoDB-Plugin „mongodump“ auf einer aktiven Datenbank aus, ohne Lese- oder Schreibvorgänge zu unterbrechen, und die Datenbank bleibt während der gesamten Sicherungsaufträge voll funktionsfähig. Allerdings gilt die Ausfallfreiheitsgarantie nicht für Backups von Sharded-Clustern, da diese Backups Folgendes erfordern: (1) das Anhalten des Chunk-Balancers über `sh.stopBalancer()`, (2) das anschließende Deaktivieren geplanter Chunk-Migrationen und (3) das Verhindern von Schreibvorgängen und Schema-Transformationen für die Dauer des Dumps. Rechnen Sie damit, dass Schreibvorgänge während des Sicherungsfensters unterbrochen werden. Sichern Sie zuerst das Replika-Set des Konfigurationsservers und erfassen Sie anschließend jedes Shard-Replika-Set in möglichst kurz aufeinanderfolgenden Zeitabständen.
Was ist der Unterschied zwischen einer logischen und einer physischen Sicherung in MongoDB?
Eine logische Sicherung verwendet `mongodump`, um die Dokumente, Indizes und Schemata der Datenbank in portierbare BSON-Archivdateien zu exportieren. Diese Archive sind unabhängig von der zugrunde liegenden Speicher-Engine und können in der Regel auf einem anderen Server wiederhergestellt werden, wobei versionsübergreifende Wiederherstellungen von der Kompatibilität der MongoDB-Versionen, der Version der Datenbank-Tools und der Feature Compatibility Version (FCV) abhängen. Daher ist nicht bei jeder Kombination garantiert, dass sie funktioniert. Eine physische Sicherung hingegen kopiert die Rohdatendateien von der Festplatte, was bei sehr großen Datensätzen wesentlich schneller ist, das Archiv jedoch an die ursprüngliche Speicher-Engine und Version bindet.
Wie funktioniert die Point-in-Time-Wiederherstellung für MongoDB-Replikatsätze?
Die Point-in-Time-Wiederherstellung ist ausschließlich für Replikatsätze verfügbar. Wenn eine Wiederherstellung erforderlich ist, stoppt der Parameter `replay_to` die Oplog-Wiedergabe an einem beliebigen Punkt innerhalb des verfügbaren Oplog-Fensters und stellt den Replikatsatz auf den nächstgelegenen geschützten Zustand innerhalb dieses Fensters vor dem Auftreten eines Vorfalls wieder her. Standalone-Server und Sharded-Cluster unterstützen PITR über dieses Plugin nicht, da sie keine Oplog-Wiederherstellungskette in derselben Weise bereitstellen wie Replikatsätze. Wenn Sie eine bestimmte Sammlung auf einen bestimmten Zeitpunkt zurücksetzen müssen, empfiehlt es sich, zunächst die gesamte Replikatsatzkette auf einem Nicht-Produktionsziel wiederherzustellen und anschließend die erforderlichen Daten auf Anwendungsebene zu extrahieren und abzugleichen.
Kann man eine einzelne MongoDB-Sammlung wiederherstellen, ohne die gesamte Datenbank wiederherzustellen?
Ja. Das MongoDB-Plugin von Bacula unterstützt Ein- und Ausschlussfilter auf Datenbank- und Sammlungsebene, sodass ein Wiederherstellungsauftrag auf eine bestimmte Sammlung abzielen kann, ohne den Rest der Datenbank zu berühren. Dadurch bleiben die Wiederherstellungsfenster kurz und das Risiko wird minimiert, dass intakte Daten zusammen mit den beschädigten Daten, die ersetzt werden müssen, überschrieben werden. Eine vollständige Datenbankwiederherstellung ist bei Bedarf möglich, ist jedoch niemals die einzige Option.
Beachten Sie außerdem, dass die granulare Wiederherstellung auf Kollektionsebene für logische Voll-Artefakte gilt und nicht mit der Oplog-Wiedergabe kombiniert werden kann, was bedeutet, dass die Point-in-Time-Wiederherstellung stets im gesamten Umfang des Replikatsatzes erfolgt. Wenn Sie beides benötigen, stellen Sie sicher, dass Sie zunächst die gesamte Replikatsatzkette auf einem Nicht-Produktionsziel wiederherstellen und anschließend die benötigten Daten auf Anwendungsebene extrahieren.
Warum sollten Sie das Bacula-MongoDB-Plugin verwenden, anstatt „mongodump“ manuell auszuführen?
„mongodump“ allein ist ein leistungsfähiges Tool für einen einzelnen logischen Export. Allerdings hat es den Nachteil, dass es Ihnen nicht alle Funktionen bietet (zentralisierte Planung, automatisierte Aufbewahrung, Prüfsummenvalidierung, Metadaten der Wiederherstellungskette und vieles mehr), die nach dem Dump folgen. Das Bacula Enterprise MongoDB-Plugin bindet mongodump und mongorestore in die Policy-Engine von Bacula ein, sodass jeder MongoDB-Sicherungsauftrag ordnungsgemäß geplant, katalogisiert und validiert wird und über dieselbe Konsole wiederherstellbar ist, über die auch der Rest Ihrer Infrastruktur verwaltet wird.