Generalmente se suele hacer cuando se requiere copiar la BD para replicar el environment de producción en el entorno personal y de esta manera replicar errores o simplemente si se desea hacer una copia de seguridad.
Cualquiera sea el caso, en el presente artículo se explicará cómo por medio de las herramientas que brinda mongodb, se pueden hacer copias de la BD.
Para hacer una copia de una BD en mongodb se puede realizar de manera muy sencilla por medio de la utilidad mongodump, que viene como parte de mongodb por defecto a partir de la versión 4.0.
mongodump
--host <source host:port>
--ssl
--username <username>
--password <password>
--authenticationDatabase admin
--db <sourceDbName>
--collection <collection-name>
Vistos los parámetros necesarios para utilizar mongodump, a continuación se muestra un ejemplo de cómo hacer uso de esta utilidad y copiar la BD que se desee:
mongodump --host 127.0.0.1:27017 --db mydb
El comando anterior genera una carpeta dump/<db-name>
en la que podemos encontrar la copia de la BD.
Otra manera en la que se puede hacer lo anterior sin instalar mongodb, es por medio de docker. Todo se reduce a ejecutar un contenedor de docker que tenga mongodb instalado (y por consiguiente mongodump) y ejecutar esta utilidad de la misma manera. El único detalle a tener en cuenta, es que la copia de la BD será realizada dentro de la imagen de docker en que estamos trabajando, por lo que necesitamos copiar la información fuera del mismo (utilizando los volúmenes de docker). seguidamente un ejemplo:
docker run \
-v /home/dbsalva:/dump \
--network="host" -d \
mongo \
sh -c 'mongodump --host 127.0.0.1:27017 --db mydb'
Explicando el ejemplo anterior línea a línea:
--network="host"
que permite al contenedor de docker tener acceso a los servicios fuera del contenedor actual (esto se traduce en que 127.0.0.1, no es el localhost del contenedor sino el localhost del sistema) y seguido de esto se utiliza -d
para que la ejecución de los comandos estén desligados de la ejecución.Al concluir la ejecución del comando anterior, podemos acceder a la salva de la BD en la carpeta dbsalva.
A lo antes visto, solo queda agregarle el cómo se puede recuperar la BD copiada. Para esto se puede utilizar otra utilidad de mongodb que se llama mongorestore
.
mongorestore
--host <target host:port>
--ssl
--username <username>
--password <password>
--authenticationDatabase admin
--db <targetDbName>
--collection <collection-name>
<ruta-de-la-salva>
y puesto en práctica:
mongorestore --host 127.0.0.1:27017 --db mydb /home/dbsalva/mydb
Tal y como se mostró en el caso de copiar la BD, vamos a utilizar exactamente el mismo comando, con la diferencia del comando a ejecutar dentro del contenedor de docker.
docker run \
-v /home/dbsalva:/dump \
--network="host" -d \
mongo \
sh -c 'mongorestore --host 127.0.0.1:27017 --db mydb /dump/mydb'
Esta es una de las muchas maneras en que se puede salvar/copiar/clonar una BD de mongodb en solo 2 comandos sencillos.
Artículo sobre configurar tus bases de datos mongodb con docker
Happy coding!!!