Die Datenbanksicherung ist nichts anderes als eine Möglichkeit, Daten zu schützen oder wiederherzustellen. Dabei werden der Betriebszustand, die Architektur und die Daten Ihrer Datenbank gespeichert. Es kann in Situationen von technischen Ausfällen oder Katastrophen sehr nützlich sein. Daher ist es wichtig, die Sicherung Ihrer Datenbank aufzubewahren und dass Ihre Datenbank über einen guten und einfachen Prozess für die Sicherung verfügt.
MongoDB bietet mehrere Tools/Techniken zum einfachen Sichern Ihrer Datenbanken.
In diesem Artikel werden wir einige der wichtigsten MongoDB-Sicherungs- und Wiederherstellungs-Workflows besprechen.
Im Allgemeinen gibt es drei gängige Optionen zum Sichern Ihres MongoDB-Servers/-Clusters.
- Mongodump/Mongorestore
- MongoDB-Cloud-Manager
- Datenbank-Snapshots
Abgesehen von diesen allgemeinen Optionen gibt es noch andere Möglichkeiten, Ihre MongoDB zu sichern. Wir werden all diese Optionen auch in diesem Artikel besprechen. Fangen wir an.
MongoDump/MongoRestore
Wenn Sie eine kleine Datenbank (<100 GB) haben und die volle Kontrolle über Ihre Backups haben möchten, dann sind Mongodump und Mongorestore Ihre besten Optionen. Dies sind Mongo-Shell-Befehle, mit denen Sie Ihre Datenbank oder Sammlungen manuell sichern können. Mongodump speichert alle Daten im binären JSON(BSON)-Format am angegebenen Speicherort. Mongorestore kann diese BSON-Dateien verwenden, um Ihre Datenbank wiederherzustellen.
Eine ganze Datenbank sichern
$ sudo mongodump --db mydb --out /var/backups/mongo
Ausgabe:
2018-08-20T10:11:57.685-0500 writing mydb.users to /var/backups/mongo/mydb/users.bson
2018-08-20T10:11:57.907-0500 writing mydb.users metadata to /var/backups/mongo/mydb/users.metadata.json
2018-08-20T10:11:57.911-0500 done dumping mydb.users (25000 documents)
2018-08-20T10:11:57.911-0500 writing mydb.system.indexes to /var/backups/mongo/mydb/system.indexes.bson
In diesem Befehl ist das wichtigste Argument --db. Es gibt den Namen der Datenbank an, die Sie sichern möchten. Wenn Sie dieses Argument nicht angeben, sichert der Mongodump-Befehl alle Ihre Datenbanken, was ein sehr intensiver Prozess sein kann.
Eine einzelne Sammlung sichern
$ mongodump -d mydb -o /var/backups/mongo --collection users
Dieser Befehl sichert nur die Benutzersammlung in der mydb-Datenbank. Wenn Sie diese Option nicht angeben, wird standardmäßig die gesamte Sammlung in der Datenbank gesichert.
Regelmäßige Backups mit Mongodump/Mongorestore erstellen
Als Standardverfahren sollten Sie regelmäßig Backups Ihrer MongoDB-Datenbank erstellen. Angenommen, Sie möchten jeden Tag um 3:03 Uhr ein Backup erstellen, dann können Sie dies in einem Linux-System tun, indem Sie einen cron-Eintrag in crontab hinzufügen.
$ sudo crontab -e
Fügen Sie diese Zeile in crontab hinzu:
3 3 * * * mongodump --out /var/backups/mongo
Eine ganze Datenbank wiederherstellen
Zum Wiederherstellen der Datenbank können wir den Befehl Mongorestore mit der Option --db verwenden. Es liest die von Mongodump erstellten BSON-Dateien und stellt Ihre Datenbank wieder her.
$ sudo mongorestore --db mydb /var/backups/mongo/mydb
Ausgabe
2018-07-20T12:44:30.876-0500 building a list of collections to restore from /var/backups/mongo/mydb/ dir
2018-07-20T12:44:30.908-0500 reading metadata file from /var/backups/mongo/mydb/users.metadata.json
2018-07-20T12:44:30.909-0500 restoring mydb.users from file /var/backups/mongo/mydb/users.bson
2018-07-20T12:45:01.591-0500 restoring indexes for collection mydb.users from metadata
2018-07-20T12:45:01.592-0500 finished restoring mydb.users (25000 documents)
2018-07-20T12:45:01.592-0500 done
Eine ganze Sammlung wiederherstellen
Um nur eine einzelne Sammlung aus db wiederherzustellen, können Sie den folgenden Befehl verwenden:
$ mongorestore -d mydb -c users mydb/users.bson
Wenn Ihre Sammlung im JSON-Format statt im BSON-Format gesichert wird, können Sie den folgenden Befehl verwenden:
$ mongoimport --db mydb --collection users --file users.json --jsonArray
Vorteile
- Sehr einfach zu bedienen
- Sie haben vollen Zugriff auf Ihr Backup
- Sie können Ihre Backups an beliebigen Orten wie NFS-Freigaben, AWS S3 usw. ablegen.
Nachteile
- Es wird jedes Mal ein vollständiges Backup der Datenbank benötigt, nicht nur die Differenz.
- Bei großen Datenbanken kann es Stunden dauern, die Datenbank zu sichern und wiederherzustellen.
- Es ist standardmäßig kein Point-in-Time, was bedeutet, dass Ihre Sicherung zu Inkonsistenzen führen kann, wenn sich Ihre Daten während der Sicherung ändern. Sie können die Option --oplog verwenden, um dieses Problem zu lösen. Am Ende des Mongodump-Prozesses wird ein Snapshot der Datenbank erstellt.
MongoDB-Ops-Manager
Ops Manager ist eine Verwaltungsanwendung für MongoDB, die in Ihrem Rechenzentrum ausgeführt wird. Es sichert kontinuierlich Ihre Daten und stellt Point-in-Time-Wiederherstellungsprozesse für Ihre Datenbank bereit. Innerhalb dieser Anwendung gibt es einen Agenten, der eine Verbindung zu Ihren MongoDB-Instanzen herstellt. Es führt zunächst eine anfängliche Synchronisierung durch, um den aktuellen Zustand der Datenbank zu sichern. Der Agent sendet die komprimierten und verschlüsselten Oplog-Daten weiterhin an Ops Manager, sodass Sie über eine kontinuierliche Sicherung verfügen können. Anhand dieser Daten erstellt Ops Manager Datenbank-Snapshots. Es erstellt alle 6 Stunden einen Snapshot Ihrer Datenbank und Oplog-Daten werden 24 Stunden lang gespeichert. Sie können den Snapshot-Zeitplan jederzeit mit dem Ops Manager konfigurieren.
Vorteile
- Es ist standardmäßig ein Point-in-Time
- Wirkt sich außer bei der anfänglichen Synchronisierung nicht auf die Produktionsleistung aus
- Unterstützung für konsistente Snapshots von Sharding-Clustern
- Flexibilität zum Ausschließen unkritischer Sammlungen
Nachteile
- Die Netzwerklatenz nimmt mit der Snapshot-Größe zu, während die Datenbank wiederhergestellt wird.
MongoDB Cloud Manager
MongoDB Cloud Manager ist eine Cloud-basierte Backup-Lösung, die Point-in-Time-Wiederherstellung, kontinuierliche und Online-Backup-Lösung als vollständig verwalteten Service bietet. Sie können einfach den Cloud Manager-Agenten installieren, um die Sicherung und Wiederherstellung Ihrer Datenbank zu verwalten. Es speichert Ihre Sicherungsdaten in der MongoDB-Cloud.
Vorteile
- Sehr einfach zu bedienen. Gute GUI.
- Kontinuierliche Sicherung von Abfragen und Oplog.
Nachteile
- Keine Kontrolle über Sicherungsdaten. Es wird in der MongoDB-Cloud gespeichert.
- Die Kosten hängen von der Größe der Daten und der Anzahl der Oplog-Änderungen ab.
- Wiederherstellungsprozess ist langsam.
Snapshot-Datenbankdateien
Dies ist die einfachste Lösung, um Ihre Datenbank zu sichern. Sie können alle zugrunde liegenden Dateien (Inhalt von Daten/Verzeichnis) kopieren und an einem beliebigen sicheren Ort ablegen. Bevor Sie alle Dateien kopieren, sollten Sie alle laufenden Schreibvorgänge in eine Datenbank stoppen, um die Datenkonsistenz zu gewährleisten. Sie können den Befehl db.fsyncLock() verwenden, um alle Schreibvorgänge zu stoppen.
Es gibt zwei Arten von Snapshots:Snapshots auf Cloud-Ebene und Snapshots auf Betriebssystemebene.
Wenn Sie Datenbankdaten bei einem Cloud-Service-Provider wie AWS speichern, müssen Sie AWS EBS-Snapshots zur Sicherung erstellen. Wenn Sie dagegen DB-Dateien in einem nativen Betriebssystem wie Linux speichern, müssen Sie LVM-Snapshots erstellen. LVM-Snapshots sind nicht auf andere Maschinen übertragbar. Cloudbasierte Snapshots sind also besser als betriebssystembasierte Snapshots.
Vorteile
- Einfach zu bedienen.
- Volle Kontrolle über Schnappschüsse. Sie können es in jedes Rechenzentrum verschieben.
- Diese Snapshots sind Diff-Snapshots, die nur die Unterschiede zu vorherigen Snapshots speichern.
- Sie müssen die Snapshots nicht herunterladen, um Ihre Datenbank wiederherzustellen. Sie können einfach ein neues Volume aus Ihrem Snapshot erstellen.
Nachteile
- Mit dieser Methode können Sie Ihre Datenbank nur an Unterbrechungspunkten wiederherstellen.
- Die Wartung wird manchmal sehr komplex.
- Um Backups über alle Replikatsätze hinweg zu koordinieren (im Sharding-System), benötigen Sie ein spezielles Entwicklerteam.
Konsistentes MongoDB-Backup-Tool
MongoDB Consistent Backup ist ein Tool zur Durchführung konsistenter Backups von MongoDB-Clustern. Es kann einen Cluster mit einem oder mehreren Shards an einem einzigen Punkt der Datenbank sichern. Es verwendet Mongodump als Standardsicherungsmethode. Führen Sie den folgenden Befehl aus, um mit diesem Tool eine Sicherung zu erstellen.
$ mongodb-consistent-backup -H localhost -P 27017 -u USERNAME -p PASSWORD -l /var/backups/mongo
Alle von diesen Befehlen generierten Sicherungen sind MongoRestore-kompatibel. Sie können den Befehl mongorestore mit der Option --oplogReplay verwenden, um Konsistenz zu gewährleisten.
$ mongorestore --host localhost --port 27017 -u USERNAME -p PASSWORD --oplogReplay --dir /var/backups/mongo/mydb/dump
Vorteile
- Vollständig Open-Source
- Funktioniert mit Sharding-Clustern
- Bietet eine Option für Remote-Backups wie Amazon S3
- Automatische Skalierung verfügbar
- Sehr einfach zu installieren und auszuführen
Nachteil
- Nicht vollständig ausgereiftes Produkt
- Sehr wenige Remote-Upload-Optionen
- Unterstützt keine Datenverschlüsselung vor dem Speichern auf der Festplatte
- Das offizielle Code-Repository wird nicht ausreichend getestet
ClusterControl-Sicherung
ClusterControl ist ein automatisiertes All-in-One-Datenbankverwaltungssystem. Damit können Sie Ihre Datenbank-Cluster mühelos überwachen, bereitstellen, verwalten und skalieren. Es unterstützt MySQL, MongoDB, PostgreSQL, Percona XtraDB und Galera Cluster. Diese Software automatisiert fast alle Datenbankvorgänge wie das Bereitstellen eines Clusters, das Hinzufügen oder Entfernen eines Knotens aus einem beliebigen Cluster, kontinuierliche Sicherungen, das Skalieren des Clusters usw. All diese Dinge können Sie über eine einzige GUI erledigen, die vom ClusterControl-System bereitgestellt wird.
ClusterControl bietet eine sehr schöne GUI für das MongoDB-Backup-Management mit Unterstützung für Planung und kreative Berichte. Es gibt Ihnen zwei Optionen für Backup-Methoden.
- Mongodump
- Konsistente Mongodb-Sicherung
Benutzer können also jede Option nach ihren Bedürfnissen auswählen. Dieses Tool weist allen Backups eine eindeutige ID zu und speichert sie unter diesem Pfad:ClusterControl> Einstellungen> Backup> BackupID. Wenn der angegebene Knoten während der Sicherung nicht aktiv ist, findet das Tool automatisch den aktiven Knoten aus dem Cluster und setzt den Sicherungsprozess auf diesem Knoten fort. Dieses Tool bietet auch eine Option zum Planen der Sicherungen mit einer der oben genannten Sicherungsmethoden. Sie können jeden Planungsauftrag aktivieren/deaktivieren, indem Sie einfach eine Schaltfläche umschalten. ClusterControl führt den Sicherungsvorgang im Hintergrund aus, sodass die anderen Jobs in der Warteschlange nicht beeinträchtigt werden.
Vorteile
- Einfache Installation und sehr einfach zu bedienen
- Mehrere Optionen für Backup-Methoden
- Die Backup-Planung ist mit einem einfachen GUI-Formular sehr einfach
- Automatische Backup-Überprüfung
- Sicherungsberichte mit Status
Nachteil
- Beide Backup-Methoden verwenden intern Mongodump, das einige Probleme mit der Handhabung sehr großer Datenbanken hat.
Schlussfolgerung
Eine gute Sicherungsstrategie ist ein kritischer Bestandteil jedes Datenbankverwaltungssystems. MongoDB bietet viele Optionen für Backups und Wiederherstellung/Wiederherstellung. Neben einer guten Sicherungsmethode ist es sehr wichtig, mehrere Replikate der Datenbank zu haben. Dies hilft bei der Wiederherstellung der Datenbank ohne die Ausfallzeit von auch nur einer Sekunde. Bei größeren Datenbanken kann der Sicherungsvorgang manchmal sehr ressourcenintensiv sein. Ihr Server sollte also mit einer guten CPU, RAM und mehr Speicherplatz ausgestattet sein, um diese Art von Last zu bewältigen. Der Sicherungsvorgang kann aus diesen Gründen die Belastung des Servers erhöhen, daher sollten Sie den Sicherungsvorgang nachts oder außerhalb der Stoßzeiten ausführen.