¿Cómo hacer una copia de seguridad y restaurar una base de datos MongoDB?

MongoDB se considera uno de los ejemplos clásicos de sistemas NoSQL. Sus documentos están compuestos por pares clave-valor, que son la unidad básica de datos en MongoDB. Sus colecciones contienen grupos de documentos y funciones que son equivalentes a tablas en bases de datos relacionales. MongoDB es una base de datos que surgió a mediados de la década de 2000. En este artículo, aprenderemos cómo hacer una copia de seguridad de los datos y luego restaurarlos. La guía fue desarrollada en una computadora con el sistema operativo Ubuntu 20.04.2 LTS.

formato de datos MongoDB

Uno de los estándares populares para el intercambio y almacenamiento de datos es JSON (Notación de objetos de JavaScript). JSON puede describir efectivamente datos con estructuras complejas. En este sentido, la forma de almacenar datos en MongoDB es similar a JSON, aunque técnicamente no se utiliza JSON. En lugar de JSON, MongoDB usa BSON (JSON binario) para almacenar datos en MongoDB. BSON hace que trabajar con datos sea más rápido. Proporciona una búsqueda y un procesamiento más rápidos. Aunque cabe señalar que BSON, a diferencia de JSON, tiene un pequeño inconveniente. En general, los datos JSON ocupan menos espacio que los de BSON; por otro lado, la alta velocidad compensaría completamente esta desventaja.

Entonces, conectémonos a nuestro MongoDB y creemos tres bases de datos para copias de seguridad. Serán DB1, DB2 y DB3. Para llenar estas bases de datos, agreguemos algunas colecciones.

use DB1
db.createCollection("posts1")
db.createCollection("address1")
db.createCollection("phone1")

use DB2
db.createCollection("posts2")
db.createCollection("address2")
db.createCollection("phone2")

use DB3
db.createCollection("posts3")
db.createCollection("address3")
db.createCollection("phone3")

Hemos creado nuestras bases de datos. Ahora vamos a comprobar si todo está bien:

use admin
show dbs

Como puede ver, nuestras bases de datos están bien. Ahora vamos a comprobar si tienen las colecciones que hemos creado antes.

use DB1
show collections

use DB2
show collections

use DB3
show collections

Todas las colecciones están ahí. Ahora podemos pasar a la primera opción de copia de seguridad.

Para hacer una copia de seguridad, inicie sesión como root. Ahora cree un directorio para almacenar la copia de seguridad:

$ mkdir /tmp/backup_v1

Ahora use el siguiente comando para crear una copia de seguridad:

$ mongodump --host=localhost --gzip --db DB1 --archive=/tmp/backup_v1/backup-db-1.gz

Ahora, después de crear una copia de seguridad, vayamos al directorio de la base de datos y veamos qué tiene usando el siguiente comando:

$ ls -la /tmp/backup_v1

Como puedes ver, nuestra Copia de Seguridad acaba de ser creada.

Ahora, para restaurar los datos de este tipo de copia de seguridad, usamos el siguiente comando:

$ mongorestore --gzip --archive=/tmp/backup_v1/backup-db-1.gz

En este ejemplo, usamos solo un comando para hacer una copia de seguridad, que luego se archiva. Hay varias opciones sobre cómo hacer una copia de seguridad. En este artículo, los discutiremos uno por uno.

Copia de seguridad de todas las bases de datos, sin compresión de datos.

Vamos a crear un directorio para almacenar la copia de seguridad:

$ mkdir /tmp/backup_v2

Use el siguiente comando para hacer una copia de seguridad:

$ mongodump --out /tmp/backup_v2

Después de una copia de seguridad exitosa, vayamos al directorio de la base de datos y veamos qué tiene. Tiene colecciones BSON y JSON sin compresión.

$ ls -la /tmp/backup_v2/db1

Ahora restaure los datos de esta copia de seguridad usando el siguiente comando:

$ mongorestore --drop --dir /tmp/backup_v2

Aquí, el parámetro –drop se usa para eliminar una colección antes de importarla (si existe) para evitar errores de clave duplicada. Este parámetro –drop debe usarse con precaución.

Ahora restaure una colección específica (por ejemplo, posts1 de DB1) desde una copia de seguridad de todas las bases de datos:

$ mongorestore --drop --dir /tmp/backup_v2 --nsInclude 'DB1.posts1'

Restaure todas las bases de datos y todas las colecciones excepto una colección específica (por ejemplo, posts1 de DB1):

$ mongorestore --drop --dir /tmp/backup_v2 --nsExclude 'DB1.posts1'

Copia de seguridad de todas las bases de datos con compresión

Ahora cree una copia de seguridad y comprima el archivo de copia de seguridad:

$ mkdir /tmp/backup_v3
$ mongodump --gzip --out /tmp/backup_v3

Ahora vea el archivo de copia de seguridad:

$ ls -la /tmp/backup_v3/db1

Aquí el archivo de copia de seguridad contiene archivos comprimidos.

Ahora restaure los datos de este tipo de copia de seguridad:

$ mongorestore --gzip --drop --dir /tmp/backup_v3

Copia de seguridad de todas las bases de datos con compresión en un solo archivo (.gz)

Cree una copia de seguridad de todas las bases de datos con compresión en un solo archivo (.gz):

$ mkdir /tmp/backup_v4/
$ mongodump --gzip --archive=/tmp/backup_v4/my_backup.gz

Ahora restaure los datos de la copia de seguridad usando el siguiente comando:

$ mongorestore --gzip --drop --archive=/tmp/backup_v4/my_backup.gz

Hacer una copia de seguridad de una base de datos específica

Crear una copia de seguridad de una base de datos específica

$ mkdir /tmp/backup_v5
$ mongodump --gzip --out /tmp/backup_v5 --db DB2

Restaure los datos de esta copia de seguridad:

$ mongorestore --gzip --drop --dir /tmp/backup_v5

Copia de seguridad de una única colección de direcciones2 de DB2

Cree una copia de seguridad de una sola colección de direcciones2 de DB2

$ mkdir /tmp/backup_v6
$ mongodump --gzip --out /tmp/backup_v6 --db DB2 -c address2

Realice una copia de seguridad de DB2 completo excepto una sola colección de publicaciones2

Cree una copia de seguridad de DB2 completo, excepto una sola colección de publicaciones2

$ mkdir /tmp/backup_v7
$ mongodump --gzip --out /tmp/backup_v7 --db DB2 --excludeCollection posts2

Publicación traducida automáticamente

Artículo escrito por alexeyshepelev y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *