Backup and restore mongodb using mongodump and mongorestore with Docker?

1 minute read

Published:

Giới thiệu

I. Vấn đề cần giải quyết

Backup dữ liệu từ mongodb trên server về máy local và import dữ liệu đã backup vào mongodb ở máy local.

Cài đặt

docker run -d --name=mongo44 -p=27017:27017 mongo:latest

Backup

Để backup dữ liệu của database trên server về máy local chúng ta dùng mongodump như sau.

docker exec <mongodb container> /bin/bash -c 'exec mongodump --host <hostname:port> --db <database> --gzip --archive' > db.gz

Như đã giới thiệu ở trên, khi xem running container là một máy ảo đang chạy Ubuntu chẳng hạn, thì ý tưởng ở đây là chui vào máy ảo dump data ra file rồi chuyển data từ máy ảo sang máy local. Và thật may mắn là Docker hỗ trợ câu lệnh giúp chúng ta làm điều đó với docker exec.

Docker Exec Syntax

docker exec <options> <container> <command>

Restore

docker exec -i <mongodb container> /bin/bash -c 'mongorestore --gzip --archive --nsFrom="db_test.*" --nsTo="db_dev.*" --drop' < db.gz

Export

sudo docker exec -it mongo44 /bin/bash -c 'mongoexport --host <hostname:port> --db <database-name> --collection <collection-name> --fields <field-name> --type <type/csv/gzip> --noHeaderLine' --query <query> > fields.csv

For further reading: https://docs.mongodb.com/database-tools/