Den kända och populära säkerhetskopieringsmetoden för MongoDB är mongodump. Det är en logisk säkerhetskopieringsmetod, liknande mysqldump i MySQL eller pg_dump i PostgreSQL-databasen. Det finns ett annat verktyg för säkerhetskopiering som heter Percona Backup för MongoDB. Den har stöd för replikuppsättningar och shard-kluster, såväl som mer avancerade funktioner som punktåterställning.
Det är viktigt att notera att det utför en konsekvent säkerhetskopiering för ditt mongodb sharded-kluster och stöder även S3-kompatibel objektlagring för att lagra säkerhetskopiorna. I den här bloggen kommer vi att diskutera arkitektur, installation och användning av Percona Backup för MongoDB.
Arkitektur
Percona Backup för MongoDB består av två komponenter, den första är ett processverktyg som måste installeras på varje MongoDB-nod, kallat pbm-agent. Pbm-agenten fungerar för att koordinera mellan databasnoderna och kör säkerhetskopiering och återställning. Den kontrollerar också om noden är rätt nod för att ta säkerhetskopian. Pbm-agenten kräver en specifik användare med vissa rollbehörigheter; t.ex.:readWrite, backup, clusterMonitor och restore. Den behöver också skapa en ny roll för pbm med åtgärdstyp anyAction och resurstyp anyResource. Användaren måste finnas på varje nod i replikuppsättningen och även i konfigurationsservern om du använder sharded cluster-arkitektur. Percona Backup för MongoDB använder en MongoDB URI-anslutningssträngmetod för att ansluta till databasen, vilket är anledningen till att den kräver autentiseringsåtkomst vid första gången.
Den andra komponenten är kommandoradsgränssnittet som kallas pbm. pbm-verktyget utlöser säkerhetskopieringsrelaterade åtgärder, t.ex. köra säkerhetskopiering, återställning, lista säkerhetskopiering, radering och så vidare. Innan du arbetar med pbm måste du konfigurera alternativ för säkerhetskopiering, återställningsalternativ och alternativ för punktåterställning.
Själva konfigurationsfilen lagras i en YAML-fil, och kommandot pbm config används för att ladda konfigurationsfilen. Några av kommandona för pbm-verktyget visas nedan:
- pbm config, kommandot som används för att konfigurera säkerhetskopieringsalternativet innan det körs.
- pbm backup, används för att ta en säkerhetskopia av MongoDB. Den stöder vissa komprimeringsmetoder som gzip, pgzip, lz4, snappy.
- pbm restore, kommandot som används för att återställa en säkerhetskopia till en nod.
- pbm-lista, lista över aktuella säkerhetskopior.
- pbm cancel-backup, används för att avbryta pågående säkerhetskopiering.
- pbm delete-backup, används för att ta bort säkerhetskopior. Det finns två alternativ; du kan ange filnamnet för säkerhetskopian för att radera eller ta bort säkerhetskopior som är äldre än en viss ålder.
Installation av Percona Backup för MongoDB
Det finns två sätt att installera Percona Backup för MongoDB, du kan använda pakethanteraren från operativsystemet och använda det officiella Percona Repository för att installera programvaran, eller så kan du bygga från källkod.
Som förutsättningar innan du installerar pbm via yum/apt-installationen måste du konfigurera Percona-förvaret och sedan aktivera pbm-förvaret:
[[email protected] ~]# percona-release enable pbm release
* Enabling the Percona Backup MongoDB repository
<*> All done!
Installera sedan Percona Backup för MongoDB. I det här fallet använder jag det CentOS-baserade operativsystemet så vi kommer att göra yum installation:
[[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 är klar kan du konfigurera pbm-agenten som en bakgrundsprocess och leka med pbm kommandoradsgränssnitt:
[[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
Säkerhetskopiering på gång
Innan du tar en säkerhetskopia av MongoDB, se till att pbm-agenten körs på varje nod och att säkerhetskopieringskonfigurationen har ställts in enligt nedan, ange sökvägen för säkerhetskopian:
[[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
Och testkör säkerhetskopieringen på en av de sekundära noderna:
[[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 var allt tills vidare. Kommer snart, ClusterControl 1.8.1 låter dig schemalägga och hantera dina MongoDB-kluster med Percona Backup för MongoDB.