2013-04-12 21 views
23

Tôi đã cố gắng sao lưu cơ sở dữ liệu mongo của mình trên sever sản phẩm rồi sau đó khôi phục lại sau đó quay lại máy chủ dàn dựng. và ở đây có một số vấn đề, có rất nhiều bộ sưu tập trong db, tôi muốn igonre một số bộ sưu tập mà tôi không muốn khôi phục trên máy chủ dàn dựng.Mongodump bỏ qua một số bộ sưu tập được chỉ định

Tôi có thể tiếp cận điều này bằng cách dumpping db dàn dựng, dumpping db sản xuất, và sau đó khôi phục prodct để dàn dựng sử dụng tùy chọn --drop. và khôi phục các bộ sưu tập được chỉ định trong phân đoạn db. uh..nó rất tệ.

1. bãi tâm sản xuất db

mongodump --host product-server-host --username abcd --password bcda -d db -o pruduct-dump-dir 

2. bãi dàn db

mongodump --host staging-server-host --username abcd --password bcda -d db -o staging -dump-dir 

3. khôi phục tất cả các bộ sưu tập, sau đó khôi phục lại bộ sưu tập khôi phục pruduct-dump -dir to staging server

mongorestore --host staging-server-host --username abcd --password bcda --drop pruduct-dump-dir 

mongorestore --host staging-server-host --username abcd --password bcda --drop --collection coll pruducting-dump-dir 

Có tùy chọn nào như bỏ qua bộ sưu tập khi tôi đang sử dụng không? mọi đề xuất sẽ được đánh giá cao: 3

Trả lời

6

Bạn có thể thêm --collection COLLECTION_NAME để đổ bộ sưu tập mình cần. Theo mặc định, nếu bạn không chỉ định một bộ sưu tập để đổ từ một cơ sở dữ liệu, MongoDump sẽ đổ tất cả các bộ sưu tập trong cơ sở dữ liệu đó.

+1

gì nếu tôi có 20 bộ sưu tập cần phải đổ trừ 4 bộ sưu tập – sashimi

+1

Bạn sẽ cần phải đổ từng bộ sưu tập riêng lẻ. – Nick

+13

vâng một cái gì đó như '--exclude_collection col1 col2 col3' sẽ là tuyệt vời. Không đề cập đến nó trong http://docs.mongodb.org/manual/reference/program/mongodump/. Dường như có một yêu cầu tính năng trong Jira MongoDB: https://jira.mongodb.org/browse/SERVER-2459 bạn nên bỏ phiếu cho vấn đề – tester

42

Bây giờ có sẵn từ phiên bản 3.0.0

--excludeCollection <collection_name> 
--excludeCollectionsWithPrefix <collection_prefix> 

Lặp lại để loại trừ hơn 1

Thanh toán the documentation

+7

Tài liệu được chứng minh dường như không cho biết hoàn toàn về ý nghĩa của "mảng dây".Không thực sự là một ý tưởng thống nhất của mảng như các tham số trong trình bao, do đó có thể có nghĩa là bất cứ điều gì. Nó là một chuỗi với dấu phẩy phân cách? Có bất kỳ số chuỗi nào cho đến khi một lá cờ mới được gặp phải không? Chúng ta có nên đặt '()' s hay '[]' xung quanh nó không? Điều gì về việc lặp lại cờ với một bộ sưu tập khác? Tất cả những điều này được sử dụng như thay thế cho mảng, nó sẽ được tốt đẹp nếu ai đó có thể làm rõ những gì họ thực sự muốn. – Thor84no

+8

@ Thor84no bạn đúng, không có ý nghĩa gì. Nhưng để loại trừ nhiều hơn một bộ sưu tập, bạn có thể lặp lại tham số excludeCollection (tôi nghĩ đây là ý nghĩa của chúng với mảng). Ví dụ: 'mongodump --excludeCollection = users --excludeCollection = jobs -d mydatabase' –

+0

Cảm ơn, điều đó rất hữu ích. – Thor84no

0
mongodump --db test --excludeCollection=users --excludeCollection=salaries 
+0

sẽ có thể thêm mô tả để trả lời. Tôi không chắc chắn câu trả lời chỉ có mã là tốt và stackoveflow tiêu chuẩn. –

0

Tính đến Mongo 3.4, bạn có thể chỉ định tại một tùy chọn --nsExclude <namespace pattern> khi khôi phục từ một kho cơ sở dữ liệu Mongo, sẽ loại bỏ các không gian tên được chỉ định khỏi hoạt động khôi phục. Điều này đặc biệt hữu ích khi hoạt động mongodump đã xảy ra.

tài liệu chính thức ở đây: https://docs.mongodb.com/manual/reference/program/mongorestore/#cmdoption-nsexclude

Bạn có thể loại trừ nhiều bộ sưu tập với các kí hiệu:

mongorestore --db test --nsExclude 'test.*_tmp' 

Hoặc cách khác, quy định cụ thể nhiều --nsExclude tùy chọn làm việc cũng như:

mongorestore --db test --nsExclude 'test.collection1' --nsExclude 'test.collection2' 
Các vấn đề liên quan