Cách di chuyển MongoDB 2.6 sang 3.0 bằng WiredTiger


9

MongoDB 3.0 giới thiệu một công cụ lưu trữ mới được gọi là wiredTigergiúp giảm đáng kể việc sử dụng bộ nhớ và dung lượng ổ đĩa.

Vì DB của tôi hiện ở mức ~ 20 triệu đối tượng và sử dụng tối đa ~ 70GB RAM, bản cập nhật này xuất hiện đúng lúc để hoãn cập nhật phần cứng.

Làm cách nào để bạn di chuyển bản cài đặt MongoDB 2.6 sang 3.0 hiện có và đồng thời nhận được các lợi ích của WiredTiger?

Tài liệu đề cập đến các tùy chọn dẫn đến lỗi khởi động, ngăn MongoDB khởi động. Ngoài ra, vị trí tệp không khớp với vị trí trong Ubuntu (Máy chủ 14.04 LTS).


Đây có phải là một trường hợp duy nhất (không phải là một bản sao)?
Adam C

Câu trả lời:


15

Trong cài đặt mặc định, tập tin cấu hình là tại /etc/mongod.conf. Điều mà các tài liệu MongoDB không đề cập đến là khi di chuyển sang WiredTiger, chúng ta cũng cần cập nhật tệp cấu hình sang định dạng YAML mới được giới thiệu trong 2.6.
Theo như tôi có thể nói enginetùy chọn chỉ có sẵn ở định dạng cấu hình mới.
Di chuyển từ công cụ lưu trữ cũ bao gồm tạo kết xuất cơ sở dữ liệu, tắt mongodb, thay đổi cài đặt và sau đó nhập kết xuất vào công cụ lưu trữ mới.

  1. Tạo một bản sao lưu. Nghiêm túc. Chúng tôi cần một bãi chứa cơ sở dữ liệu mà sau đó chúng tôi sẽ nhập vào công cụ cơ sở dữ liệu mới:

    mongodump -d db_name /backup/path/  
    
  2. Dừng dịch vụ mongodb

    sudo service mongod stop  
    
  3. Di chuyển dữ liệu từ vị trí hiện tại sang nơi khác (MongoDB sẽ không khởi động nếu thư mục dữ liệu chứa các tệp được tạo bởi công cụ lưu trữ cũ).

    sudo mv /var/lib/mongodb /var/lib/mongodb_26/
    
  4. Nâng cấp MongoDB lên phiên bản 3.0 (từ http://docs.mongodb.org/v3.0/tutorial/install-mongodb-on-ub Ubuntu / ):

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10  
    echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list  
    sudo apt-get update  
    sudo apt-get install mongodb-org mongodb-org-server mongodb-org-shell mongodb-org-mongos mongodb-org-tools  
    
  5. Chuyển đổi tệp cấu hình từ cũ (trước 2.6) sang định dạng YAML hiện tại. Tối thiểu là:

    storage:  
        dbPath: "/var/lib/mongodb"  
        engine: wiredTiger  
    
    systemLog:  
       destination: file  
       path: "/var/log/mongodb/mongod.log"  
       logAppend: true  
    
    net:  
        bindIp: 127.0.0.1  
        port: 27017  
        # Enable the HTTP interface (Defaults to port 28017).  
        http:  
            enabled: false  
    

    Đảm bảo không còn dòng nào ở định dạng cũ hoặc MongoDB sẽ không bắt đầu.

    Tài liệu đầy đủ cho tệp cấu hình có tại: http://docs.mongodb.org/v3.0/reference/configuration-options/

  6. Tùy chọn tạo bản sao lưu của nhật ký:

    sudo mv /var/log/mongodb/mongod.log /var/log/mongodb/mongod_26.log
    
  7. Khởi động lại mongodb

    sudo service mongod start
    
  8. Tải bản sao lưu để chuyển đổi dữ liệu sang công cụ lưu trữ mới

    mongorestore /backup/location
    

Sau khi kiểm tra xem tất cả dữ liệu của bạn có ổn không, bạn có thể xóa thư mục với định dạng dữ liệu cũ

sudo rm -r /var/lib/mongodb_26/

Lưu ý rằng đối với các bản sao tập và cụm sharded có một số bước aditional: http://docs.mongodb.org/v3.0/release-notes/3.0-upgrade/?_ga=1.86531032.1131483509.1428671022#change-replica-set-storage -engine-to-Wiredtiger


1
Lưu ý: để biết ví dụ đầy đủ hơn về các tệp cấu hình YAML, hãy xem câu trả lời của tôi trên DBA: dba.stackexchange.com/a/82592/6441
Adam C

1

Sử dụng định dạng tệp cấu hình cũ , tôi đã thành công với:

lưu trữEngine = WiredTiger

Điều đó khá thú vị bởi vì tại thời điểm tôi viết bài đăng của mình, tôi đã thử chính xác điều đó và gặp một lỗi (mà tôi không nhớ lại).
Emanuel Ey
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.