MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách sao chép bộ sưu tập từ MongoDB này sang MongoDB khác trên cùng một máy chủ

Vài điều:

  1. Nói chung cloneCollection được sử dụng cho các phiên bản mongo khác nhau nhưng không được sao chép trên các phiên bản giống nhau.
  2. Ngoài ra nếu bạn đang sử dụng v4.2 bạn nên ngừng sử dụng copyDB &cloneCollection vì chúng không được dùng nữa tương thích với-v4.2 &bắt đầu sử dụng mongodump mongorestore hoặc mongoexport & mongoimport .
  3. Tôi khuyên bạn nên sử dụng mongodump & mongorestore :

    1. Nguyên nhân mongodump sẽ bảo toàn các kiểu dữ liệu của MongoDB, tức là; bson các loại.
    2. mongodump tạo một tệp nhị phân trong đó là mongoexport sẽ chuyển đổi bson tới json &một lần nữa mongoimport sẽ chuyển đổi json thành bson trong khi viết, đó là lý do tại sao chúng chậm. Bạn có thể sử dụng mongoexport &mongoimport khi muốn phân tích dữ liệu bộ sưu tập của mình một cách trực quan hoặc sử dụng json dữ liệu cho bất kỳ mục đích nào khác.
  4. Bạn có thể chạy tập lệnh bên dưới trong shell

    declare - a collections = ("collectionName1" "collectionName2")
    for i in "${collections[@]}"
    do
    echo "$i"
        mongodump --host "All-shards" --username=uname --password password --ssl --authenticationDatabase admin --db dbname --collection "$i"
    
        mongorestore --host=host-shard-name --port=27017 --username=uname --password=psswrd --ssl --authenticationDatabase=admin --db=dbname --collection= "$i" ./dump/dbName/"$i".bson;
    done
    

Để sử dụng mongodump , bạn phải chạy mongodump đối với một phiên bản mongod hoặc mongos đang chạy. Vì vậy, các lệnh này đang được chạy với hy vọng mongo được cài đặt đúng cách và thiết lập đường dẫn tốt, nếu không, bạn có thể điều hướng đến thư mục mongo và chạy như ./mongodump &./mongorestore . Tập lệnh trên sẽ hữu ích nếu bạn muốn sao lưu nhiều bộ sưu tập, Bạn cần chỉ định một số điều trong tập lệnh như:

  1. mongodump--host "All-shards" -> Ở đây bạn cần chỉ định tất cả các phân đoạn nếu MongoDB của bạn là một tập hợp bản sao, nếu không, bạn có thể chỉ định localhost:27017 .

  2. mongorestore --host=host-shard-name -> Bạn phải chỉ định một phân đoạn của tập hợp bản sao, còn lại localhost của bạn , Một số thứ ở đây có thể là tùy chọn --ssl , --username , --password .

  3. Vì vậy, mongodump sẽ tạo một thư mục có tên dump lần đầu tiên sẽ có các thư mục con với dbNames &mỗi thư mục con sẽ có bson các tệp tương ứng với tên bộ sưu tập của chúng đã được kết xuất, Vì vậy, bạn cần tham khảo dbName trong lệnh khôi phục &tên bộ sưu tập sẽ được lấy từ biến i -> ./dump/dbName/"$i".bson

Lưu ý: MongoDB v3.2 đã quá cũ và trong dịch vụ MongoDB dựa trên đám mây Mongo-atlas nó đã đạt đến cuối vòng đời, Vì vậy, vui lòng nâng cấp càng sớm càng tốt. Nếu bạn đang tìm kiếm một phiên bản mongo miễn phí hoặc bắt đầu với MongoDB - bạn có thể thử atlas.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. ClusterControl - Tất cả các tính năng nổi bật và cải tiến từ năm 2017

  2. MongoDBObject không được thêm vào bên trong vòng lặp rrd foreach casbah scala apache spark

  3. sự khác biệt giữa tổng hợp ($ match) và tìm kiếm, trong MongoDB?

  4. Gặp lỗi:Không thể áp dụng Route () trong Route cho String

  5. Làm cách nào để cập nhật tài liệu con Mongoose trong một phương thức cá thể?