Hướng dẫn sao lưu, khôi phục data mongo (mongodump, mongorestore)
Trong bài này mình sẽ hướng dẫn sao lưu, khôi phục data của mongodb một cách đơn giản nhất.
Ví dụ mongodump, mongorestore
Mongo hỗ trợ 2 cách để sao lưu, khôi phục data là mongodump/mongorestore với mongoimport/mongoexport tuy nhiên mongoimport/mongoexport chỉ dùng cho trường hợp data nhỏ nên ở đây mình chỉ đề cập tới mongodump/mongorestore.
1. Ví dụ mongodump
Để sao lưu data thành file .gz ta dùng câu lệnh sau:
mongodump --host={host:port} --authenticationDatabase={authenticationDatabase} -u={username} -p={password} --db={database} --collection={collection} --archive={filename.gz} --gzip --query=<json>
(lệnh mongodump còn nhiều tùy chọn khác, tuy nhiên ở đây mình chỉ đưa ra các lựa chon đơn giản nhất để có thể sao lưu data).
Trong đó: --host={host:port} --authenticationDatabase={authenticationDatabase} -u={username} -p={password}
là thông tin của database mà bạn cần backup lại
- default host:port sẽ là localhost:27017 nên nếu bạn chạy ở local thì có thể bỏ qua option
--host
- nếu bạn ko cài password cho database thì cũng có thể bỏ qua các option
--authenticationDatabase
,-u
,-p
--db
: chỉ rõ database bạn muốn backup, nếu ko chọn thì mặc định nó sẽ sao lưu lại tất cả database trên host--collection
: chỉ rõ collection bạn muốn backup, nếu bỏ qua thì nó sẽ sao lưu tất cả collection trong database--archive={filename.gz} --gzip
: để chọn backup ra file.gz
(nếu ko có sẽ lưu lại thành folder với nhiều mục nhỏ)--query=<json>
: dùng để tùy chọn các bản ghi được backup, ví dụ chỉ chọn backup các bản ghi có tên là ‘xyz’…
Lưu ý: khi sử dụng --query
trên window thường hay bị lỗi parse json nên người ta hay dùng --queryFile=path_file
. Với path_file
là đường dẫn tới file json chứa thông tin query, cách này vừa hạn chế lỗi, vừa cho phép các câu query nâng cao).
2. Ví dụ mongorestore
Để khôi phục (restore) data từ file .gz được backup bằng lệnh mongodump, ta sử dụng lệnh mongorestore với cú pháp như sau:
mongorestore --host={host:port} --authenticationDatabase={authenticationDatabase} -u={username} -p={password} --db={database} --collection={collection} --archive={filename.gz} --gzip
Nếu bạn ko chỉ rõ --db
và --collection
thì nó sẽ restore lại tất cả data trong file .gz, theo đúng database name và collection name đã backup
Trường hợp tên database hoặc tên collection ở nơi bạn muốn restore khác với tên lúc backup thì ta sử dụng option --nsFrom
và --nsTo
như sau:
mongorestore --host={host:port} --authenticationDatabase={authenticationDatabase} -u={username} -p={password} --archive={filename.gz} --gzip --nsFrom={sourceDatabase.sourceCollection} --nsTo={destinationDatabase.destinationCollection}
Demo
Ví dụ mình muốn chuyển data từ collection fruit
từ database store_1
sang collection fruit
của database store_2
Thực hiện backup lại data của collection fruit
của của database store_1
thành file fruit.gz
mongodump --db=store_1 -c=fruit --archive=fruit.gz --gzip
Thực hiện restore data từ file fruit.gz vào collection fruit
của database store_2
mongorestore --archive=fruit.gz --gzip --nsFrom=store_1.fruit --nsTo=store_2.fruit
Kết quả:
Okay, Done!
References: