Познатият и популярен метод за архивиране за MongoDB е mongodump. Това е логически метод за архивиране, подобен на mysqldump в MySQL или pg_dump в базата данни PostgreSQL. Има друг инструмент за архивиране, наречен Percona Backup за MongoDB. Той има поддръжка за набори от реплики и клъстери от фрагменти, както и по-усъвършенствани функции като възстановяване в момент.
Важно е да се отбележи, че той извършва последователно архивиране за вашия mongodb разчленен клъстер и също така поддържа S3 съвместимо съхранение на обекти за съхраняване на резервните копия. В този блог ще обсъдим архитектурата, инсталирането и използването на Percona Backup за MongoDB.
Архитектура
Percona Backup за MongoDB се състои от два компонента, първият е процесна помощна програма, която трябва да бъде инсталирана на всеки възел на MongoDB, наречена pbm-agent. pbm-агентът действа за координиране между възлите на базата данни, като изпълнява процеса на архивиране и възстановяване. Той също така проверява дали възелът е правилният възел за вземане на резервно копие. pbm-агентът изисква конкретен потребител с някои ролеви привилегии; например:readWrite, архивиране, clusterMonitor и възстановяване. Той също така трябва да създаде нова роля за pbm с тип действие anyAction и тип ресурс anyResource. Потребителят трябва да съществува на всеки възел в набора от реплики, а също и в конфигурационния сървър, ако използвате архитектура на разчленен клъстер. Percona Backup за MongoDB използва метод за свързване на MongoDB URI за свързване с базата данни, поради което изисква достъп с идентификационни данни за първи път.
Другият компонент е интерфейсът на командния ред, наречен pbm. Помощната програма pbm задейства действията, свързани с архивирането, например, изпълняване на архивиране, възстановяване, архивиране на списък, изтриване и т.н. Преди да работите с pbm, ще трябва да конфигурирате опции за архивиране, опции за възстановяване и опции за възстановяване в даден момент.
Самият конфигурационен файл се съхранява в YAML файл, а командата pbm config се използва за зареждане на конфигурационния файл. Някои от командите за pbm помощната програма са показани по-долу:
- pbm config, командата, използвана за конфигуриране на опцията за архивиране, преди да бъде изпълнена.
- pbm архивиране, се използва за вземане на резервно копие на MongoDB. Той поддържа някои методи за компресиране като gzip, pgzip, lz4, snappy.
- pbm възстановяване, командата, използвана за възстановяване на резервно копие на възел.
- pbm списък, списък на текущите архивни файлове.
- pbm cancel-backup, използва се за отмяна на текущия процес на архивиране.
- pbm delete-backup, използва се за изтриване на архивни файлове. Има две възможности; можете да посочите името на файла за архивиране, за да изтриете или изтриете архивни файлове, които са по-стари от определена възраст.
Инсталиране на Percona Backup за MongoDB
Има два начина, по които можете да инсталирате Percona Backup за MongoDB, можете да използвате мениджъра на пакети от операционната система и да използвате официалното хранилище на Percona за инсталиране на софтуера, или можете да изградите от изходен код.
Като предварителни условия, преди да инсталирате pbm чрез инсталацията yum/apt, трябва да конфигурирате Percona Repository и след това да активирате pbm хранилището:
[[email protected] ~]# percona-release enable pbm release
* Enabling the Percona Backup MongoDB repository
<*> All done!
След това инсталирайте Percona Backup за MongoDB. В този случай използвам базираната на CentOS операционна система, така че ще направим yum install:
[[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!
След като приключи, можете да конфигурирате pbm-agent като фонов процес и да играете с интерфейса на 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
Резервно копие в действие
Преди да направите резервно копие на MongoDB, уверете се, че pbm-agent работи на всеки възел и конфигурацията за архивиране е зададена, както е показано по-долу, задайте пътя на архивирането:
[[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
И пробно стартирайте архивирането на един от вторичните възли:
[[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
Това е всичко за сега. Очаквайте скоро, ClusterControl 1.8.1 ще ви позволи да планирате и управлявате вашите MongoDB клъстери с помощта на Percona Backup за MongoDB.