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

Tipps zur MongoDB-Sicherungsverwaltung für Sharded-Cluster

Das Anfertigen geeigneter Backups der Datenbank ist eine kritische Aufgabe. Neben der Einrichtung der Hochverfügbarkeitsarchitektur Ihrer MongoDB für Datenbankdienste benötigen Sie auch Backups Ihrer Datenbanken, um die Verfügbarkeit von Daten im Katastrophenfall sicherzustellen. Wenn Sie beispielsweise versehentlich einige Daten aus einer Produktionsdatenbank löschen, ist die einzige Möglichkeit, die Daten aus Datenbanksicht wiederherzustellen, die Wiederherstellung aus einer Sicherung.

Kürzlich begann ClusterControl mit der Unterstützung einer neuen Sicherungsmethode namens Percona Backup for MongoDB, die von Percona entwickelt wurde. Es kann konsistente Sicherungen für MongoDB-Replikatsätze und Sharded-Cluster ausführen.

In diesem Blog werfen wir einen Blick auf die Sicherungsverwaltung für MongoDB-Replikatsätze und Sharded-Cluster.

MongoDB-Sicherung in hochverfügbarer Architektur

ClusterControl unterstützt 3 Backup-Methoden:Mongodump, Mongodb Consistent und Percona Backup for Mongodb. Die konsistente Mongodb-Sicherung verwendet das Mongodump-Dienstprogramm als Sicherungsmethode, und die Sicherung kann mit Mongorestore wiederhergestellt werden.

Die neueste unterstützte Backup-Methode ist Percona Backup for Mongodb für konsistente und Point-in-Time-Backups von Replica-Sets und Sharded-Clustern. Sie erfordert einen Agenten, der auf jedem Knoten oder Replica-Set oder Shard-Knoten und Verwaltungsknoten ausgeführt wird für Shard-Cluster wie hier beschrieben.

Das Konfigurieren und Planen konsistenter Backups mit Percona Backup for Mongodb in ClusterControl ist sehr einfach. Gehen Sie zur Seite Backup und konfigurieren Sie dann Percona Backup for Mongodb. Voraussetzung ist, dass auf jedem Node Percona Backup for MongoDB läuft, das auch von ClusterControl aus installiert werden kann.

Wir müssen zuerst den Percona Backup for MongoDB-Agenten installieren, bevor wir die Sicherung wie folgt planen können:

Und konfigurieren Sie dann das Sicherungsverzeichnis. Bitte beachten Sie, dass das Backup-Verzeichnis eine freigegebene Festplatte sein muss, die auf allen Knoten mit genau dem gleichen gemounteten Pfad wie unten gemountet wurde:

Wenn Sie keine Art von freigegebenem Datenträger im System bereit haben, Sie können NFS verwenden, um dies zu erreichen. Für die Konfiguration des NFS-Servers benötigen wir einen dedizierten Server / eine virtuelle Maschine mit genügend freiem Speicherplatz zum Speichern des Backups. Installieren Sie die nfs-utils- und nfs-utils-lib-Bibliothek wie folgt auf dem Server (vorausgesetzt, wir verwenden das CentOS-basierte):

[[email protected] ~]# yum install nfs-utils nfs-utils-lib

[[email protected] ~]# yum install portmap

Und starten Sie die Portmap- und NFS-Dienste.

[[email protected] ~]# /etc/init.d/portmap start

[[email protected] ~]# /etc/init.d/nfs start

Fügen Sie danach neue Einträge in /etc/exports wie unten gezeigt hinzu:

[[email protected] ~]# vi /etc/exports

/backup 10.10.10.11(rw,sync,no_root_squash)

Auf dem Datenbankknoten müssen wir nur die Speicherfestplatte als gemeinsam genutzten Speicher bereitstellen.

Zuletzt klicken Sie einfach auf die Schaltfläche "Installieren" und es wird ein neuer Job ausgelöst, um den Agenten auf jedem Knoten zu konfigurieren.

Nachdem PBM ggent vollständig installiert ist, können wir die Sicherungsmethode für die konfigurieren Cluster wie folgt:

Physisches vs. logisches Backup

MongoDB-Backup unterstützt logisches Backup und physisches Backup. Die Methode für die logische Sicherung mithilfe des Dienstprogramms mongodump ist in der Installation des mongodb-Pakets enthalten. Mongodump benötigt einen Zugriff auf Ihre Mongodb-Datenbank, daher erfordert es Anmeldeinformationen für Mongodump mit Backup-Rollen-Privilegien und muss Find-Aktion gewähren, um die Datenbank zu sichern.

Es funktioniert für BSON-Daten-Dump-Formate. Der Mongodump stellt mit den bereitgestellten Anmeldeinformationen eine Verbindung zu Ihrer Datenbank her, liest die gesamten Daten in Ihrer Datenbank und speichert die Daten in Dateien. Da es sich um einen Single-Thread-Prozess handelt, dauert die Sicherung länger, insbesondere bei einer großen Datenbankgröße. Mongodump behält die Atomarität von Transaktionen über die Shards hinweg nicht bei, weshalb es nicht als Sicherungsstrategie für Mongodb Version 4.2 und höher in einem Sharding-Cluster verwendet werden kann. Percona Backup for MongoDB ist ein logisches Backup, unterstützt jedoch konsistente Backups von Clustern.

Physische Sicherung in MongoDB funktioniert über den Snapshot der mongodb-Dateisysteme, es kopiert die zugrunde liegenden mongodb-Dateien an einen anderen Ort als Basissicherung Ihrer mongodb-Datenbank. Der Dateisystem-Snapshot ist ein Betriebssystem, wenn Sie LVM (Logical Volume Manager) als Software zum Verwalten Ihres Festplattenlayouts und Geräts oder als Software-Appliance verwenden, z. Veritas oder NetApp Backup. Sie müssen das Journaling aktivieren, das Änderungsaktivitätsprotokoll in Mongodb, bevor Sie den Dateisystem-Snapshot ausführen, um die Sicherung konsistent zu machen.

Neben dem Dateisystem-Snapshot können Sie auch den cp- oder rsync-Befehl verwenden, um MongoDB-Datendateien zu kopieren, aber Sie müssen den Schreibvorgang in MongoDB stoppen, da der Prozess des Kopierens von Datendateien kein atomarer Vorgang ist. Die Sicherung kann nicht für die Point-in-Time-Wiederherstellung in Replikatgruppen oder Sharded-Cluster-Architekturen verwendet werden.

Percona Backup for MongoDB besteht aus zwei Komponenten, dem pbm-Agent, der auf jedem Knoten installiert werden muss, und dem pbm als Befehlszeilenschnittstelle, um mit den Backups zu interagieren und sie auszuführen die Datenbankknoten und Ausführen des Sicherungs- und Wiederherstellungsprozesses. Der pbm-Agent wird den besten Knoten für die Erstellung des Backups bestimmen.

PITR-Sicherung

In vielen Datenbanksystemen ist es üblich, einen Prüfpunkt zu verwenden, um die Daten auf die Festplatte zu schreiben. MongoDB verwendet die WiredTiger-Speicher-Engine als Standard-Speicher-Engine und verwendet außerdem Checkpoints, um eine konsistente Ansicht der Daten bereitzustellen. Darüber hinaus kann der Checkpoint in MongoDB zur Wiederherstellung vom letzten Checkpoint verwendet werden. Das Journaling funktioniert zwischen jedem Checkpoint, das Journaling ist erforderlich, um sich von unerwarteten Ausfällen zu erholen, die zu einem beliebigen Zeitpunkt zwischen den Checkpoints auftreten. Das Journaling garantiert, dass die Schreibvorgänge auf der Festplatte protokolliert werden. MongoDB erstellt für jede Änderung einen Journaleintrag, einschließlich der geänderten Bytes und des Speicherorts der Festplatte.

Mongodump und mongorestore können für Point-in-Time-Recovery-Backups verwendet werden, es gibt eine Option zur Nutzung des Oplogs. Das Oplog ist eine begrenzte Sammlung in MongoDB, die alle Änderungen in Sammlungen für alle Schreibtransaktionen (z. B. Einfügen, Aktualisieren, Löschen) verfolgt. Wenn Sie also eine Point-in-Time-Wiederherstellung durchführen möchten, müssen Sie von der letzten vollständigen Sicherung wiederherstellen und auch die oplog-Datei verwenden, um die Änderungen auf den genauen Zeitpunkt anzuwenden, zu dem Sie wiederherstellen möchten. Ein weiteres Tool, das verwendet werden kann, ist das Percona Backup für MongoDB, der Prozess ist ähnlich wie bei Mongodump, wir müssen aus dem Backup wiederherstellen und dann das Oplog anwenden.

Fazit

Ein konsistentes Backup ist wichtig, insbesondere in geclusterten MongoDB-Setups (Replikatsatz oder Sharding-Cluster). ClusterControl bietet eine einfache Möglichkeit, Percona Backup for MongoDB in Ihrem Cluster zu konfigurieren und Ihre Backups zu planen.