O método de backup conhecido e popular para o MongoDB é o mongodump. É um método de backup lógico, semelhante ao mysqldump no MySQL ou pg_dump no banco de dados PostgreSQL. Existe outra ferramenta de backup chamada Percona Backup for MongoDB. Ele tem suporte para conjuntos de réplicas e clusters de fragmentos, além de recursos mais avançados, como recuperação pontual.
É importante observar que ele executa um backup consistente para seu cluster fragmentado mongodb e também suporta armazenamento de objetos compatível com S3 para armazenar os backups. Neste blog, discutiremos arquitetura, instalação e uso do Percona Backup for MongoDB.
Arquitetura
Percona Backup for MongoDB consiste em dois componentes, o primeiro é um utilitário de processo que precisa ser instalado em cada nó do MongoDB, chamado pbm-agent. O agente pbm atua na coordenação entre os nós do banco de dados, executando o processo de backup e restauração. Ele também verifica se o nó é o nó correto para fazer o backup. O agente pbm requer um usuário específico com alguns privilégios de função; por exemplo:readWrite, backup, clusterMonitor e restore. Ele também precisa criar uma nova função para pbm com o tipo de ação anyAction e o tipo de recurso anyResource. O usuário deve existir em cada nó no conjunto de réplicas e também no servidor de configuração se você usar a arquitetura de cluster fragmentado. O Percona Backup for MongoDB usa um método de string de conexão de URI do MongoDB para se conectar ao banco de dados, e é por isso que requer acesso de credencial na primeira vez.
O outro componente é a interface de linha de comando chamada pbm. pbm aciona as ações relacionadas ao backup, por exemplo, executar backup, restaurar, listar backup, excluir e assim por diante. Antes de trabalhar com pbm, você precisa configurar opções de backup, opções de restauração e opções de recuperação pontual.
O próprio arquivo de configuração é armazenado em um arquivo YAML, e o comando pbm config é usado para carregar o arquivo de configuração. Alguns dos comandos para o utilitário pbm são mostrados abaixo:
- pbm config, o comando usado para configurar a opção de backup antes de ser executada.
- backup pbm, usado para fazer backup do MongoDB. Ele suporta alguns métodos de compactação, como gzip, pgzip, lz4, snappy.
- pbm restore, o comando usado para restaurar um backup em um nó.
- lista pbm, lista dos arquivos de backup atuais.
- pbm cancel-backup, usado para cancelar o processo de backup em execução.
- pbm delete-backup, usado para excluir arquivos de backup. Existem duas opções; você pode especificar o nome do arquivo de backup para excluir ou excluir arquivos de backup com mais de uma determinada idade.
Instalação do Percona Backup para MongoDB
Existem duas maneiras de instalar o Percona Backup para MongoDB, você pode usar o gerenciador de pacotes do sistema operacional e usar o Repositório Percona oficial para instalar o software, ou você pode compilar a partir do código-fonte.
Como pré-requisitos antes de instalar o pbm através da instalação do yum/apt, você precisa configurar o Percona Repository, e depois disso, habilitar o repositório pbm:
[[email protected] ~]# percona-release enable pbm release
* Enabling the Percona Backup MongoDB repository
<*> All done!
Em seguida, instale o Percona Backup para MongoDB. Nesse caso, estou usando o sistema operacional baseado em CentOS, então faremos a instalação do 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!
Depois de concluído, você pode configurar o pbm-agent como um processo em segundo plano e brincar com a interface de linha de 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 em ação
Antes de fazer um backup do MongoDB, verifique se o pbm-agent está sendo executado em cada nó e se a configuração do backup foi definida conforme mostrado abaixo, defina o caminho do 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 teste a execução do backup em um dos nós secundários:
[[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
É tudo por agora. Em breve, o ClusterControl 1.8.1 permitirá que você agende e gerencie seus clusters MongoDB usando o Percona Backup for MongoDB.