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

Khôi phục kết xuất cơ sở dữ liệu của phiên bản mongo cũ hơn sang phiên bản mongo mới

Tôi đã hỏi điều này cùng một câu hỏi trong danh sách gửi thư MongoDB chính thức . Họ nói rằng không nên nâng cấp nhiều hơn 1 phiên bản chính cùng một lúc. (Các phiên bản chính là:2.2, 2.4, 2.6, 3.0, 3.2, 3.4)

Tôi không muốn thực hiện theo quy trình nâng cấp bình thường khi cài đặt mọi phiên bản Chỉ để khởi chạy mongod và sau đó tắt nó. Điều đó đối với tôi cảm giác như nó sẽ bỏ lại phía sau và tôi muốn có kịch bản xây dựng cơ sở hạ tầng và kiểm soát phiên bản của mình. Vì vậy, tôi quyết định khởi chạy các phiên bản EC2 mới với Ubuntu mới nhất (vì máy chủ Mongo v2.4 của tôi cũng chạy sau 2 phiên bản LTS) và MongoDB mới nhất. Tôi đã sử dụng hình ảnh docker của các phiên bản trung gian của MongoDB để nâng cấp dữ liệu.

https://gist.github.com/Richard9a35cpngufd060 -sh

Phần lớn giải pháp là:

# mongo.conf is using the default dbPath: /var/lib/mongodb
# this path is for temporary use by the mongo docker container
mkdir -p /data/db/dump
# see: https://hub.docker.com/_/mongo/ (search for /data/db)
# see: https://github.com/docker-library/mongo/blob/30d09dbd6343d3cbd1bbea2d6afde49f5d9a9295/3.4/Dockerfile#L59
cd /data/db
mongodump -h prodmongo.int

# Get major versions from https://hub.docker.com/r/library/mongo/tags/
step=0
for major_version in 2.6.12 3.0.14 3.2.11 3.4.1; do
    sudo docker stop some-mongo || true
    sudo docker rm   some-mongo || true
    sudo docker run --name some-mongo -v /data/db:/data/db -d mongo:$major_version
    false; while [[ $? > 0 ]]; do
        sleep 0.5
        sudo docker exec -it some-mongo mongo --eval 'printjson((new Mongo()).getDBNames())'
    done
    if (( $step == 0 )); then
        sudo docker exec -it some-mongo mongorestore /data/db/dump
    fi
    ((step += 1))
done

# Finish up with docker
sudo rm -rf /data/db/dump/*
sudo docker exec -it some-mongo bash -c 'cd /data/db; mongodump'
sudo docker stop some-mongo
sudo docker rm   some-mongo

# Load upgraded data into latest version of MongoDB (WiredTiger storage engine will be used)
mongorestore /data/db/dump
sudo rm -rf /data


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Lược đồ con trên Mongoose không có Mảng

  2. Làm thế nào để tạo Tài liệu Bson với giá trị Null bằng cách sử dụng trình điều khiển chính thức của C #?

  3. Sắp xếp hiệu quả các kết quả của truy vấn không gian địa lý mongodb

  4. Chèn dữ liệu vào Meteor từ API Facebook

  5. Làm cách nào để tắt tính năng ghi nhật ký của MongoDB?