Den kendte og populære backupmetode til MongoDB er mongodump. Det er en logisk backupmetode, der ligner mysqldump i MySQL eller pg_dump i PostgreSQL-databasen. Der er et andet backupværktøj kaldet Percona Backup for MongoDB. Den har understøttelse af replikasæt og shard-klynger samt mere avancerede funktioner som punkt-i-tidsgendannelse.
Det er vigtigt at bemærke, at det udfører en konsekvent sikkerhedskopiering af din mongodb sharded cluster, og understøtter også S3-kompatibel objektlagring til at gemme sikkerhedskopierne. I denne blog vil vi diskutere arkitektur, installation og brug af Percona Backup til MongoDB.
Arkitektur
Percona Backup for MongoDB består af to komponenter, den første er et procesværktøj, der skal installeres på hver MongoDB-node, kaldet pbm-agent. Pbm-agenten fungerer for at koordinere mellem databasenoderne og kører backup- og gendannelsesprocessen. Den kontrollerer også, om noden er den rigtige node til at tage backup af. Pbm-agenten kræver en specifik bruger med nogle rolleprivilegier; f.eks.:readWrite, backup, clusterMonitor og gendannelse. Det skal også oprette en ny rolle for pbm med handlingstype anyAction og ressourcetype anyResource. Brugeren skal eksistere på hver node i replikasættet og også i konfigurationsserveren, hvis du bruger sharded cluster-arkitektur. Percona Backup til MongoDB bruger en MongoDB URI-forbindelsesstrengmetode til at oprette forbindelse til databasen, hvorfor den kræver legitimationsadgang første gang.
Den anden komponent er kommandolinjegrænsefladen kaldet pbm. pbm-værktøjet udløser de backup-relaterede handlinger, f.eks. udføre backup, gendannelse, liste backup, slet og så videre. Før du arbejder med pbm, skal du konfigurere sikkerhedskopieringsmuligheder, gendannelsesmuligheder og gendannelsesmuligheder for tidspunkt.
Konfigurationsfilen i sig selv er gemt i en YAML-fil, og kommandoen pbm config bruges til at indlæse konfigurationsfilen. Nogle af kommandoerne til pbm-værktøjet er vist nedenfor:
- pbm config, kommandoen brugt til at konfigurere sikkerhedskopieringsindstillingen, før den blev udført.
- pbm backup, bruges til at tage en sikkerhedskopi af MongoDB. Det understøtter nogle komprimeringsmetoder såsom gzip, pgzip, lz4, snappy.
- pbm restore, kommandoen, der bruges til at gendanne en sikkerhedskopi til en node.
- pbm-liste, liste over de aktuelle backupfiler.
- pbm cancel-backup, bruges til at annullere den kørende backupproces.
- pbm delete-backup, bruges til at slette backup-filer. Der er to muligheder; du kan angive filnavnet på backup for at slette eller slette backup-filer, der er ældre end en vis alder.
Installation af Percona Backup til MongoDB
Der er to måder, du kan installere Percona Backup til MongoDB på, du kan bruge pakkehåndteringen fra operativsystemet og bruge det officielle Percona Repository til at installere softwaren, eller du kan bygge fra kildekoden.
Som forudsætninger, før du installerer pbm'en gennem yum/apt installationen, skal du konfigurere Percona Repository, og derefter aktivere pbm repository:
[[email protected] ~]# percona-release enable pbm release
* Enabling the Percona Backup MongoDB repository
<*> All done!
Installer derefter Percona Backup til MongoDB. I dette tilfælde bruger jeg det CentOS-baserede operativsystem, så vi vil installere 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!
Når den er færdig, kan du konfigurere pbm-agenten som en baggrundsproces og lege med pbm kommandolinjegrænsefladen:
[[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
Sikkerhedskopiering i aktion
Før du tager en sikkerhedskopi af MongoDB, skal du sikre dig, at pbm-agenten kører på hver node, og at sikkerhedskopieringskonfigurationen er indstillet som vist nedenfor. Indstil stien til sikkerhedskopien:
[[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
Og testkør sikkerhedskopien på en af de sekundære noder:
[[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
Det er alt for nu. ClusterControl 1.8.1 kommer snart og giver dig mulighed for at planlægge og administrere dine MongoDB-klynger ved hjælp af Percona Backup for MongoDB.