Cara memigrasi MongoDB 2.6 ke 3.0 dengan WiredTiger

9

MongoDB 3.0 memperkenalkan mesin penyimpanan baru yang disebut wiredTigeryang menghasilkan memori yang sangat berkurang dan penggunaan ruang disk.

Karena DB saya saat ini ~ 20 juta objek dan menggunakan ~ 70GB RAM, pembaruan ini datang pada waktu yang tepat untuk menunda pembaruan perangkat keras.

Bagaimana Anda memigrasi instalasi MongoDB 2.6 ke 3.0 yang ada dan pada saat yang sama mendapatkan manfaat dari wiredTiger?

Dokumentasi mengacu pada opsi yang menghasilkan kesalahan startup yang mencegah MongoDB memulai. Juga, lokasi file tidak cocok dengan yang ada di Ubuntu (Server 14.04 LTS).

Emanuel Ey
sumber
Apakah ini satu contoh (bukan set replika)?
Adam C

Jawaban:

15

Dalam instalasi default, file konfigurasi di /etc/mongod.conf. Apa yang tidak disebutkan oleh dokumentasi MongoDB adalah bahwa ketika bermigrasi ke WiredTiger kita juga perlu memperbarui file konfigurasi ke format YAML baru yang diperkenalkan pada 2.6.
Sejauh yang saya tahu engineopsi hanya tersedia dalam format konfigurasi baru.
Bermigrasi dari mesin penyimpanan lama terdiri dari membuat database dump, mematikan mongodb, mengubah pengaturan dan kemudian mengimpor dump ke mesin penyimpanan baru.

  1. Buat cadangan. Serius. Kami membutuhkan dump basis data yang kemudian akan kami impor ke mesin database baru:

    mongodump -d db_name /backup/path/  
    
  2. Hentikan layanan mongodb

    sudo service mongod stop  
    
  3. Pindahkan data dari lokasi saat ini ke tempat lain (MongoDB tidak akan memulai jika direktori data berisi file yang dihasilkan oleh mesin penyimpanan lama).

    sudo mv /var/lib/mongodb /var/lib/mongodb_26/
    
  4. Tingkatkan MongoDB ke versi 3.0 (dari http://docs.mongodb.org/v3.0/tutorial/install-mongodb-on-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. Konversikan file konfigurasi dari yang lama (pra 2.6) ke format YAML saat ini. Minimal adalah:

    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  
    

    Pastikan tidak ada baris dalam format lama yang tersisa, atau MongoDB tidak akan memulai.

    Dokumentasi lengkap untuk file konfigurasi ada di: http://docs.mongodb.org/v3.0/reference/configuration-options/

  6. Secara opsional buat cadangan log:

    sudo mv /var/log/mongodb/mongod.log /var/log/mongodb/mongod_26.log
    
  7. Mulai ulang mongodb

    sudo service mongod start
    
  8. Muat cadangan untuk mengonversi data ke mesin penyimpanan baru

    mongorestore /backup/location
    

Setelah memeriksa bahwa semua data Anda ok, Anda dapat menghapus direktori dengan format data lama

sudo rm -r /var/lib/mongodb_26/

Perhatikan bahwa untuk set replika dan cluster berjuntai ada beberapa langkah tambahan: http://docs.mongodb.org/v3.0/release-notes/3.0-upgrade/?_ga=1.86531032.1131483509.1428671022#change-replica-set-storage -engine-to-wiredtiger

Emanuel Ey
sumber
1
Catatan: untuk contoh lebih lengkap dari file konfigurasi YAML, lihat jawaban saya di DBA: dba.stackexchange.com/a/82592/6441
Adam C
1

Menggunakan format file konfigurasi lama , saya berhasil dengan:

storageEngine = wiredTiger
unkx80
sumber
Itu cukup menarik karena pada saat saya menulis posting saya, saya mencoba persis itu dan mendapat kesalahan (yang saya tidak ingat).
Emanuel Ey