Il metodo di backup noto e popolare per MongoDB è mongodump. È un metodo di backup logico, simile a mysqldump in MySQL o pg_dump nel database PostgreSQL. C'è un altro strumento di backup chiamato Percona Backup for MongoDB. Supporta set di repliche e cluster di shard, oltre a funzionalità più avanzate come il ripristino point-in-time.
È importante notare che esegue un backup coerente per il cluster sharded mongodb e supporta anche lo storage di oggetti compatibile con S3 per archiviare i backup. In questo blog parleremo dell'architettura, dell'installazione e dell'utilizzo di Percona Backup for MongoDB.
Architettura
Percona Backup for MongoDB è costituito da due componenti, il primo è un'utilità di processo che deve essere installata su ciascun nodo MongoDB, denominata pbm-agent. L'agente pbm agisce per coordinare tra i nodi del database, eseguendo il processo di backup e ripristino. Verifica inoltre se il nodo è il nodo corretto per eseguire il backup. L'agente pbm richiede un utente specifico con alcuni privilegi di ruolo; ad esempio:readWrite, backup, clusterMonitor e ripristino. È inoltre necessario creare un nuovo ruolo per pbm con il tipo di azione anyAction e il tipo di risorsa anyResource. L'utente deve esistere su ogni nodo nel set di repliche e anche nel server di configurazione se si utilizza l'architettura del cluster partizionato. Percona Backup for MongoDB utilizza un metodo della stringa di connessione URI MongoDB per connettersi al database, motivo per cui richiede l'accesso alle credenziali la prima volta.
L'altro componente è l'interfaccia a riga di comando chiamata pbm. L'utilità pbm attiva le azioni relative al backup, ad esempio, eseguire il backup, ripristinare, elencare il backup, eliminare e così via. Prima di lavorare con pbm, è necessario configurare le opzioni di backup, le opzioni di ripristino e le opzioni di ripristino temporizzato.
Il file di configurazione stesso è memorizzato in un file YAML e il comando pbm config viene utilizzato per caricare il file di configurazione. Alcuni dei comandi per l'utilità pbm sono mostrati di seguito:
- pbm config, il comando utilizzato per configurare l'opzione di backup prima dell'esecuzione.
- backup pbm, utilizzato per eseguire un backup di MongoDB. Supporta alcuni metodi di compressione come gzip, pgzip, lz4, snappy.
- pbm restore, il comando utilizzato per ripristinare un backup su un nodo.
- elenco pbm, elenco dei file di backup correnti.
- pbm cancel-backup, utilizzato per annullare il processo di backup in esecuzione.
- pbm delete-backup, utilizzato per eliminare i file di backup. Ci sono due opzioni; puoi specificare il nome del file di backup per eliminare o eliminare i file di backup che sono più vecchi di una certa età.
Installazione di Percona Backup per MongoDB
Ci sono due modi per installare Percona Backup for MongoDB, puoi usare il gestore di pacchetti dal sistema operativo e usare il Percona Repository ufficiale per installare il software, oppure puoi costruire dal codice sorgente.
Come prerequisiti prima di installare il pbm tramite l'installazione yum/apt, è necessario configurare il repository Percona e, successivamente, abilitare il repository pbm:
[[email protected] ~]# percona-release enable pbm release
* Enabling the Percona Backup MongoDB repository
<*> All done!
Quindi, installa Percona Backup per MongoDB. In questo caso, sto usando il sistema operativo basato su CentOS, quindi eseguiremo l'installazione 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!
Una volta completato, puoi configurare pbm-agent come processo in background e giocare con l'interfaccia della riga di comando 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
Backup in azione
Prima di eseguire un backup di MongoDB, assicurati che pbm-agent sia in esecuzione su ciascun nodo e che la configurazione di backup sia stata impostata come mostrato di seguito, imposta il percorso del backup:
[[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
E prova a eseguire il backup su uno dei nodi secondari:
[[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
È tutto per ora. Prossimamente, ClusterControl 1.8.1 ti consentirà di pianificare e gestire i tuoi cluster MongoDB utilizzando Percona Backup for MongoDB.