Die bekannte und beliebte Sicherungsmethode für MongoDB ist Mongodump. Es ist eine logische Sicherungsmethode, ähnlich wie mysqldump in MySQL oder pg_dump in der PostgreSQL-Datenbank. Es gibt ein weiteres Backup-Tool namens Percona Backup for MongoDB. Es bietet Unterstützung für Replikatsätze und Shard-Cluster sowie erweiterte Funktionen wie die Wiederherstellung zu einem bestimmten Zeitpunkt.
Es ist wichtig zu beachten, dass es ein konsistentes Backup für Ihren mongodb-Shard-Cluster durchführt und auch S3-kompatiblen Objektspeicher zum Speichern der Backups unterstützt. In diesem Blog werden wir die Architektur, Installation und Verwendung von Percona Backup for MongoDB besprechen.
Architektur
Percona Backup for MongoDB besteht aus zwei Komponenten, die erste ist ein Prozessdienstprogramm namens pbm-agent, das auf jedem MongoDB-Knoten installiert werden muss. Der pbm-Agent übernimmt die Koordination zwischen den Datenbankknoten und führt den Sicherungs- und Wiederherstellungsprozess aus. Es prüft auch, ob der Knoten der richtige Knoten ist, um die Sicherung zu übernehmen. Der pbm-Agent erfordert einen bestimmten Benutzer mit einigen Rollenberechtigungen; zB:readWrite, Backup, ClusterMonitor und Restore. Außerdem muss eine neue Rolle für pbm mit dem Aktionstyp „anyAction“ und dem Ressourcentyp „anyResource“ erstellt werden. Der Benutzer muss auf jedem Knoten im Replikatsatz und auch auf dem Konfigurationsserver vorhanden sein, wenn Sie eine Sharded-Cluster-Architektur verwenden. Percona Backup for MongoDB verwendet eine MongoDB-URI-Verbindungszeichenfolgenmethode, um eine Verbindung zur Datenbank herzustellen, weshalb beim ersten Mal ein Anmeldedatenzugriff erforderlich ist.
Die andere Komponente ist die Befehlszeilenschnittstelle namens pbm. Das Dienstprogramm pbm löst die sicherungsbezogenen Aktionen aus, z. B. Sicherung ausführen, wiederherstellen, Sicherung auflisten, löschen usw. Bevor Sie mit pbm arbeiten, müssen Sie Sicherungsoptionen, Wiederherstellungsoptionen und Point-in-Time-Wiederherstellungsoptionen konfigurieren.
Die Konfigurationsdatei selbst wird in einer YAML-Datei gespeichert, und der Befehl pbm config wird verwendet, um die Konfigurationsdatei zu laden. Einige der Befehle für das Dienstprogramm pbm sind unten aufgeführt:
- pbm config, der Befehl zum Konfigurieren der Backup-Option vor der Ausführung.
- pbm-Backup, wird verwendet, um ein Backup von MongoDB zu erstellen. Es unterstützt einige Komprimierungsmethoden wie gzip, pgzip, lz4, snappy.
- pbm restore, der Befehl zum Wiederherstellen einer Sicherung auf einem Knoten.
- pbm-Liste, Auflistung der aktuellen Sicherungsdateien.
- pbm cancel-backup, wird verwendet, um den laufenden Sicherungsvorgang abzubrechen.
- pbm delete-backup, wird zum Löschen von Sicherungsdateien verwendet. Es gibt zwei Möglichkeiten; Sie können den Dateinamen der zu löschenden Sicherung angeben oder Sicherungsdateien löschen, die älter als ein bestimmtes Alter sind.
Installation von Percona Backup für MongoDB
Es gibt zwei Möglichkeiten, Percona Backup for MongoDB zu installieren, Sie können den Paketmanager des Betriebssystems verwenden und das offizielle Percona-Repository zum Installieren der Software verwenden, oder Sie können aus dem Quellcode erstellen.
Als Voraussetzung vor der Installation von pbm durch die yum/apt-Installation müssen Sie das Percona-Repository konfigurieren und danach das pbm-Repository aktivieren:
[[email protected] ~]# percona-release enable pbm release
* Enabling the Percona Backup MongoDB repository
<*> All done!
Installieren Sie dann Percona Backup for MongoDB. In diesem Fall verwende ich das CentOS-basierte Betriebssystem, also führen wir die Yum-Installation durch:
[[email protected] ~]# yum install percona-backup-mongodb
Loaded plugins: fastestmirror
Repository percona-release-noarch is listed more than once in the configuration
Repository percona-release is listed more than once in the configuration
Repository percona-release-noarch is listed more than once in the configuration
Repository percona-release-source is listed more than once in the configuration
(1/10): extras/7/x86_64/primary_db | 222 kB 00:00:00
(2/10): pbm-release-x86_64/7/primary_db | 4.2 kB 00:00:02
(3/10): percona-tools-release/7/x86_64/primary_db | 84 kB 00:00:00
(4/10): tools-release-x86_64/7/primary_db | 84 kB 00:00:00
(5/10): percona-release-x86_64/7/primary_db | 1.1 MB 00:00:06
(6/10): percona-release/7/x86_64/primary_db | 1.1 MB 00:00:08
(7/10): base/7/x86_64/primary_db | 6.1 MB 00:00:11
(8/10): updates/7/x86_64/primary_db | 2.5 MB 00:00:08
(9/10): epel/x86_64/updateinfo | 1.0 MB 00:00:13
(10/10): epel/x86_64/primary_db | 6.9 MB 00:00:07
Loading mirror speeds from cached hostfile
* base: mirror.telkomuniversity.ac.id
* epel: ftp.jaist.ac.jp
* extras: mirror.telkomuniversity.ac.id
* updates: mirror.telkomuniversity.ac.id
Resolving Dependencies
--> Running transaction check
---> Package percona-backup-mongodb.x86_64 0:1.3.3-1.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==================================================================================================================================================================
Package Arch Version Repository Size
==================================================================================================================================================================
Installing:
percona-backup-mongodb x86_64 1.3.3-1.el7 pbm-release-x86_64 16 M
Transaction Summary
==================================================================================================================================================================
Install 1 Package
Total download size: 16 M
Installed size: 61 M
Is this ok [y/d/N]: y
Downloading packages:
percona-backup-mongodb-1.3.3-1.el7.x86_64.rpm | 16 MB 00:00:55
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : percona-backup-mongodb-1.3.3-1.el7.x86_64 1/1
Verifying : percona-backup-mongodb-1.3.3-1.el7.x86_64 1/1
Installed:
percona-backup-mongodb.x86_64 0:1.3.3-1.el7
Complete!
Nach Abschluss können Sie den pbm-agent als Hintergrundprozess konfigurieren und mit der pbm-Befehlszeilenschnittstelle herumspielen:
[[email protected] ~]# pbm
usage: pbm [<flags>] <command> [<args> ...]
Percona Backup for MongoDB
Flags:
--help Show context-sensitive help (also try
--help-long and --help-man).
--mongodb-uri=MONGODB-URI MongoDB connection string (Default =
PBM_MONGODB_URI environment variable)
--compression=s2 Compression type
<none>/<gzip>/<snappy>/<lz4>/<s2>/<pgzip>
Commands:
help [<command>...]
Show help.
config [<flags>] [<key>]
Set, change or list the config
backup
Make backup
restore [<flags>] [<backup_name>]
Restore backup
cancel-backup
Restore backup
list [<flags>]
Backup list
delete-backup [<flags>] [<name>]
Delete a backup
version [<flags>]
PBM version info
Sicherung in Aktion
Bevor Sie ein Backup von MongoDB erstellen, stellen Sie sicher, dass der pbm-agent auf jedem Knoten ausgeführt wird und die Backup-Konfiguration wie unten gezeigt eingestellt wurde, legen Sie den Pfad des Backups fest:
[[email protected] ~]# pbm config --file=/root/config.yaml --mongodb-uri "mongodb://pbmuser:***@localhost:27017/"
[Config set]
------
pitr:
enabled: false
storage:
type: filesystem
filesystem:
path: /data/backups
Und testen Sie die Sicherung auf einem der sekundären Knoten:
[[email protected] ~]# pbm backup --mongodb-uri "mongodb://pbmuser:*****@localhost:27017/" --compression=pgzip
Starting backup '2020-11-13T15:28:49Z'...................
Backup '2020-11-13T15:28:49Z' to remote store '/data/backups' has started
Das ist alles für jetzt. In Kürze wird ClusterControl 1.8.1 Ihnen ermöglichen, Ihre MongoDB-Cluster mit Percona Backup for MongoDB zu planen und zu verwalten.