Znaną i popularną metodą tworzenia kopii zapasowych dla MongoDB jest mongodump. Jest to logiczna metoda tworzenia kopii zapasowych, podobna do mysqldump w MySQL lub pg_dump w bazie danych PostgreSQL. Istnieje inne narzędzie do tworzenia kopii zapasowych o nazwie Percona Backup for MongoDB. Obsługuje zestawy replik i klastry shardów, a także bardziej zaawansowane funkcje, takie jak odzyskiwanie do punktu w czasie.
Ważne jest, aby pamiętać, że wykonuje on spójne kopie zapasowe dla klastra podzielonego na części mongodb, a także obsługuje obiektową pamięć masową zgodną z S3 do przechowywania kopii zapasowych. W tym blogu omówimy architekturę, instalację i użytkowanie Percona Backup for MongoDB.
Architektura
Percona Backup for MongoDB składa się z dwóch komponentów, z których pierwszy to narzędzie procesowe, które należy zainstalować na każdym węźle MongoDB, zwane pbm-agent. Agent pbm działa w celu koordynowania między węzłami bazy danych, uruchamiając proces tworzenia kopii zapasowej i przywracania. Sprawdza również, czy węzeł jest właściwym węzłem do wykonania kopii zapasowej. Agent pbm wymaga określonego użytkownika z pewnymi uprawnieniami roli; np.:readWrite, backup, clusterMonitor i restore. Musi również utworzyć nową rolę dla pbm z typem akcji anyAction i typem zasobu anyResource. Użytkownik musi istnieć w każdym węźle w zestawie replik, a także na serwerze konfiguracji, jeśli używasz architektury klastra podzielonego na fragmenty. Percona Backup for MongoDB używa metody ciągu połączenia URI MongoDB do łączenia się z bazą danych, dlatego za pierwszym razem wymaga dostępu do poświadczeń.
Innym składnikiem jest interfejs wiersza poleceń o nazwie pbm. Narzędzie pbm uruchamia działania związane z tworzeniem kopii zapasowej, np. wykonanie kopii zapasowej, przywracanie, tworzenie kopii zapasowej listy, usuwanie i tak dalej. Przed rozpoczęciem pracy z pbm należy skonfigurować opcje tworzenia kopii zapasowych, przywracania i przywracania do określonego momentu.
Sam plik konfiguracyjny jest przechowywany w pliku YAML, a polecenie pbm config jest używane do załadowania pliku konfiguracyjnego. Niektóre polecenia narzędzia pbm są pokazane poniżej:
- konfiguracja pbm, polecenie używane do konfiguracji opcji kopii zapasowej przed wykonaniem.
- kopia zapasowa pbm, używana do tworzenia kopii zapasowej MongoDB. Obsługuje niektóre metody kompresji, takie jak gzip, pgzip, lz4, snappy.
- przywracanie pbm, polecenie używane do przywracania kopii zapasowej do węzła.
- lista pbm, lista bieżących plików kopii zapasowych.
- pbm cancel-backup, używany do anulowania trwającego procesu tworzenia kopii zapasowej.
- pbm delete-backup, używany do usuwania plików kopii zapasowych. Istnieją dwie opcje; możesz określić nazwę pliku kopii zapasowej, aby usunąć lub usunąć pliki kopii zapasowej starsze niż określony wiek.
Instalacja Percona Backup dla MongoDB
Istnieją dwa sposoby zainstalowania Percona Backup for MongoDB, możesz użyć menedżera pakietów z systemu operacyjnego i użyć oficjalnego repozytorium Percona do instalacji oprogramowania lub możesz zbudować z kodu źródłowego.
Jako warunek wstępny przed zainstalowaniem pbm za pomocą instalacji yum/apt, musisz skonfigurować repozytorium Percona, a następnie włączyć repozytorium pbm:
[[email protected] ~]# percona-release enable pbm release
* Enabling the Percona Backup MongoDB repository
<*> All done!
Następnie zainstaluj Percona Backup for MongoDB. W tym przypadku używam systemu operacyjnego opartego na CentOS, więc zainstalujemy 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 zakończeniu możesz skonfigurować agenta pbm jako proces w tle i bawić się interfejsem wiersza poleceń 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
Kopia zapasowa w akcji
Przed wykonaniem kopii zapasowej MongoDB upewnij się, że agent pbm działa na każdym węźle, a konfiguracja kopii zapasowej została ustawiona tak, jak pokazano poniżej, ustaw ścieżkę kopii zapasowej:
[[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
I przetestuj tworzenie kopii zapasowej na jednym z węzłów drugorzędnych:
[[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 wszystko na teraz. Już wkrótce ClusterControl 1.8.1 umożliwi planowanie i zarządzanie klastrami MongoDB za pomocą Percona Backup for MongoDB.