El método de respaldo conocido y popular para MongoDB es mongodump. Es un método de respaldo lógico, similar a mysqldump en MySQL o pg_dump en la base de datos PostgreSQL. Hay otra herramienta de copia de seguridad llamada Percona Backup for MongoDB. Tiene soporte para conjuntos de réplicas y clústeres de fragmentos, así como características más avanzadas como la recuperación de un punto en el tiempo.
Es importante tener en cuenta que realiza una copia de seguridad coherente para su clúster fragmentado de mongodb y también es compatible con el almacenamiento de objetos compatible con S3 para almacenar las copias de seguridad. En este blog, discutiremos la arquitectura, la instalación y el uso de Percona Backup para MongoDB.
Arquitectura
Percona Backup for MongoDB consta de dos componentes, el primero es una utilidad de proceso que debe instalarse en cada nodo de MongoDB, llamada pbm-agent. El agente pbm actúa para coordinar entre los nodos de la base de datos, ejecutando el proceso de copia de seguridad y restauración. También comprueba si el nodo es el nodo correcto para realizar la copia de seguridad. El pbm-agent requiere un usuario específico con algunos privilegios de rol; por ejemplo:readWrite, copia de seguridad, clusterMonitor y restauración. También necesita crear un nuevo rol para pbm con el tipo de acción anyAction y el tipo de recurso anyResource. El usuario debe existir en cada nodo del conjunto de réplicas y también en el servidor de configuración si usa una arquitectura de clúster fragmentado. Percona Backup for MongoDB utiliza un método de cadena de conexión URI de MongoDB para conectarse a la base de datos, por lo que requiere acceso con credenciales la primera vez.
El otro componente es la interfaz de línea de comandos llamada pbm. La utilidad pbm activa las acciones relacionadas con la copia de seguridad, por ejemplo, ejecutar la copia de seguridad, restaurar, enumerar la copia de seguridad, eliminar, etc. Antes de trabajar con pbm, deberá configurar las opciones de copia de seguridad, las opciones de restauración y las opciones de recuperación de un punto en el tiempo.
El archivo de configuración en sí se almacena en un archivo YAML y el comando pbm config se usa para cargar el archivo de configuración. Algunos de los comandos para la utilidad pbm se muestran a continuación:
- pbm config, el comando utilizado para configurar la opción de copia de seguridad antes de ejecutarlo.
- copia de seguridad de pbm, utilizada para realizar una copia de seguridad de MongoDB. Admite algunos métodos de compresión como gzip, pgzip, lz4, snappy.
- pbm restore, el comando utilizado para restaurar una copia de seguridad en un nodo.
- lista pbm, lista de los archivos de copia de seguridad actuales.
- pbm cancel-backup, utilizado para cancelar el proceso de copia de seguridad en ejecución.
- pbm delete-backup, utilizado para eliminar archivos de copia de seguridad. Hay dos opciones; puede especificar el nombre de archivo de la copia de seguridad para eliminar o eliminar los archivos de copia de seguridad que tienen más de cierta antigüedad.
Instalación de Percona Backup para MongoDB
Hay dos formas de instalar Percona Backup para MongoDB, puede usar el administrador de paquetes del sistema operativo y usar el Repositorio oficial de Percona para instalar el software, o puede compilar a partir del código fuente.
Como requisitos previos antes de instalar el pbm a través de la instalación de yum/apt, debe configurar el Repositorio de Percona y luego habilitar el repositorio de pbm:
[[email protected] ~]# percona-release enable pbm release
* Enabling the Percona Backup MongoDB repository
<*> All done!
Luego, instale Percona Backup para MongoDB. En este caso, estoy usando el sistema operativo basado en CentOS, así que haremos 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!
Después de que esté completo, puede configurar pbm-agent como un proceso en segundo plano y jugar con la interfaz de línea de comandos de 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
Copia de seguridad en acción
Antes de realizar una copia de seguridad de MongoDB, asegúrese de que pbm-agent se esté ejecutando en cada nodo y que la configuración de la copia de seguridad se haya establecido como se muestra a continuación, configure la ruta de la copia de seguridad:
[[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
Y prueba ejecutar la copia de seguridad en uno de los nodos secundarios:
[[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
Eso es todo por ahora. Próximamente, ClusterControl 1.8.1 le permitirá programar y administrar sus clústeres de MongoDB utilizando Percona Backup para MongoDB.