Známá a oblíbená metoda zálohování pro MongoDB je mongodump. Je to logická metoda zálohování, podobná jako mysqldump v MySQL nebo pg_dump v databázi PostgreSQL. Existuje další zálohovací nástroj s názvem Percona Backup pro MongoDB. Má podporu pro sady replik a clustery fragmentů, stejně jako pokročilejší funkce, jako je obnovení v čase.
Je důležité poznamenat, že provádí konzistentní zálohu pro váš mongodb sharded cluster a také podporuje úložiště objektů kompatibilní s S3 pro ukládání záloh. V tomto blogu budeme diskutovat o architektuře, instalaci a použití Percona Backup pro MongoDB.
Architektura
Percona Backup pro MongoDB se skládá ze dvou komponent, první je obslužný program procesu, který je třeba nainstalovat na každý uzel MongoDB, nazvaný pbm-agent. Pbm-agent působí tak, že koordinuje databázové uzly a spouští proces zálohování a obnovy. Také zkontroluje, zda je uzel správným uzlem pro vytvoření zálohy. Pbm-agent vyžaduje konkrétního uživatele s určitými právy role; např.:readWrite, backup, clusterMonitor a restore. Potřebuje také vytvořit novou roli pro pbm s typem akce anyAction a typem zdroje anyResource. Uživatel musí existovat na každém uzlu v sadě replik a také na konfiguračním serveru, pokud používáte architekturu sdíleného clusteru. Percona Backup for MongoDB používá k připojení k databázi metodu připojovacího řetězce URI MongoDB, což je důvod, proč poprvé vyžaduje přístup pomocí pověření.
Další komponentou je rozhraní příkazového řádku nazvané pbm. Obslužný program pbm spouští akce související se zálohováním, např. provedení zálohy, obnovení, vytvoření seznamu záloh, odstranění atd. Než začnete pracovat s pbm, budete muset nakonfigurovat možnosti zálohování, možnosti obnovení a možnosti obnovení v určitém čase.
Samotný konfigurační soubor je uložen v souboru YAML a k načtení konfiguračního souboru se používá příkaz pbm config. Některé z příkazů pro nástroj pbm jsou uvedeny níže:
- pbm config, příkaz používaný ke konfiguraci možnosti zálohování před spuštěním.
- záloha pbm, používá se k vytvoření zálohy MongoDB. Podporuje některé kompresní metody jako gzip, pgzip, lz4, snappy.
- pbm restore, příkaz používaný k obnovení zálohy do uzlu.
- seznam pbm, seznam aktuálních záložních souborů.
- pbm cancel-backup, používá se ke zrušení běžícího procesu zálohování.
- pbm delete-backup, používá se k odstranění záložních souborů. Existují dvě možnosti; můžete zadat název souboru zálohy, chcete-li odstranit nebo odstranit záložní soubory, které jsou starší než určitý věk.
Instalace Percona Backup pro MongoDB
Existují dva způsoby, jak nainstalovat Percona Backup pro MongoDB, můžete použít správce balíčků z operačního systému a pro instalaci softwaru použít oficiální úložiště Percona, nebo můžete vytvořit ze zdrojového kódu.
Před instalací pbm prostřednictvím instalace yum/apt je nutné nakonfigurovat úložiště Percona a poté povolit úložiště pbm:
[[email protected] ~]# percona-release enable pbm release
* Enabling the Percona Backup MongoDB repository
<*> All done!
Potom nainstalujte Percona Backup pro MongoDB. V tomto případě používám operační systém založený na CentOS, takže provedeme instalaci yum:
[[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!
Po dokončení můžete nakonfigurovat pbm-agent jako proces na pozadí a pohrát si s rozhraním příkazového řádku pbm:
[[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
Zálohování v akci
Před vytvořením zálohy MongoDB se ujistěte, že na každém uzlu běží pbm-agent a že konfigurace zálohy byla nastavena tak, jak je uvedeno níže, nastavte cestu zálohy:
[[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
A otestujte zálohu na jednom ze sekundárních uzlů:
[[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
To je prozatím vše. ClusterControl 1.8.1, již brzy, vám umožní plánovat a spravovat vaše MongoDB clustery pomocí Percona Backup for MongoDB.