Как перенести MongoDB 2.6 на 3.0 с помощью WiredTiger

Как перенести MongoDB 2.6 на 3.0 с помощью WiredTiger

MongoDB 3.0 представляет новый механизм хранения данных, wiredTigerкоторый позволяет значительно сократить использование памяти и дискового пространства.

Поскольку в моей базе данных в настоящее время содержится около 20 миллионов объектов и используется около 70 ГБ оперативной памяти, это обновление появилось как раз вовремя, чтобы отложить обновление оборудования.

Как перенести существующую установку MongoDB 2.6 на версию 3.0 и при этом воспользоваться преимуществами wiredTiger?

Документация ссылается на параметры, которые приводят к ошибкам запуска, которые не позволяют MongoDB запуститься. Кроме того, расположения файлов не соответствуют тем, что в Ubuntu (Server 14.04 LTS).

решение1

В установках по умолчанию файл конфигурации находится в /etc/mongod.conf. В документации MongoDB не упоминается, что при переходе на WiredTiger нам также необходимо обновить файл конфигурации до нового формата YAML, представленного в версии 2.6.
Насколько я могу судить, эта engineопция доступна только в новом формате конфигурации.
Миграция со старого движка хранения заключается в создании дампа базы данных, выключении mongodb, изменении настроек и последующем импорте дампа в новый движок хранения.

  1. Создайте резервную копию. Серьезно. Нам нужен дамп базы данных, который мы затем импортируем в новый движок базы данных:

    mongodump -d db_name /backup/path/  
    
  2. Остановить службу mongodb

    sudo service mongod stop  
    
  3. Переместите данные из текущего местоположения в другое место (MongoDB не запустится, если каталог данных содержит файлы, созданные старым механизмом хранения).

    sudo mv /var/lib/mongodb /var/lib/mongodb_26/
    
  4. Обновите MongoDB до версии 3.0 (с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. Конвертировать файл конфигурации из старого (до 2.6) в текущий формат YAML. Минимальный минимум:

    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  
    

    Убедитесь, что не осталось строк в старом формате, иначе MongoDB не запустится.

    Полная документация по файлу конфигурации находится по адресу:http://docs.mongodb.org/v3.0/reference/configuration-options/

  6. При желании сделайте резервную копию журнала:

    sudo mv /var/log/mongodb/mongod.log /var/log/mongodb/mongod_26.log
    
  7. Перезапустить mongodb

    sudo service mongod start
    
  8. Загрузите резервную копию, чтобы преобразовать данные в новый механизм хранения

    mongorestore /backup/location
    

Убедившись, что все ваши данные в порядке, вы можете удалить каталог со старым форматом данных.

sudo rm -r /var/lib/mongodb_26/

Обратите внимание, что для наборов реплик и сегментированных кластеров необходимы некоторые дополнительные шаги:http://docs.mongodb.org/v3.0/release-notes/3.0-upgrade/?_ga=1.86531032.1131483509.1428671022#change-replica-set-storage-engine-to-wiredtiger

решение2

Используястарый формат файла конфигурации, у меня был успех с:

storageEngine=проводнойТигр

Связанный контент